树莓派和电脑之间传文件,有五条路,按推荐程度排:SFTP(走 SSH,零额外安装,首选)→ scp(命令行,Win10/11 自带)→ Samba 共享(像本地文件夹一样,适合长期互访)→ U 盘(大文件、离线)→ VNC 自带传输(只适合小文件);而所有网络路子的共同前提是同一件事:知道它的 IP 或主机名,加上 SSH 的用户名密码——注意,新版系统没有默认的 pi 账号了,别照老教程抄。
本节是第三章的收尾,把前面的三样东西合起来用:
3-5 的命令(scp 就是一条命令)、2-5 的网络知识(IP、主机名、端口 22)、2-4 的 SSH 开关(没有 SSH 就没有 SFTP 和 scp)。
从下一章起你会开始写 Python、接硬件——代码要传上板子、日志要传回来,本节就是那条通道。
一、五条路先对比:选对路,省一半力气
| 方案 | 用什么 | 适不适合新手 | 适合什么场景 | 要额外装东西吗 |
|---|---|---|---|---|
| SFTP ⭐ | FileZilla / WinSCP | 最适合 | 日常传文件、整个文件夹、图形拖拽 | 不用装服务端——复用 SSH |
scp |
Windows 自带命令行 | 适合 | 快传单个文件、写脚本、远程操作时顺手 | 不用 |
| Samba 共享 | 装 samba 服务 | 中等 | 把树莓派文件夹当本地盘用,长期频繁互访 | 要在树莓派上装 |
| U 盘 / 移动硬盘 | 物理插拔 | 最简单 | 大文件(几 GB 以上)、没网、离机拷贝 | 不用 |
| VNC 自带传输 | VNC 客户端 | 将就 | 远程桌面时顺手传个小配置文件 | 不用(但不支持整个文件夹) |
一句话结论:先学 SFTP,会用
scp打底,需要「像本地盘」再上 Samba。
二、所有网络方案的两个共同前提
在这台电脑上(Windows)要先准备两样:
前提一:知道树莓派的地址——IP 或主机名二选一:
192.168.1.42 ← IP(2-5 讲过的查法)
pi-lab.local ← 主机名(2-4 设的,更推荐,换网络也不用改)
前提二:SSH 凭据(用户名 + 密码)——也就是你 2-2 烧卡时自己设的那一套。
当前系统没有默认账号了。 老教程里满屏的 ssh [email protected]、密码 raspberry——照抄会一直登录失败。
正确做法:用户名和密码,就是你烧卡时在 Imager 里填的那个(2-2 讲过)。忘了就去 raspi-config 里重设密码(2-4)。
三、方案一:SFTP(最推荐,图形拖拽)
原理一句话:SFTP = 在 SSH 的加密通道里传文件。所以树莓派这边不用装任何服务端——只要 SSH 开着(2-4 的接口开关),它就能用。
Windows 这边装一个客户端,两个主流选择:
| 客户端 | 特点 |
|---|---|
| FileZilla | 跨平台、免费、左右两栏对拖,经典之选 |
| WinSCP | 更像 Windows 资源管理器,习惯 Windows 的人更顺 |
连接参数(两个客户端都一样):
| 字段 | 填什么 |
|---|---|
| 协议 | SFTP(不是 FTP!) |
| 主机 | pi-lab.local 或树莓派的 IP |
| 端口 | 22 |
| 用户名/密码 | 你烧卡时设的那套 |
连上以后怎么用:左边是你电脑、右边是树莓派——从一边拖到另一边就传完了。支持整个文件夹和断点续传,这是它比 VNC 强的地方。
为什么不推荐普通 FTP? 它明文传输(用户名密码和文件内容都在网上裸奔)——服务器课 5.7-5.9 讲过它的原理与短板。SFTP 是同一条路加了加密,能用加密就别用明文。
四、方案二:scp(命令行,Windows 自带)
好消息:Windows 10/11 自带 OpenSSH,所以 scp 命令在 PowerShell 或 Windows 终端里直接能用,不用装任何东西。
语法就一句话:scp 源 目标——左边是源、右边是目标;远程的那一端写成 用户名@主机:路径。
方向一:从 Windows 传到树莓派
scp C:\Users\你的用户名\Downloads\test.txt [email protected]:/home/pi/
方向二:从树莓派拉回 Windows
scp [email protected]:/home/pi/hello.txt ./
方向三:整个文件夹(加 -r)
scp -r C:\Users\你的用户名\project [email protected]:/home/pi/
① 路径带空格要加引号:scp "C:\我的 文件\a.txt" pi@…:/home/pi/;
② 如果你用的是 Git Bash 之类的类 Unix 终端,Windows 路径要写成 /c/Users/... 的形式(Linux 用正斜杠,见 3-1)。在 PowerShell 里就按 Windows 写法来,不用转。
首次连接会问一句「是否信任这台主机(指纹)」——输入 yes(2-3 讲过这一步)。
几个常用选项:-C 压缩(传文本有用)、-P 端口(改了默认端口时用,注意是大写 P)、-v 详细输出(排障用)。
五、方案三:Samba 共享(像本地文件夹一样)
什么时候值得折腾:你天天要在两边来回看文件,希望树莓派的文件夹直接出现在 Windows 的「网络」里,双击就进、跟访问本地盘一样。
原理:Samba 实现了 SMB/CIFS 协议——也就是 Windows 自己的文件共享协议(服务器课 4.1-4.3 讲的「文件服务器」民用版)。
三步装好:
sudo apt update
sudo apt install samba # ① 装
mkdir -p ~/share # ② 建一个要共享的目录
sudo smbpasswd -a pi # ③ 给 Samba 设一个专用密码
# (用户名写你自己的,不是默认 pi)
第四步:告诉 Samba 要共享哪个目录
sudo nano /etc/samba/smb.conf
在文件最后加上一段:
[share]
path = /home/pi/share
browseable = yes
read only = no
第五步:重启服务并取地址
sudo systemctl restart smbd
hostname -I
第六步:在 Windows 上打开它
在资源管理器地址栏输入(两个反斜杠开头):
\\pi-lab.local\share
输用户名密码,进去之后就可以像本地文件夹一样拖文件了。想更方便,可以右键「映射网络驱动器」。
① SMB 绝对不要暴露到公网(同 2-5 那条红线)——共享只在家里/办公局域网里用; ② 老旧协议(SMBv1)早已被淘汰且有严重漏洞,别为了迁就老设备去开启它。当前系统默认就是更安全的版本,别动。
六、方案四:U 盘 / 移动硬盘(大文件、离线)
最简单的路,但有两条纪律:
- 不要在树莓派运行时拔 SD 卡去电脑上拷——那张卡是它的系统盘,拔下来拷东西容易出事,而且麻烦;
- 正确做法是插 U 盘:插上后桌面会自动出现图标(3-2 讲过),双击挂载,拖完文件先在文件管理器里点「弹出」,再拔。
什么时候用这条:几 GB 的大文件、没有网络、或者要把系统整个备份出来——网络传慢的时候,物理搬运反而最快(这叫「用脚带宽」,不丢人)。
七、方案五:VNC 自带传输 与 Raspberry Pi Connect
VNC 客户端(如 RealVNC Viewer)自带文件传输:连上远程桌面后,菜单里有「传输文件」。限制:速度一般、不支持整个文件夹、一次一个。
Raspberry Pi Connect(官方服务):在浏览器里就能访问树莓派的桌面和终端,不用配网络、不用记 IP,适合在外面连回家。注意:它走官方中继,账号安全和隐私边界要自己心里有数——真要在外网访问,2-5 提过的 VPN/SSH 隧道同样是更稳的思路。
八、动手 Demo:三种方式各来一遍
前提:树莓派开着、SSH 已开、Windows 与树莓派在同一局域网。
第一遍:用 scp 送一个文件过去(命令行,最基础)
- 在 Windows 上打开 PowerShell,随便造一个文件:
"hello from windows" | Out-File -Encoding utf8 C:\Users\你的用户名\Downloads\from-win.txt
- 传过去:
scp C:\Users\你的用户名\Downloads\from-win.txt [email protected]:/home/pi/
看到什么算成功:出现一行 from-win.txt 100% 19 ... 之类的进度。
- 去树莓派上验收(SSH 或桌面终端):
ls -l ~/from-win.txt
cat ~/from-win.txt
看到什么算成功:cat 打印出 hello from windows。
第二遍:用 scp 把它拉回来(反过来走一遍)
在 Windows 上:
scp [email protected]:/home/pi/from-win.txt C:\Users\你的用户名\Downloads\back.txt
看到什么算成功:Downloads 里出现 back.txt,打开内容一致。
第三遍:装图形客户端试一次 SFTP
用 FileZilla(或 WinSCP)按第三节的参数连接,把整个 ~/lab 文件夹拖到 Windows 桌面上。
看到什么算成功:右侧(树莓派)能看到 lab,拖拽后左侧(本地)出现同名文件夹,里面的文件都在。
失败时对照表:
| 现象 | 原因 |
|---|---|
Permission denied |
用户名/密码不对(别用老教程的 pi/raspberry) |
Connection refused |
树莓派上 SSH 没开(raspi-config → Interface → SSH) |
No route to host / 一直卡住 |
不在同一局域网,或主机名解析不了(改用 IP 试) |
Host key verification failed |
换过系统/换过卡,旧指纹还在缓存里——清掉重连即可 |
九、30 秒实验
亲眼看到「文件在两个系统之间走了一趟」。
在树莓派上生成一个带时间的文件:
date > ~/stamp.txt
cat ~/stamp.txt
在 Windows 上把它拉过来:
scp [email protected]:/home/pi/stamp.txt ./
打开它,再和树莓派上 date 的输出对一眼——时间一模一样,说明文件确实是从那台机器上取回来的。
这 30 秒你收获的是:「两台电脑之间传文件」不需要 U 盘、不需要云盘、也不需要一个网站——只要一条命令,走的是你和它之间那条已经加密的通道。
十、常见误区
- 「传文件得把 SD 卡拔下来插电脑」:最不该做的做法。那张卡是系统盘(2-2 讲过),而且反复插拔容易损坏。用 SFTP/
scp,或者插 U 盘。 - 「照教程用
pi账号 + 密码raspberry」:当前系统没有默认账号。必须用你烧卡时设的那套,否则一直登录失败。 - 「FTP 和 SFTP 差不多」:差别是明文与加密。FTP 明文传密码和内容(服务器课 5.7-5.9),能用 SFTP 就用 SFTP。
- 「
scp是 Linux 的东西,Windows 用不了」:Win10/11 自带 OpenSSH,PowerShell 里直接能敲。 - 「想在外面也能连,把 22 或 445 端口转发出去」:危险(2-5 的红线)。用 VPN/SSH 隧道/Raspberry Pi Connect 代替。
- 「传大文件还是网络方便」:看大小。几 GB 以上,U 盘往往更快;网络传输的瓶颈通常在 Wi-Fi 和加密开销上。
- 「VNC 能传文件,那就够了」:只适合小文件。整目录、断点续传、批量管理,还是 SFTP 客户端。
自测三问
1. 五条传文件的路里,哪条最推荐?为什么它不用在树莓派上装东西?(**SFTP**;因为它**复用 SSH 的加密通道**,SSH 开着就能用) 2. `scp` 的语法里,哪边是源、哪边是目标?远程那一端怎么写?(**左边源、右边目标**;远程写成 `用户名@主机:路径`;传目录加 `-r`) 3. 哪些做法属于踩红线?(**把 22/445 端口转发到公网**;**照老教程用默认 `pi` 账号**;**运行中拔 SD 卡**;**开启过时的 SMBv1**)- ☑ 第三章 完结 —— 教材这一章已读完全部六节:认清系统由什么组成、把桌面点熟、认识程序与装软件、调好各项设置、学会敲命令、能在 Windows 与树莓派之间来回传文件
- ☑ 第四章 Linux 系统管理 —— 已完结:安装中文输入法(从「会用」到「管得动」:命令行机制、九组常用指令、用户与文件权限、整棵目录树、
apt装卸载、装上中文输入法)
相关笔记
- 启动终端机使用命令行的 Linux 指令 —— 下一章起点:命令行背后的机制(
PATH、三条流、作业控制) - 安装中文输入法 —— 下一章小结:把中文输入装上去
- 在 Raspberry Pi OS 执行命令 —— 上一节:
scp就是这里学的命令 - 网络连接与蓝牙装置 —— IP、主机名、端口与那条安全红线
- 设置 Raspberry Pi OS —— SSH 开关与密码重设
- 延伸三岗位(FTP、IMAP、Proxy) —— FTP 明文的问题出处
- 共享三件套 —— Samba 背后的「文件服务器」原理
- 🍓 树莓派 · 索引 —— 全课路线图