Rsync 命令参数组合大全
一、基础参数组合
- 基础同步
rsync -av source/ destination/ # 归档同步(最常用)
rsync -avz source/ destination/ # 压缩传输
rsync -avh source/ destination/ # 人类可读格式
rsync -avP source/ destination/ # 显示进度和部分传输
- 网络传输
rsync -avz -e ssh user@host:/source/ /local/ # SSH加密传输
rsync -avz -e "ssh -p 2222" source/ user@host:/dest/ # 指定SSH端口
rsync -avz rsync://host/module/source/ /local/ # 使用rsync协议
二、文件过滤组合
- 包含/排除文件
rsync -av --include='*.txt' --exclude='*' source/ dest/ # 只同步txt文件
rsync -av --include='*/' --include='*.jpg' --exclude='*' source/ dest/ # 只同步jpg文件
rsync -av --exclude='*.tmp' source/ dest/ # 排除临时文件
rsync -av --exclude={'*.log','tmp/'} source/ dest/ # 排除多种类型
rsync -av --exclude-from='exclude-list.txt' source/ dest/ # 从文件读取排除列表
- 时间过滤
rsync -av --files-from='filelist.txt' source/ dest/ # 从列表文件同步
rsync -av --max-size='100M' source/ dest/ # 限制最大文件大小
rsync -av --min-size='1K' source/ dest/ # 限制最小文件大小
三、时间控制组合
- 基于时间同步
rsync -av --update source/ dest/ # 只更新较新的文件
rsync -av --ignore-existing source/ dest/ # 跳过已存在文件
rsync -av --size-only source/ dest/ # 仅按大小比较
rsync -av --checksum source/ dest/ # 使用校验和比较
# 时间范围同步
rsync -av --files-from=<(find source/ -mtime -7 -type f) source/ dest/ # 7天内修改的文件
rsync -av --files-from=<(find source/ -newer timestamp -type f) source/ dest/ # 比时间戳新的文件
- 增量备份
rsync -av --link-dest=/path/to/previous/backup source/ /backup/today/ # 硬链接备份
rsync -av --compare-dest=/old/backup/ source/ /new/backup/ # 比较备份
四、删除操作组合
- 删除策略
rsync -av --delete source/ dest/ # 删除目标多余文件
rsync -av --delete-before source/ dest/ # 传输前删除
rsync -av --delete-during source/ dest/ # 传输时删除
rsync -av --delete-after source/ dest/ # 传输后删除
rsync -av --delete-excluded source/ dest/ # 删除排除的文件
- 安全删除
rsync -avn --delete source/ dest/ # 试运行,不实际删除
rsync -av --delete --backup --backup-dir=/backup/deleted source/ dest/ # 备份被删除文件
五、高级功能组合
- 权限和属性
rsync -avA source/ dest/ # 保留ACL权限
rsync -avX source/ dest/ # 保留扩展属性
rsync -avH source/ dest/ # 保留硬链接
rsync -avS source/ dest/ # 高效处理稀疏文件
rsync -av --chmod=755 source/ dest/ # 设置权限
rsync -av --chown=user:group source/ dest/ # 设置所有者(需要root)
- 性能优化
rsync -avz --compress-level=9 source/ dest/ # 最高压缩级别
rsync -av --bwlimit=1000 source/ dest/ # 限制带宽1000KB/s
rsync -av --whole-file source/ dest/ # 传输整个文件(局域网)
rsync -av --no-whole-file source/ dest/ # 增量传输(广域网)
rsync -av --partial source/ dest/ # 保留部分传输的文件
rsync -av --partial-dir=.rsync-partial source/ dest/ # 指定部分文件目录
- 日志和监控
rsync -av --progress source/ dest/ # 显示进度
rsync -av --stats source/ dest/ # 显示统计信息
rsync -av --itemize-changes source/ dest/ # 详细显示变化
rsync -av --log-file=rsync.log source/ dest/ # 记录日志
rsync -av --log-file-format='%t %f %b' source/ dest/ # 自定义日志格式
六、实用场景组合
- 备份场景
# 完整备份(带删除)
rsync -av --delete --backup --backup-dir=../deleted/$(date +%Y%m%d) source/ backup/
# 时间戳备份
rsync -av --link-dest=../latest source/ backup/$(date +%Y%m%d_%H%M%S)
ln -snf $(date +%Y%m%d_%H%M%S) latest
# 每日增量备份
rsync -av --link-dest=../yesterday/ source/ today/
- 网站同步
# 同步网站文件,排除缓存
rsync -avz --exclude={'cache/','tmp/'} --delete /var/www/ user@server:/var/www/
# 镜像同步
rsync -avz --delete mirror.example.com::module/ /local/mirror/
- 数据库备份
# 同步MySQL数据目录
rsync -av --progress --delete /var/lib/mysql/ /backup/mysql/
# 配合mysqldump
mysqldump -A | gzip | rsync -avz --progress - user@host:/backup/db.sql.gz
七、安全相关组合
- 安全传输
# 使用SSH密钥
rsync -avz -e "ssh -i /path/to/key.pem" source/ user@host:/dest/
# 限制连接尝试
rsync -avz --timeout=30 source/ dest/
# 只传输安全文件
rsync -av --safe-links source/ dest/
- 验证和测试
# 干运行(测试)
rsync -avn source/ dest/ # 显示将执行的操作
rsync -av --dry-run --stats source/ dest/ # 带统计的测试
# 验证传输
rsync -avc source/ dest/ # 基于校验和验证
rsync -av --checksum source/ dest/ # 完整校验和验证
八、组合示例速查
场景 命令
快速复制 rsync -av source/ dest/
压缩传输 rsync -avz source/ dest/
远程备份 rsync -avz -e ssh source/ user@host:/backup/
镜像同步 rsync -av --delete source/ dest/
增量备份 rsync -av --link-dest=/yesterday/ source/ /today/
选择性同步 rsync -av --include='*.jpg' --exclude='*' source/ dest/
带宽限制 rsync -av --bwlimit=500 source/ dest/
试运行 rsync -avn --delete source/ dest/
九、常用别名设置
# 快速同步
alias rsync-copy="rsync -avz --progress"
alias rsync-move="rsync -avz --progress --remove-source-files"
alias rsync-update="rsync -avzu --progress"
alias rsync-sync="rsync -avzu --delete --progress"
# 备份专用
alias backup="rsync -av --delete --exclude={'*.tmp','cache/'}"
# 网络传输
alias rsync-remote="rsync -avzP -e ssh"
十、注意事项
斜杠重要性:
rsync -av source/ dest/ # 同步source目录的内容到dest
rsync -av source dest/ # 同步source目录本身到dest
权限问题:需要相应权限才能保留文件属性
符号链接:默认跟随符号链接,使用 -L 复制链接指向的文件
大型传输:使用 --partial 和 --append 支持断点续传
这些组合覆盖了 rsync 的绝大多数使用场景,可以根据实际需求进行选择和调整。