1. rsync 同步工具简介
rsync(remote sync)是一款高效的数据同步和文件传输工具,广泛应用于Unix/Linux系统。rsync通过差异传输的方式,在同步过程中仅传输文件的差异部分,从而极大地提高了传输效率。它支持本地与远程两种模式,可以在不同主机之间进行数据同步,也可以在同一主机的不同目录间同步。
2. rsync 同步工具优缺点
优点
- 高效传输:通过增量传输和压缩技术,rsync仅传输文件变化的部分,大大减少了传输的数据量和时间。
- 丰富的选项:rsync提供了大量的参数,能够满足各种复杂的同步需求。
- 容错能力强:在网络中断或错误发生时,rsync可以从中断处继续传输,减少重新传输的开销。
- 安全性:支持通过SSH加密传输数据,确保数据在传输过程中的安全。
缺点
- 学习曲线:由于参数众多且功能强大,初学者需要一定时间来学习和掌握。
- 权限问题:在处理权限和所有权时,可能需要管理员权限,配置稍显复杂。
3. rsync 常用参数分类介绍
基础参数
- -a:归档模式,等同于
-rlptgoD,保留文件权限、时间戳等信息,是最常用的选项之一。 - -v:详细模式,显示同步过程中的详细信息。
- -u:更新模式,仅在目标文件较旧或不存在时进行同步,避免覆盖新文件。
- -P:显示进度和部分传输进度信息,等同于
--progress --partial。 - -z:压缩传输,减小传输的数据量,提高传输效率。
- --progress:显示传输进度,方便监控同步过程。
文件筛选参数
- --include:指定包含的文件或目录,配合
--exclude使用,可以精确控制同步的文件范围。 - --exclude:指定排除的文件或目录,常用于同步过程中不需要传输的文件。
链接和权限处理参数
- -L:复制符号链接所指向的文件,而不是链接本身。
- -A:保留ACL(访问控制列表)信息。
- -X:保留扩展属性。
其他常用参数
- --delete:删除目标目录中源目录没有的文件,使目标目录与源目录保持一致。
- --ignore-existing:忽略目标目录中已经存在的文件,不进行覆盖。
- --max-size:设置传输文件的最大尺寸,适用于大文件过滤。
4.远程迁移
在进行远程迁移之前,确保以下条件满足:
- 安装 rsync:在本地和远程服务器上都安装
rsync。不然有如下报错
[root@Host01 M1]# rsync -avzu /H1bak/M1/ root@192.168.116.12:/H2bak/M1
root@192.168.116.12's password:
bash: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2]
[root@Host01 M1]# - SSH 访问:确保你能通过 SSH 访问远程服务器,并且具有适当的权限进行文件传输。
1. 从本地迁移到远程服务器
基本命令
rsync -avz /path/to/local/directory/ user@remote_host:/path/to/remote/directory/
2. 从远程服务器迁移到本地
基本命令
rsync -avz user@remote_host:/path/to/remote/directory/ /path/to/local/directory/
rsync -avz user@remote_host:/path/to/remote/directory/ /path/to/local/directory/
注意源目录的/
rsync -avzu /H1bak/M1/ root@192.168.116.12:/H2bak/M1/
rsync -avzu /H1bak/M1 root@192.168.116.12:/H2bak/M1/ 源文件M1后不加/ 那么目标目录会创建一个M1及同步到 /H2bak/M1/M1 上
3. 使用 SSH 密钥进行认证
为了避免每次传输时都输入密码,可以使用 SSH 密钥进行认证。
创建 SSH 密钥
在本地机器上生成 SSH 密钥对(如果尚未生成):
ssh-keygen -t rsa -b 4096
复制公钥到远程服务器
将公钥复制到远程服务器:
ssh-copy-id user@remote_host
5. 不同场景的性能优化方法
根据具体的使用场景,我们可以采取不同的优化策略来提高 rsync 的传输性能。
本地备份
对于本地备份,网络因素影响较小,我们可以集中优化磁盘读写性能:
rsync -a --inplace /path/to/source/ /path/to/destination/
使用 --inplace 可以避免创建临时文件,提高文件写入速度。
远程备份
远程备份中,网络带宽和延迟是关键因素。启用压缩与带宽限制可以改善性能:
rsync -a -z --bwlimit=10000 /path/to/source/ user@remote:/path/to/destination/
-z 参数启用压缩,--bwlimit 限制传输速率,防止网络拥塞。
大文件传输
对于大型文件传输,可以增加传输块大小,以减少协议开销:
rsync -a --block-size=16384 /path/to/source/ user@remote:/path/to/destination/
适当增大块大小有助于优化传输效率,但需视具体网络环境调试最佳值。
多文件或目录并行传输
如果需要同步大量文件,可通过并行传输提高性能:
find /path/to/source/ -type f | xargs -n1 -P4 -I{} rsync -az {} user@remote:/path/to/destination/利用 xargs 和 -P 参数并行启动多个 rsync 实例。
传输数据库备份
rsync -avuz -P --ignore-existing --block-size=32768 --delete /db_bak/ora_bak/ip0.25/ /yidi-backup/ora_bak/ip0.25
--ignore-existing 对于已存在的文件或目录不再去增量检查,节省了时间。




