rsync同步大目录关键在于稳定高效:用-a保留元数据、-v显示过程、-P支持断点续传与进度、--inplace减少IO、--exclude过滤无关文件,并严格注意路径末尾斜杠含义,配合screen防中断、SSH免密及空间权限检查。

Linux 中用 rsync 同步大容量目录,关键不在“能不能传”,而在“怎么传得稳、快、不翻车”。核心是利用其增量传输、断点续传和属性保留能力,同时规避常见陷阱(如路径斜杠误用、临时空间不足、SSH中断、权限冲突)。
选对参数组合:稳定 + 高效的基础
同步大目录(比如 50GB+ 的网站或日志目录),推荐这一组经过生产验证的参数:
- -a:归档模式,递归同步且完整保留权限、属主、时间戳、软链接等元数据
- -v:显示详细过程,便于定位卡点或异常文件
-
-P:等价于
--partial --progress,既显示实时进度,又允许断点续传(中断后重跑自动接上) - --inplace:直接覆盖目标文件,不先写临时文件再重命名。这对大文件能显著减少磁盘 IO 和空间占用
-
--exclude:跳过无关或敏感文件,例如
--exclude='.user.ini' --exclude='cache/' --exclude='*.log'
示例命令(从本地推送到远程):
rsync -avP --inplace --exclude='cache/' /data/app/ root@192.168.5.100:/backup/app/路径末尾加不加 "/" 是成败分水岭
这是最容易出错也最常被忽略的细节:
-
/data/app/(结尾有 /)→ 同步 目录内容,即把 app 目录下的所有文件复制到目标
/backup/app/下 -
/data/app(结尾无 /)→ 同步 整个目录本身,会在目标生成
/backup/app/app/
大容量场景下,错误的斜杠会导致多一层嵌套、空间浪费甚至应用路径失效,务必确认清楚。
防止传输中断:用 screen 或 nohup 守住长任务
同步上百 GB 数据可能耗时几十分钟甚至数小时,SSH 连接超时或本地网络波动会直接中断进程。解决方法很简单:
- 安装 screen:
yum install screen -y(CentOS/RHEL)或apt install screen -y(Debian/Ubuntu) - 新建会话:
screen -S rsync-backup - 运行 rsync 命令(如上)
- 按
Ctrl + A,松开后按D分离会话,任务仍在后台运行 - 后续可随时恢复:
screen -r rsync-backup
也可用 nohup rsync ... &,但 screen 更便于查看实时输出和交互。
提前准备:免密登录 + 权限与空间检查
别让同步卡在第一步:
- 确保已配置 SSH 免密登录(用
ssh-copy-id推送公钥),否则每次连接都要输密码,无法自动化 - 确认目标机器剩余空间 ≥ 源目录实际占用(可用
du -sh /data/app和df -h核对) - 若目标为非 root 用户(如 backup_user),需确保该用户对目标路径有写权限,必要时提前创建目录并
chown - 避免 SELinux 或防火墙拦截:实验环境可临时关闭(
setenforce 0、systemctl stop firewalld),生产环境则开放 22 端口即可


















