在 Linux 系统中,远程传输文件有多种成熟方案,下面按最常用 → 进阶 → 特殊场景来介绍,并给出示例,方便你直接选用。
scp(最简单)基于 SSH,适合小文件或一次性传输。
# 本地 → 远程
scp file.txt user@remote_ip:/remote/path/
# 远程 → 本地
scp user@remote_ip:/remote/path/file.txt /local/path/
# 传输目录(递归)
scp -r local_dir user@remote_ip:/remote/path/
✅ 优点:简单、安全
❌ 缺点:不支持断点续传
rsync(最推荐,生产环境常用)支持增量、断点续传、权限保留。
# 本地 → 远程
rsync -avz file.txt user@remote_ip:/remote/path/
# 远程 → 本地
rsync -avz user@remote_ip:/remote/path/ /local/path/
# 断点续传
rsync -avz --partial --progress user@remote_ip:/bigfile /local/
常用参数说明:
-a:归档模式(保留权限、时间等)-v:显示过程-z:压缩传输--partial:支持断点续传✅ 优点:快、稳、可恢复
✅ 适合大文件、频繁同步
sftp交互式文件传输(类似 FTP,但基于 SSH)。
sftp user@remote_ip
常用命令:
put file.txt
get file.txt
ls
cd
exit
rz / sz(终端工具)适合 本地 Windows + 远程 Linux 场景(如 Xshell、SecureCRT)。
# 上传
rz
# 下载
sz file.txt
⚠️ 需要终端支持,不推荐服务器间使用。
python 临时 HTTP 服务适合临时下载文件。
# 在远程机器
python3 -m http.server 8000
本地访问:
http://remote_ip:8000
tar + ssh(边打包边传输)适合大量小文件。
tar czf - dir/ | ssh user@remote_ip "tar xzf - -C /remote/path/"
scp 限速(避免占满带宽)scp -l 8192 file user@ip:/path/
# 单位:Kbit/s
git(代码场景)git clone user@ip:/repo.git
| 场景 | 推荐方案 |
|---|---|
| 临时传文件 | scp |
| 经常同步 / 大文件 | rsync ✅ |
| 交互式操作 | sftp |
| 本地 Windows → Linux | rz / sz |
| 高速 / 大量小文件 | tar + ssh |
| 临时下载 | python http.server |
ssh-keygen
ssh-copy-id user@remote_ip
如果你愿意,可以告诉我:
我可以给你最合适的一条命令或自动化脚本。