转载来源:https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/
Rsync的(远程同步)是最常用的命令复制和同步文件和目录,远程和本地的的Linux / Unix的系统。借助rsync命令,您可以跨目录,跨磁盘和网络远程和本地复制和同步数据,在两台Linux计算机之间执行数据备份和镜像。
本文介绍了rsync命令的10个基本和高级用法,用于在基于Linux的计算机上远程和本地传输文件。您不需要是root用户来运行rsync命令。
Rsync命令的一些优点和功能
- 它有效地将文件复制到远程系统或从远程系统同步文件。
- 支持复制链接,设备,所有者,组和权限。
- 它比scp(安全复制)更快,因为rsync使用远程更新协议,它允许仅传输两组文件之间的差异。第一次,它将文件或目录的全部内容从源复制到目标,但是从下次起,它仅将更改的块和字节复制到目标。
- Rsync消耗较少的带宽,因为它使用压缩和解压缩方法,同时发送和接收数据两端。
rsync命令的基本语法
#rsync选项源目标
rsync命令使用的一些常用选项
- -v:详细
- -r:递归复制数据(但在传输数据时不保留时间戳和权限
- -a:归档模式,归档模式允许递归复制文件,它还保留符号链接,文件权限,用户和组所有权以及时间戳
- -z:压缩文件数据
- -h:人类可读的输出数字,采用人类可读的格式
建议阅读: 如何使用Rsync与非标准SSH端口同步文件/目录
在Linux机器上安装rsync
我们可以借助以下命令安装rsync包。
#yum install rsync(在基于Red Hat的系统上)
#apt-get install rsync(基于Debian的系统)
1.本地复制/同步文件和目录
复制/同步本地计算机上的文件
以下命令将本地计算机上的单个文件从一个位置同步到另一个位置。在此示例中,需要将文件名backup.tar复制或同步到/ tmp / backups / folder。
[ root @ tecmint ] #rsync -zvh backup.tar / tmp / backups /
创建目录/ tmp / backups
backup.tar
发送14.71M字节接收31字节3.27M字节/秒
总大小为16.18M,加速为1.10
在上面的示例中,您可以看到,如果目标尚不存在,rsync将自动为目标创建目录。
复制/同步本地计算机上的目录
以下命令将从一个目录的所有文件传输或同步到同一台机器中的不同目录。在这个示例中,/ root / rpmpkgs包含一些rpm包文件,您希望将该目录复制到/ tmp / backups /文件夹中。
[ root @ tecmint ]#rsync -avzh / root / rpmpkgs / tmp / backups /
发送增量文件列表
rpmpkgs /
rpmpkgs / httpd的-2.2.3-82.el5.centos.i386.rpm
rpmpkgs /了mod_ssl-2.2.3-82.el5.centos.i386.rpm
rpmpkgs / nagios的-3.5.0.tar.gz
rpmpkgs / nagios的-插件-1.4.16.tar.gz
发送4.99M字节接收92字节3.33M字节/秒
总大小为4.99M,加速为1.00
2.将文件和目录复制/同步到服务器或从服务器复制
将目录从本地服务器复制到远程服务器
此命令将同步目录从本地计算机到远程计算机。例如:本地计算机中有一个文件夹“ rpmpkgs ”,其中包含一些RPM软件包,并且您希望将本地目录的内容发送到远程服务器,您可以使用以下命令。
[ root @ tecmint ] $ rsync -avz rpmpkgs / root@192.168.0.101 :/ home /
root@192.168.0.101 的密码:
发送增量文件列表
./
的httpd-2.2.3-82.el5.centos.i386.rpm
mod_ssl的-2.2.3-82.el5.centos.i386.rpm
Nagios的-3.5.0.tar.gz
Nagios的-插件-1.4.16.tar.gz
发送4993369字节接收91字节399476.80字节/秒
总大小是4991313,加速是1.00
将远程目录复制/同步到本地计算机
此命令将帮助您将远程目录同步到本地目录。在此示例中,远程服务器上的目录/ home / tarunika / rpmpkgs正在/ tmp / myrpms中的本地计算机中复制。
[ root @ tecmint ] #rsync -avzh root@192.168.0.100 :/ home / tarunika / rpmpkgs / tmp / myrpms
root@192.168.0.100 的密码:
接收增量文件列表
创建目录/ tmp / myrpms
rpmpkgs /
rpmpkgs / httpd的-2.2.3-82.el5.centos.i386.rpm
rpmpkgs /了mod_ssl-2.2.3-82.el5.centos.i386.rpm
rpmpkgs / nagios的-3.5.0.tar.gz
rpmpkgs / nagios的-插件-1.4.16.tar.gz
发送91字节接收4.99M字节322.16K字节/秒
总大小为4.99M,加速为1.00
3.通过SSH进行Rsync
使用rsync,我们可以使用SSH(Secure Shell)进行数据传输,使用SSH协议传输数据时,可以确保您的数据在加密的安全连接中传输,这样任何人都无法在传输数据时读取数据通过互联网上的电线。
此外,当我们使用rsync时,我们需要提供用户 / root密码来完成该特定任务,因此使用SSH选项将以加密方式发送您的登录信息,以便您的密码安全。
使用SSH将文件从远程服务器复制到本地服务器
要使用rsync指定协议,您需要为“ -e ”选项提供要使用的协议名称。在这个例子中,我们将使用带有“ -e ”选项的“ ssh ” 并执行数据传输。
[ root @ tecmint ] #rsync -avzhe ssh root@192.168.0.100 :/root/install.log / tmp /
root@192.168.0.100 的密码:
接收增量文件列表
install.log的
发送30个字节,接收8.12K字节1.48K字节/秒
总大小为30.74K,加速为3.77
使用SSH将文件从本地服务器复制到远程服务器
[ root @ tecmint ] #rsync -avzhe ssh backup.tar root@192.168.0.100 :/ backups /
root@192.168.0.100 的密码:
发送增量文件列表
backup.tar
发送14.71M字节接收31字节1.28M字节/秒
总大小为16.18M,加速为1.10
建议阅读: 使用Rsync在Linux中同步新的或更改/修改的文件
4.使用rsync传输数据时显示进度
为了在将数据从一台机器传输到另一台机器时显示进度,我们可以使用' -progress'选项。它显示完成传输的文件和剩余时间。
[ root @ tecmint ] #rsync -avzhe ssh --progress / home / rpmpkgs root@192.168.0.100 :/ root / rpmpkgs
root@192.168.0.100 的密码:
发送增量文件列表
创建目录/ root / rpmpkgs
rpmpkgs /
rpmpkgs / httpd的-2.2.3-82.el5.centos.i386.rpm
1.02M 100%2.72MB / s 0:00:00(xfer#1,to-check = 3/5)
rpmpkgs /了mod_ssl-2.2.3-82.el5.centos.i386.rpm
99.04K 100%241.19kB / s 0:00:00(xfer#2,to-check = 2/5)
rpmpkgs / nagios的-3.5.0.tar.gz
1.79M 100%1.56MB / s 0:00:01(xfer#3,to-check = 1/5)
rpmpkgs / nagios的-插件-1.4.16.tar.gz
2.09M 100%1.47MB / s 0:00:01(xfer#4,to-check = 0/5)
发送4.99M字节接收92字节475.56K字节/秒
总大小为4.99M,加速为1.00
5.使用-include和-exclude选项
这两个选项允许我们通过使用这些选项指定参数来包含和排除文件,这有助于我们指定要包含在同步中的文件或目录,并排除您不想传输的文件和文件夹。
在此示例中,rsync命令将仅包含那些以“ R ” 开头的文件和目录,并排除所有其他文件和目录。
[ root @ tecmint ] #rsync -avze ssh --include'R *' - exclude '*' root@192.168.0.101 :/ var / lib / rpm / / root / rpm
root@192.168.0.101 的密码:
接收增量文件列表
创建目录/ root / rpm
./
Requirename
Requireversion
发送67个字节,接收167289字节7438.04字节/秒
总大小是434176加速是2.59
6.使用-delete选项
如果源上不存在文件或目录,但目标中已存在该文件或目录,则可能需要在同步时删除目标上的现有文件/目录。
我们可以使用' -delete '选项删除源目录中不存在的文件。
源和目标是同步的。现在在目标上创建新文件test.txt。
[ root @ tecmint ] #touch test.txt
[ root @ tecmint ] #rsync -avz --delete root@192.168.0.100 :/ var / lib / rpm /。
密码:
接收文件列表...完成
删除test.txt
./
发送26个字节接收390个字节48.94个字节/秒
总的大小是45305958,加速是108908.55
Target有一个名为test.txt的新文件,当使用' -delete '选项与源同步时,它删除了文件test.txt。
7.设置要传输的文件的最大大小
您可以指定要传输或同步的最大文件大小。您可以使用“ -max-size ”选项来完成。在此示例中,Max文件大小为200k,因此该命令仅传输那些等于或小于200k的文件。
[ root @ tecmint ] #rsync -avzhe ssh --max-size ='200k'/ var / lib / rpm / root@192.168.0.100 :/ root / tmprpm
root@192.168.0.100 的密码:
发送增量文件列表
创建目录/ root / tmprpm
./
Conflictname
组
Installtid
名称
Provideversion
Pubkeys
Requireversion
Sha1header
Sigmd5
Triggername
__db.001
发送189.79K字节接收224字节13.10K字节/秒
总大小为38.08M,加速为200.43
8.成功传输后自动删除源文件
现在,假设您有一个主Web服务器和一个数据备份服务器,您创建了每日备份并与备份服务器同步,现在您不希望在Web服务器中保留该本地备份副本。
那么,您是否会等待传输完成然后手动删除这些本地备份文件?当然不。可以使用' -remove-source-files '选项完成此自动删除。
[ root @ tecmint ] #rsync --remove-source-files -zvh backup.tar / tmp / backups /
backup.tar
发送14.71M字节接收31字节4.20M字节/秒
总大小为16.18M,加速为1.10
[ root @ tecmint ] #ll backup.tar
ls:backup.tar:没有这样的文件或目录
9.使用rsync执行Dry Run
如果你是一个新手,并使用rsync,不知道你的命令究竟是做什么的。Rsync可能会破坏目标文件夹中的内容,然后执行撤消操作可能是一项繁琐的工作。
建议阅读: 如何使用Rsync同步两个Apache Web服务器/网站
使用此选项不会进行任何更改只执行命令的干运行并显示命令的输出,如果输出显示与您想要的完全相同,则可以从命令中删除' -dry-run '选项在终端上运行。
root @ tecmint ] #rsync --dry-run --remove-source-files -zvh backup.tar / tmp / backups /
backup.tar
发送35个字节,接收15个字节,100.00字节/秒
总大小是16.18M加速是323584.00(DRY RUN)
10.设置带宽限制和传输文件
您可以在' -bwlimit '选项的帮助下,在将数据从一台机器传输到另一台机器时设置带宽限制。此选项可帮助我们限制I / O带宽。
[ root @ tecmint ] #rsync --bwlimit = 100 -avzhe ssh / var / lib / rpm / root@192.168.0.100 :/ root / tmprpm /
root@192.168.0.100 的密码:
发送增量文件列表
发送324字节接收12字节61.09字节/秒
总大小为38.08M,加速为113347.05
此外,默认情况下rsync同步仅更改了块和字节,如果您想明确要同步整个文件,则使用' -W '选项。
[ root @ tecmint ] #rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
发送14.71M字节接收31字节3.27M字节/秒
总大小为16.18M,加速为1.10
这就是现在的rsync,您可以看到手册页以获得更多选项。