rsync 文件同步工具详解
1. 什么是 rsync ?
rsync (Remote Sync) 是 Linux 系统中一个功能强大的文件同步工具,它能够高效地在本地或远程系统之间同步文件和目录。rsync 以其"增量传输"算法著称,只传输源文件和目标文件之间的差异部分,大大提高了文件传输效率。
1.1 rsync 的核心特点
增量同步:仅传输变化的文件部分,节省带宽和时间
保留属性:可以保持文件权限、时间戳等元数据
压缩传输:支持数据传输时压缩,减少网络负载
灵活排除:可以排除特定文件或目录
远程支持:通过 SSH 安全地同步远程服务器文件
1.2 rsync 的基本语法
rsync [选项] 源文件 目标文件
1.3 rsync 常用选项
2. rsync 应用实例
2.1 本地目录同步
# 将 /home/user/docs 同步到 /backup/docs,保留所有属性
rsync -av /home/user/docs/ /backup/docs/
注意:源目录后的斜杠 / 很重要:
有斜杠:同步目录内容
无斜杠:同步目录本身
2.2 远程服务器同步
# 将本地目录同步到远程服务器,使用压缩
rsync -avz /data/backups/ user@example.com:/remote/backups/
2.3 使用排除选项同步
# 同步但排除 .tmp 文件和 log 目录
rsync -av --exclude='*.tmp' --exclude='log/' /source/ /destination/
24 保持双端一致(会删除目标端多余文件)
rsync -av --delete /source/ /destination/
3. rsync 高级用法
3.1 指定 ssh 端口
rsync -avz -e 'ssh -p 2222' /local/path/ user@host:/remote/path/
3.2 带宽限制(小于500k/s)
rsync -avz --bwlimit=500 /source/ /destination/
3.3 文件大小限制(只传输100k以上文件)
rsync -av --min-size=100K /source/ /destination/
3.4 定时备份
#!/bin/bash
rsync -avz --delete /important/data/ backup@server:/backups/data/
echo "Backup completed at $(date)" >> /var/log/backup.log
3.5 恢复中断的 rsync 传输
# 使用 --partial 选项保留部分传输的文件
rsync -av --partial /source/ /destination/
3.6 实际执行前预演
# 使用 -n (dry-run) 选项
rsync -avn /source/ /destination/
3.7 提升 rsync 传输速度
使用 -z 选项启用压缩
使用 --compress-level=N 调整压缩级别(1-9)
禁用校验和计算(仅限可信网络):--no-checksum
4. 最佳建议
测试先行:使用 -n 选项先进行模拟运行
日志记录:添加 --log-file=rsync.log 记录操作
权限管理:考虑使用 --chmod 统一文件权限
定时任务:结合 crontab 实现自动备份
安全传输:始终通过 SSH 进行远程传输
评论
其他文章