rsync是一个功能强大的文件同步和传输工具,广泛用于Unix/Linux系统。它通过高效的差分算法仅传输变化部分,特别适合大文件和频繁更新的场景。下面我将从基本语法、常用选项、高级技巧到实际应用场景全面介绍rsync命令。

rsync命令的基本语法分为本地同步和远程同步两种格式:
本地同步:
rsync [选项] 源路径 目标路径远程同步(通过SSH协议):
rsync [选项] 源路径 [用户@]远程主机:目标路径
rsync [选项] [用户@]远程主机:源路径 目标路径远程同步(通过rsync守护进程协议):
rsync [选项] rsync://远程主机模块名/[目标路径]选项 | 功能描述 | 使用场景 |
|---|---|---|
-a | 归档模式(相当于-rlptgoD组合) | 保留文件所有属性,适合备份 |
-v | 显示详细同步过程 | 调试和查看传输详情 |
-z | 压缩传输文件 | 减少网络传输量 |
-r | 递归同步子目录 | 同步目录结构 |
-h | 人类可读格式显示 | 更直观查看文件大小 |
-P | 显示进度和续传功能 | 大文件传输时监控 |
--delete | 删除目标中源不存在的文件 | 保持完全同步(慎用) |
--exclude | 排除匹配模式的文件/目录 | 选择性同步 |
--dry-run | 模拟执行不实际同步 | 测试命令正确性 |
-a归档模式实际上是多个选项的组合:
-r:递归同步目录及其子目录-l:保留符号链接-p:保留文件权限-t:保留时间戳-g:保留属组信息-o:保留属主信息-D:保留设备文件和特殊文件基本目录同步:
rsync -av /data/source/ /data/backup//data/source),目标目录会创建以source为名的子目录rsync -avh --progress /source/dir/ /backup/dir/-h:人类可读格式--progress:显示传输进度将本地目录同步到远程服务器:
rsync -avz -e ssh /local/path/ user@remote:/remote/path/-z:压缩传输,减少网络流量rsync -avz user@remote:/remote/path/ /local/path/保持目标与源完全一致(删除多余文件):
rsync -av --delete /source/ /destination/--dry-run测试排除特定文件/目录:
rsync -av --exclude='*.log' --exclude='temp/' /source/ /destination/?--exclude-from=文件指定限制带宽使用(单位KB/s):
rsync -avz --bwlimit=1000 /source/ user@remote:/destination/rsync -avz -e 'ssh -p 2222' /source/ user@remote:/destination/部分传输与恢复:
rsync -avz --partial /source/ user@remote:/destination/批量同步大量小文件:
rsync -avW /source/ /destination/模拟执行(测试命令):
rsync -avn /source/ /destination/--dry-run:只显示将执行的操作而不实际执行同步后校验文件完整性:
rsync -avc /source/ /destination/每日增量备份脚本示例:
rsync -avz --delete --link-dest=/backup/previous/ /data/ /backup/current/同步网站目录到生产服务器:
rsync -avz --exclude='config.php' --exclude='tmp/' \
/var/www/dev/ user@production:/var/www/html/多服务器间保持配置一致:
rsync -avz --delete /etc/nginx/ server{1..5}:/etc/nginx/创建远程服务器镜像:
rsync -avz --delete -e ssh /local/mirror/ user@remote:/remote/mirror/rsync -av /source /dest:将创建/dest/source目录rsync -av /source/ /dest:将同步/source/*到/dest/下2、权限问题:
sudo或适当设置目录权限3、首次同步建议:
--dry-run测试4、性能优化:
-z压缩减少CPU开销