Linux rsync 命令:高效文件同步与远程备份大师

举报
yd_232564628 发表于 2026/10/04 09:48:37 2026/10/04
【摘要】 rsync (Remote Sync) 是 Linux 系统中最可靠的文件传输工具之一。它的核心优势在于增量算法——第一次全量复制后,后续同步只传输有变化的数据块,即使是大文件只改了几行,也只需传输差异部分。这使得 rsync 成为跨服务器备份、代码部署、数据迁移场景下的首选工具。 最基础的用法rsync -av source/ destination/-a (archive):归档模式,保...

rsync (Remote Sync) 是 Linux 系统中最可靠的文件传输工具之一。它的核心优势在于增量算法——第一次全量复制后,后续同步只传输有变化的数据块,即使是大文件只改了几行,也只需传输差异部分。这使得 rsync 成为跨服务器备份、代码部署、数据迁移场景下的首选工具。

最基础的用法

rsync -av source/ destination/
  • -a (archive):归档模式,保留权限、属主、时间戳、软链接等所有属性,等价于 -rlptgoD 的组合。
  • -v (verbose):显示详细过程。
  • 注意:源路径末尾带 / 表示同步"目录内的内容",不带 / 表示同步"目录本身"。

实际使用中,高频场景与命令组合

1. 本地目录同步

rsync -av /home/user/documents/ /backup/documents/

将 /home/user/documents/ 下的所有内容同步到 /backup/documents/。如果目标目录不存在,rsync 会自动创建。

2. 远程同步(SSH 通道)

rsync 默认通过 SSH 传输,安全且无需额外配置。

  • 推送到远程:
    rsync -avz /var/www/html/ user@192.168.1.100:/var/www/html/
    
  • 从远程拉取:
    rsync -avz user@192.168.1.100:/var/log/nginx/ /local/logs/
    
  • 指定 SSH 端口:
    rsync -avz -e "ssh -p 2222" user@remote:/data/ /local/
    

-z 参数启用压缩,在网络带宽有限时非常有用。

3. 显示进度与大文件优化

rsync -avh --progress /large/file.iso /backup/
  • -h (human-readable):以 KB/MB/GB 显示文件大小。
  • --progress:实时显示每个文件的传输进度和速度。

4. 排除特定文件或目录

rsync -av --exclude="*.tmp" --exclude=".git" --exclude="node_modules/" source/ destination/

也可以用 --exclude-from 从文件中读取排除规则:

rsync -av --exclude-from=exclude.txt source/ destination/

exclude.txt 每行写一个模式,如 *.log、.cache/。

5. 删除式同步(镜像模式)

rsync -av --delete source/ destination/

--delete 会让目标目录中与源目录不一致的文件被删除,使目标成为源的精确镜像。常用于网站部署或备份镜像,使用前务必确认方向正确,避免误删。

6. 限速与带宽控制

rsync -avz --bwlimit=5000 source/ user@remote:/backup/

--bwlimit 限制传输速率为 5000 KB/s(约 5MB/s),避免 rsync 占满带宽影响线上服务。

7. 干跑测试(dry-run)

在执行删除式同步或大规模传输前,先用干跑模式预览会发生什么:

rsync -av --delete --dry-run source/ destination/

--dry-run(或 -n)不会真正传输或删除任何文件,只输出将会执行的操作列表,是防止误操作的保险措施。

8. 断点续传

rsync -avz --partial --progress largefile.tar.gz user@remote:/backup/

--partial 保留传输中断的部分文件,下次运行时从中断处继续,而不是重新传输。对于大文件传输非常实用。

如果不知道如何下手,可以先尝试

rsync -av --dry-run --stats source/ destination/

--stats 会在结束时输出统计信息:传输了多少文件、总大小、节省了多少带宽(增量部分)、平均速度等。配合 --dry-run 可以安全地评估一次同步的规模。

或者,如果你想做一个简单的定时备份脚本:

#!/bin/bash
# backup.sh
SOURCE="/home/user/important/"
DEST="/backup/$(date +%Y%m%d)/"
rsync -avz --delete --exclude=".cache" "$SOURCE" "$DEST"

然后加入 crontab 每天凌晨执行,即可实现自动化增量备份。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。