暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

数据同步利器:rsync 工具详解

原创 Tonyhacks 2024-06-25
214

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 -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 对于已存在的文件或目录不再去增量检查,节省了时间。

最后修改时间:2024-06-26 08:21:36
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论