Linux 下 rsync 工具详解与实用指南
一、什么是 rsync?
rsync
(remote sync)是 Linux/Unix 系统下常用的数据同步和备份工具。它可以高效地在本地与远程主机之间同步文件和目录,支持增量同步、断点续传、权限保留等功能,是数据迁移、备份、镜像的利器。
二、rsync 的基本语法
rsync [选项] 源路径 目标路径
- 源路径和目标路径可以是本地路径,也可以是远程路径(格式为 user@host:/path)。
- 常用选项如下:
选项 | 含义 |
---|---|
-a | 归档模式,等同于 -rlptgoD,常用于备份 |
-v | 显示详细过程(verbose) |
-z | 传输时压缩数据 |
-P | 显示进度,并支持断点续传 |
-r | 递归复制子目录 |
-u | 只同步源比目标新的文件 |
–delete | 删除目标目录中源目录已删除的文件 |
-e | 指定远程 shell,如 ssh |
三、常见用法示例
1. 本地目录同步
将 /home/user/data/
同步到 /backup/data/
:
rsync -av /home/user/data/ /backup/data/
注意:源路径末尾的 /
表示同步目录内容,不加 /
表示连目录本身一起同步。
2. 本地与远程主机同步
将本地目录同步到远程服务器:
rsync -avz /home/user/data/ user@remote_host:/data/backup/
将远程服务器目录同步到本地:
rsync -avz user@remote_host:/data/backup/ /home/user/data/
3. 只同步新文件或有变动的文件
rsync -avu /home/user/data/ user@remote_host:/data/backup/
4. 显示同步进度
rsync -avzP /home/user/data/ user@remote_host:/data/backup/
5. 删除目标端多余文件(保持两端完全一致)
rsync -avz --delete /home/user/data/ user@remote_host:/data/backup/
6. 通过指定端口的 SSH 进行同步
rsync -avz -e 'ssh -p 2222' /home/user/data/ user@remote_host:/data/backup/
四、rsync 的典型应用场景
- 网站数据备份:定期将网站目录同步到备份服务器。
- 日志归档:将生产服务器日志同步到本地分析服务器。
- 多机文件分发:将同一份代码或数据分发到多台服务器。
- 断点续传大文件:大文件同步中断后可继续传输,无需重头再来。
五、rsync 的注意事项
- 权限问题:使用
rsync
时,确保有足够的读写权限。 - 防火墙与端口:远程同步时,目标主机需开放 SSH 端口(默认22)。
- 安全性:建议通过 SSH 通道加密传输数据,避免明文泄露。
- 定时任务:可结合
crontab
实现定时自动同步。
六、进阶用法
1. 排除某些文件或目录
rsync -av --exclude 'tmp/' --exclude '*.log' /home/user/data/ user@remote_host:/data/backup/
2. 只同步指定类型文件
rsync -av --include '*.jpg' --exclude '*' /home/user/photos/ user@remote_host:/photos/backup/
3. 使用 rsync 守护进程(适合大规模分发)
可配置 /etc/rsyncd.conf
,通过 rsync://
协议进行同步,适合大规模分发和镜像站点搭建。
七、常见问题与排查
- rsync: command not found
需先安装:sudo apt install rsync
或sudo yum install rsync
- Permission denied
检查 SSH 密钥、账号权限、目录权限 - 同步慢
可加-z
压缩,或排查网络带宽
八、总结
rsync
是 Linux 下极为强大的文件同步工具,支持本地与远程、单向与双向、增量与全量等多种同步方式。掌握 rsync,可以大大提升你的数据管理和运维效率。
建议:
- 日常备份、迁移、分发文件时优先考虑 rsync
- 结合脚本和定时任务,实现自动化运维
如有更复杂的 rsync 场景或脚本需求,欢迎留言交流!