在宿主机与单板之间传输文件
文档介绍宿主机与单板之间的文件传输,提供 SCP、SSH 管道与 TFTP 三种方式。
适用场景
适用于开发调试阶段在宿主机与单板之间传递文件或目录的场景。
所需条件:
- 宿主机与单板网络互通,可通过
ping验证 - SSH 相关方式需单板已部署并运行 SSH 服务端(如 Dropbear),宿主机已安装 SSH 客户端
- TFTP 方式需宿主机运行 TFTP 服务端,单板 busybox 内置 TFTP 客户端
步骤
通过 SCP 传输
SCP 基于 SSH 协议传输文件或目录,适合单文件或少量文件的日常传输。
从宿主机发送文件到单板:
发送目录时加 -r。从单板拉取文件到宿主机:
通过 SSH 管道传输
利用 SSH 将文件内容通过管道注入远程端或从远程端拉取,不产生中间压缩包。
实际场景中容易因屏幕定期打印字符导致传输错误,不推荐用此方式传输大文件。
从宿主机发送文件到单板:
从单板拉取文件到宿主机:
传输目录时在宿主机端打包、通过管道在远程端解包:
从单板拉取目录到宿主机时交换两端角色:单板端打包,宿主机端解包。
通过 TFTP 传输
当单板 SSH 服务不可用或需要传输大文件时使用 TFTP。宿主机运行 TFTP 服务端,单板作为客户端发起传输,下面以 /srv/tftp 为宿主机 TFTP 传输目录举例。
本项目 TFTP 默认目录关系:
D:\tftp(Windows)→/srv/tftp(Linux/WSL)→/srv/tftp(Docker)。
配置宿主机 TFTP 服务端:
sudo apt-get install tftpd-hpa
sudo mkdir -p /srv/tftp
sudo chmod 777 /srv/tftp
sudo sed -i 's|TFTP_DIRECTORY=.*|TFTP_DIRECTORY="/srv/tftp"|' /etc/default/tftpd-hpa
sudo sed -i 's|TFTP_OPTIONS=.*|TFTP_OPTIONS="-c -s"|' /etc/default/tftpd-hpa
sudo systemctl restart tftpd-hpa
本项目环境安装已配置 TFTP,可跳过此步。
从宿主机发送文件到单板:
-
宿主机将文件放入 TFTP 传输目录:
-
单板端拉取文件:
从单板发送文件到宿主机:
传输完成后文件出现在宿主机 /srv/tftp/ 目录下。
验证
传输后比对两端文件长度,确认无截断或损坏:
两端输出的字节数一致即传输完整。目录传输可汇总比对:
# 单板端
find /root/目标目录 -type f -exec wc -c {} + | tail -1
# 宿主机端
find /本地目录 -type f -exec wc -c {} + | tail -1
附录
相关文档
- 在板端部署 Dropbear SSH 服务:板端 SSH 服务端部署与免密登录
- 增量编译文件系统:增量编译进镜像,替代运行时传输
- 配置应用开机自启:传输到板端的可执行文件开机自动运行