rsync 的一些添加功能是

  • 支持复制链接、设备、所有者、组和权限
  • exclude 和 exclude-from 类似于 GNU tar 的选项
  • 用于忽略 CVS 将忽略的相同文件的 CVS 排除模式
  • 可以使用任何透明的远程 shell,包括 ssh 或者 rsh
  • 不需要超级用户权限
  • 文件传输流水线以最小化延迟成本
  • 支持匿名或者经过身份验证的 rsync 守护进程(非常适合镜像)

语法

rsync 命令的基本语法是:

# rsync options source destination

一些常用选项:

  • -delete : 删除发件人(系统)上不存在的文件。
  • -v : 详细输出
  • -e "ssh options" : 指定 ssh 作为远程 shell
  • -a : 存档模式
  • -r : 递归到目录
  • -z : 压缩文件数据
https://onitroad.com 更多教程

Linux 中的 rsync 命令示例

在本地系统上同步文件和目录

# rsync -zvr /usr/  /root/sync-data/

以上命令会将 /usr 文件夹的所有文件和目录复制或者同步到 /root/sync-data 文件夹。

在本地同步文件保留权限

-a 选项执行以下操作:它提供递归功能并保留权限、符号链接、用户和组信息。

# rsync -azv /usr/ /root/sync-data/

将文件从本地机器同步/复制到远程服务器

# rsync -avz /root/sync-data/ root@192.168.2.147:/tmp

上面的命令将 /root/syc-data 文件夹的数据复制到远程计算机,并使用 /tmp 文件夹中的 root 用户凭据。

从远程服务器同步/复制文件到本地机器

# rsync -avz root@192.168.2.147:/tmp/src /opt 
root@192.168.2.147's password: 
receiving file list ... done 
src/ 
src/debug/ 
src/kernels/
sent 38 bytes  received 99 bytes  10.96 bytes/sec 
total size is 0  speedup is 0.00

以上命令将远程服务器的 /tmp/src 文件夹复制到本地机器的 /opt 文件夹。

通过 ssh 进行远程同步

rsync 允许我们通过 ssh 将文件同步到远程机器,反之亦然,例如:安全通信。
使用“rsync -e ssh”指定要使用的远程shell。
在我们的例子中,rsync 将使用 ssh。

# rsync -avz -e ssh root@192.168.2.149:/var/lib/rpm  /opt 
The authenticity of host '192.168.2.149 (192.168.2.149)' can't be established. 
RSA key fingerprint is 45:fc:99:57:34:ba:6a:bb:e3:6f:00:bb:ca:15:3d:c3. 
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.149' (RSA) to the list of known hosts.
root@192.168.2.149's password: 
receiving file list ... done 
rpm/ 
rpm/.rpm.lock 
rpm/Basenames 
rpm/Conflictname 
............
rpm/Triggername
sent 422 bytes  received 12521670 bytes  115410.99 bytes/sec 
total size is 35467264  speedup is 2.83

通过同步查看进度

我们可以使用选项“-progress”来查看同步进度。

# rsync -avz  --progress root@192.168.2.149:/usr   /opt 
root@192.168.2.149's password: 
receiving file list ... 
44609 files to consider 
usr/ 
usr/tmp -> ../var/tmp 
usr/bin/ 
usr/bin/.fipscheck.hmac 
65 100%   63.48kB/s    0:00:00 (xfer#1, to-check=44605/44609) 
usr/bin/.ssh.hmac 
65 100%   63.48kB/s    0:00:00 (xfer#2, to-check=44604/44609) 
usr/bin/GET 
14519 100%  248.75kB/s    0:00:00 (xfer#3, to-check=44603/44609) 
usr/bin/HEAD 
14519 100%  232.44kB/s    0:00:00 (xfer#4, to-check=44602/44609)
............

在 rsync 中包含和排除选项

rsync 允许我们指定在进行同步时要包含和排除文件或者目录的模式。

# rsync -avz --include 'P*' --exclude '*' root@192.168.2.149:/var/lib/rpm/  /opt 
root@192.168.2.149's password: 
receiving file list ... done 
./ 
Packages 
Providename 
Provideversion 
Pubkeys
sent 129 bytes  received 9395561 bytes  695977.04 bytes/sec 
total size is 28999680  speedup is 3.09

上面的示例仅包括以“P”开头的文件或者目录,并排除所有其他文件。
(使用 rsync 排除‘*’)

如果文件不存在于源中,则删除目标中的文件

借助 rsync 中的“-delete”选项,如果源中不存在相同的文件,我们可以删除在目标上创建的文件。

# rsync -avz --delete root@192.168.2.149:/var/lib/rpm/  /opt

示例:9 使用“-I”选项查看源和目标之间的变化

查看源和目标之间的变化

我们可以使用“-i”选项查看源文件和目标文件之间的更改。
例如:

# rsync -avzi root@192.168.2.149:/var/lib/rpm/ /opt
 root@192.168.2.149's password:
 receiving file list ... done
 >f+++++++ .rpm.lock
 >f+++++++ Basenames
 >f+++++++ Conflictname
 >f+++++++ Dirnames
 >f+++++++ Filedigests
 >f+++++++ Group
 >f+++++++ Installtid
 >f+++++++ Name
 >f+++++++ Obsoletename
 >f+++++++ Requirename
 >f+++++++ Requireversion
 >f+++++++ Sha1header
 >f+++++++ Sigmd5
 >f+++++++ Triggername
sent 328 bytes  received 3126214 bytes  297765.90 bytes/sec
total size is 35467264  speedup is 11.34

限制传输文件大小

我们可以使用“-max-size”选项强制 rsync 不传输大于特定大小的文件。

# rsync -avz --max-size='200k' root@192.168.2.149:/var/lib/rpm/ /opt

上面的命令让rsync只传输小于或者等于200K的文件。
我们可以用 M 表示兆字节,用 G 表示千兆字节。

Linux rsync 命令示例

Rsync 是一种快速且非常通用的文件复制工具。
它可以在本地、通过任何远程 shell 复制到另一台主机或者从远程 rsync 守护程序复制到/从另一个主机复制。
它提供了大量选项来控制其行为的各个方面,并允许对要复制的文件集进行非常灵活的规范。
它以其增量传输算法而闻名,该算法通过仅发送源文件与目标中现有文件之间的差异来减少通过网络发送的数据量。
Rsync 广泛用于备份和镜像,并作为日常使用的改进复制命令。

Rsync 使用“快速检查”算法(默认情况下)查找需要传输的文件,该算法查找大小或者上次修改时间已更改的文件。
当快速检查表明不需要更新文件的数据时,其他保留属性的任何更改(根据选项的要求)都会直接在目标文件上进行。

日期:2020-09-17 00:14:41 来源:oir作者:oir