草稿待审:scp/sftp/rsync/wget 命令存在性及语法已在 WSL Ubuntu-24.04 验证;实际远程传输(scp 到本机、sftp 交互模式)未执行。
从 Linux 服务器下载文件到本地 Windows/WSL,最常用的是 scp、rsync、sftp、wget 四条路径。本文按操作场景排序,避免无脑试错。
TL;DR:单文件/scp 最省事;目录或大文件用 rsync 支持断点续传;需交互挑文件用 sftp;服务端有 HTTP 端口时直接 wget。
—
1. 单文件首选:scp
scp 基于 SSH 传输,语法与 cp 最接近,适合单文件快速拉取 [1]。
# Linux → 本机(WSL 中运行)
scp -P 22 user@192.168.1.100:/var/www/html/file.zip ~/Downloads/
# 用密钥认证(无需密码交互)
scp -i ~/.ssh/id_rsa user@192.168.1.100:/path/to/file.zip ./
-P 指定 SSH 端口,-i 指定私钥。本地路径写绝对路径可避免含冒号文件名被误判为远程主机 [1]。
—
2. 批量/断点续传:rsync
rsync 只传输差异部分,适合大文件或目录,支持断点续传 [3]。
# 下载远程目录
rsync -avz --progress user@192.168.1.100:/data/backups/ ~/backups/
# 删除源端已不存在的文件(镜像模式,慎用)
rsync -avz --delete user@192.168.1.100:/data/backups/ ~/backups/
-a 保留权限和时间戳,-v 显示进度,-z 传输时压缩。--delete 会双向删除,执行前务必确认两侧目录内容 [3]。
—
3. 交互挑文件:sftp
sftp 提供 FTP 式交互界面,适合不确定具体文件名、需浏览目录后手动选择的场景 [2]。
# 交互模式
sftp user@192.168.1.100
sftp> ls /var/www/html/
sftp> get file.zip
sftp> bye
# 批量模式(写 get 列表)
sftp -b batch.txt user@192.168.1.100
batch.txt 每行一个 get/put 命令。非交互认证失败时,sftp 会自动退出 [2]。
—
4. 服务端有 HTTP:wget
若 Linux 机器已运行 Web 服务或临时用 Python 起服务,wget 可直接下载,无需 SSH [4]。
# 直链下载
wget -O ~/Downloads/file.zip http://192.168.1.100:8080/file.zip
# 临时用 Python 起服务(仅限内网可信环境)
python3 -m http.server 8080
# 另一台机器:
wget http://linux-ip:8080/file.zip
-O 指定输出文件名;http.server 默认仅监听本机,Linux 上需用 0.0.0.0 绑定 [4]。
—
排错速查表
| 现象 | 最可能原因 | 处理 |
|---|---|---|
scp: connection refused |
SSH 服务未启动或端口错误 | 确认 sshd 运行中,检查 -P 端口 |
rsync: connection unexpectedly closed |
远程 rsync 未安装 | 先 SSH 登录确认 which rsync |
sftp: no hostkey match |
主机密钥变更 | 清 ~/.ssh/known_hosts 中对应行 |
wget: connection refused |
目标端口未监听或防火墙拦截 | 用 ss -tlnp 确认监听 |
scp 报 not a regular file |
源路径是目录 | 加 -r 或改用 rsync |
—
局限性
- scp 无法直接断点续传;大文件中断后需重新传输。
- rsync 需在两端都安装;部分最小化容器默认无 rsync。
- sftp 交互模式不适合自动化脚本。
- wget 依赖 HTTP 服务;若 Linux 无 Web 服务,需先启动服务或改用 SSH 路径。
- 本条目在 WSL2 Ubuntu-24.04 验证了命令语法与本地 rsync/wget 传输,未实际执行跨机器 scp/sftp/rsync 到本机的完整流程。
—
状态:草稿待审。
参考资料
- [1] scp(1) — openssh-client — Debian bookworm(scp(1))
- [2] sftp(1) — openssh-client — Debian bookworm(sftp(1))
- [3] rsync(1) — Ubuntu jammy(rsync(1))
- [4] wget(1) – Linux manual page (man7.org)(wget(1))
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。