引言
在数据迁移、备份和日常文件同步任务中,rsync
是 Linux
系统管理员和开发者的瑞士军刀。它通过增量传输算法仅同步变化的文件部分,大幅提升效率;保留文件权限、时间戳等元数据,并支持压缩传输。无论是本地还是远程操作,rsync
都能以最小开销完成任务。本文将带你从安装到实战,全面掌握这一神器!
一、安装 rsync
rsync
通常预装在主流 Linux
发行版中。若未安装,可通过包管理器快速完成:
Ubuntu/Debian
sudo apt install rsync -y
CentOS/RHEL
sudo yum install rsync -y
验证安装
rsync --version
# 输出示例:rsync version 3.2.3 protocol version 31
二、核心使用场景与命令详解
1. 本地目录同步
将 ~/Documents/
同步到备份目录(保留所有属性):
rsync -av ~/Documents/ /backup/docs/
-a
:归档模式(保留权限、所有者、时间戳等)
-v
:显示详细过程
2. 远程同步(通过 SSH)
将本地目录推送到远程服务器:
rsync -avz -e "ssh -p 2222" ~/project/ user@remote-ip:/path/to/backup/
-z
:启用压缩传输
-e
:指定 SSH 端口(默认 22 可省略)
从远程拉取文件到本地:
rsync -avz user@remote-ip:/remote/path/ ~/local/
3. 增量备份与清理
同步时删除目标端多余文件(确保两端一致):
rsync -av --delete ~/source/ ~/destination/
4. 排除文件/目录
忽略 node_modules
和 .log
文件:
rsync -av --exclude='node_modules' --exclude='*.log' ~/app/ /backup/app/
使用 --exclude-from=file.list
可从文件读取排除规则。
5. 限速传输(避免带宽耗尽)
限制速度为 500 KB/s:
rsync -avz --bwlimit=500 ~/largefiles/ user@remote:/backup/
三、高级技巧
断点续传
添加--partial
选项保留部分传输的文件,下次自动续传。rsync -av --partial --progress largefile.iso user@remote:/backup/
实时同步(结合 inotify)
使用inotify-tools
监听文件变化并自动触发同步:while inotifywait -r -e modify,create,delete ~/data; do rsync -avz ~/data/ user@remote:/backup/data/ done
备份快照
按日期创建备份目录,保留历史版本:rsync -av ~/data/ /backup/data-$(date +%Y%m%d)/
四、常见问题排查
- 权限错误:添加
--rsync-path='sudo rsync'
或确保目标目录可写。
- 连接超时:检查防火墙及 SSH
配置(
-e "ssh -o ConnectTimeout=10"
)。
- 文件跳过:使用
--ignore-existing
或--update
控制覆盖逻辑。
五、总结
rsync
凭借其高效性、灵活性和可靠性成为数据同步的首选工具。关键优势总结:
- ✅ 增量同步:仅传输变化部分,节省时间和带宽。
- ✅
完整性保障:保留文件属性,支持校验(-c
选项)。
- ✅ 脚本友好:易于集成到自动化任务(如 Cron
定时备份)。
最佳实践建议:
> 生产环境使用前,先在测试目录验证命令效果;远程操作时建议配置 SSH
密钥免密登录;敏感数据通过 --password-file
或 SSH
隧道保护。
附录:官方文档参考
man rsync
或访问 rsync.samba.org
相关文章