《每日一命令22:rsync——增量同步效率之王》
2026/5/14 23:13:45 网站建设 项目流程

本期摘要

scp每次复制都传整个文件,文件大了就慢。rsync只传文件的变化部分,而且支持断点续传、压缩传输、排除指定目录。本文从零开始,教你rsync的常用场景:本地同步、远程同步、只同步新增文件、排除特定目录、限速传输、删除源端不存在的文件。以及ssh端口非22时的配置方法。读完你就能用rsync替代scp,在备份和分发文件时省下大量时间。

rsync是什么?

rsync = remote sync,远程同步工具。核心特性是:增量传输——只传输文件变化的部分,不是整个文件。

使用场景:

  • 本地目录备份

  • 远程文件同步

  • 增量备份

  • 文件分发

最常用的5种姿势

1. 本地同步

bash

# 同步目录(复制目录内所有文件) rsync -av /source/ /dest/ # 同步目录本身(连同目录一起复制) rsync -av /source /dest/

注意/的区别:

  • /source/表示复制目录内的内容

  • /source表示复制目录本身

2. 远程同步(推送)

bash

# 将本地文件推送到远程 rsync -av /local/dir/ user@remote:/remote/dir/ # 指定SSH端口 rsync -av -e "ssh -p 2222" /local/dir/ user@remote:/remote/dir/

3. 远程同步(拉取)

bash

# 从远程拉取到本地 rsync -av user@remote:/remote/dir/ /local/dir/

4. 显示进度

bash

rsync -av --progress largefile.zip user@remote:/backup/

--progress显示传输进度条。

5. 删除目标端多余文件

bash

rsync -av --delete /source/ /dest/

确保目标目录和源目录完全一致,删除目标端有但源端没有的文件。

进阶技巧

排除指定目录/文件

bash

# 排除单个目录 rsync -av --exclude="cache" /source/ /dest/ # 排除多个目录 rsync -av --exclude="cache" --exclude="logs" /source/ /dest/ # 使用排除文件列表 rsync -av --exclude-from="exclude.txt" /source/ /dest/

exclude.txt内容示例:

text

.git/ node_modules/ *.log tmp/

限制传输带宽

bash

rsync -av --bwlimit=1000 /source/ user@remote:/dest/

--bwlimit单位KB/s,上例限制为1MB/s,避免占满带宽影响业务。

压缩传输

bash

rsync -avz /source/ user@remote:/dest/

-z在传输时压缩,适合文本文件(日志、配置)。

断点续传(适合大文件)

bash

rsync -avP --append-verify largefile.zip user@remote:/dest/

-P等于--partial --progress,支持断点续传。

只同步新增文件(不删除目标端)

bash

rsync -avu /source/ /dest/

-u表示只更新目标端比源端旧的文件。

模拟运行(不实际执行)

bash

rsync -av --dry-run /source/ /dest/

先看看会传输哪些文件,确认无误再去掉--dry-run

真实场景

场景1:把代码部署到生产服务器

bash

rsync -avz --exclude=".git" --exclude="node_modules" ./ user@prod:/app/

场景2:每天增量备份数据库导出目录

bash

rsync -av --delete /data/backup/ /backup/remote/

--delete保证远程备份和本地完全一致,删掉本地已不存在的旧备份。

场景3:从一台服务器同步日志到日志中心

bash

rsync -avz --bwlimit=5000 /var/log/ logserver:/log/$(hostname)/

限速5MB/s,避免影响业务。

场景4:恢复上一次的完整备份

bash

rsync -av /backup/2026-05-12/ /data/恢复目录/

rsync vs scp 对比

特性rsyncscp
增量传输✅ 只传变化部分❌ 每次传整个文件
断点续传
排除目录
压缩传输
保留属性
速度(大文件首次)略慢
速度(增量)极快重新传一遍

结论

  • 首次传输或小文件:两者差别不大

  • 增量同步或大文件:rsync完胜

常用参数速查

参数含义
-a归档模式(保留权限、时间戳),等同于-rlptgoD
-v显示详细信息
-z压缩传输
-P显示进度+支持断点续传
--delete删除目标端多余文件
--exclude排除指定模式
--bwlimit限制带宽(KB/s)
--dry-run模拟运行,不实际传输
-u只更新目标端较旧的文件
-e指定远程shell(如ssh -p端口)

下期预告

《每日一命令23:ansible——批量执行命令神器》

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询