Linux rsync 命令:高效文件同步与远程备份大师
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 每天凌晨执行,即可实现自动化增量备份。
- 点赞
- 收藏
- 关注作者
评论(0)