Linux 服务器之间安全高效传输文件的几种方法 (SCP/Rsync/SFTP 实战)

Linux 服务器之间安全高效传输文件的几种主流方法(2025-2026 实战指南)

以下是目前生产环境中最常用的几种方式,按安全性速度易用性增量传输能力排序对比:

方法安全性速度增量/断点续传易用性典型场景推荐指数
scp中等★★★★☆临时传单个/少量文件★★★☆☆
rsync + ssh极快(增量)优秀★★★★☆定期同步目录、备份、大文件迁移★★★★★
sftp中等部分支持★★★☆☆需要交互式操作、目录浏览★★★☆☆
rsync + daemon中等最快优秀★★☆☆☆内网大批量、高频同步(不推荐公网)★★☆☆☆
lsyncd近实时优秀★★★★实时镜像目录(基于 rsync + inotify)★★★★☆
rclone优秀★★★★跨云、跨协议、加密传输★★★★☆

1. scp(最简单,但不适合大批量或重复传输)

# 从本地 → 远程
scp file.txt user@192.168.1.88:/data/backup/

# 远程 → 本地
scp user@192.168.1.88:/var/log/nginx/access.log.gz ./

# 目录(必须加 -r)
scp -r ./project/ user@192.168.1.88:/home/www/

# 常用加速参数组合(2025年仍然有效)
scp -C -P 2222 -i ~/.ssh/id_ed25519 -r src/ dest:
# -C       压缩传输(对文本类文件有效)
# -P       指定端口
# -i       指定私钥
# -p       保留权限/时间戳

缺点:每次都完整传输,无法增量,断网就重来。

2. rsync over ssh(目前性价比最高的方案)

几乎是生产环境默认选择。

最常用写法(强烈建议背下来):

# 基本用法(最常用)
rsync -avz --progress source/ user@remote:/dest/

# 常用参数组合(生产必备)
rsync -avz --delete \
      --exclude-from=exclude.txt \
      --progress \
      -e "ssh -p 2222 -i ~/.ssh/key_ed25519" \
      /data/www/ root@192.168.1.201:/backup/www/

# 只同步部分文件(通配符)
rsync -avz --include='*.sql' --include='*.log' --exclude='*'  src/ dest/

# 干跑(预览要做什么,非常重要!)
rsync -avz --dry-run --itemize-changes src/ dest/

# 删除目标端多余文件(镜像同步)
rsync -avz --delete src/ dest/

# 只更新比源新的文件(小心使用)
rsync -avzu --ignore-existing src/ dest/

推荐的 exclude.txt 示例

.git
node_modules
*.bak
*.tmp
logs/*.gz

速度优化小技巧

# 使用更快的压缩算法(zstd)
rsync ... --rsync-path="rsync --zstd-level=3"

# 多线程传输(需要 rsync 3.2.7+)
rsync ... --whole-file --inplace -zz

# 使用更快的加密算法(推荐 ed25519 或 chacha20-poly1305)
# 在 ssh_config 中配置:
Host 192.168.*
    Ciphers chacha20-poly1305@openssh.com,aes128-gcm@openssh.com
    MACs hmac-sha2-512-etm@openssh.com

3. sftp(交互式 / 脚本化传输)

# 交互式
sftp -P 2222 user@192.168.1.88
> cd /data/backup
> lcd /local/folder
> put -r ./dist/
> get access.log.*
> exit

# 批量脚本方式(最常用)
sftp -o StrictHostKeyChecking=no -b - user@remote << EOF
cd /backup
lcd /data
put -r project/
get *.sql
exit
EOF

4. 速度对比参考(同一台千兆内网,传 10GB 混合文件)

方法耗时说明
scp~180s完整传输
rsync -avz~45–60s第一次
rsync -avz(第二次)~3–8s几乎只传变化部分
rsync -avz –inplace~40s大文件修改后最快
rsync daemon~35–45s无 ssh 加密开销

5. 2025–2026 生产环境最推荐组合(口诀)

日常小文件 / 临时传输      → scp -P -i
大目录 / 定期备份 / 代码发布  → rsync -avz --delete --exclude
需要实时同步               → lsyncd 或 rsync + inotify-tools
跨云 / 对象存储            → rclone sync
需要加密 + 压缩 + 去重     → rclone crypt + zstd

一句话总结口诀(背下来很有用)

“小传 scp,大传 rsync,实时 lsyncd,跨云 rclone; -avz –delete –dry-run 先预演,生产再执行。”

你目前最常遇到的场景是哪一种?

  • 代码/前端构建产物发布
  • 数据库全量备份或 binlog 同步
  • 日志文件收集
  • 大模型权重/数据集迁移
  • 异地容灾同步

告诉我具体场景和文件大小/频率,我可以给你最优的命令组合和注意事项。

文章已创建 4050

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部