rsync命令使用总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync命令使用总结相关的知识,希望对你有一定的参考价值。
rsync的重要功能
速度:第一次,rsync复制源目录和目标目录之间的整个内容。下一次,rsync仅将更改的块或字节传输到目标位置,这使传输真正快速。
安全性:rsync允许在传输过程中使用ssh协议对数据进行加密。
较少带宽:rsync分别在发送和接收端使用数据块的压缩和解压缩。因此,rsync使用的带宽与其他文件传输协议相比总是较少。
特权:安装和执行rsync不需要特殊的权限
使用格式:
$ rsync options source destination
Source 、destination可以是本地或远程。在远程的情况下,指定登录名,远程服务器名称和位置。
1.同步本地服务器中的两个目录
要同步本地计算机中的两个目录,请使用以下rsync -zvr命令
# rsync -zvr /tmp/ /data/ sending incremental file list ks-script-hd1UxV yum.log .ICE-unix/ .Test-unix/ .X11-unix/ .XIM-unix/ .font-unix/ 111/ sent 642 bytes received 74 bytes 1432.00 bytes/sec total size is 836 speedup is 1.17
在上面的rsync示例中:
-z是启用压缩
-v详细
-r表示递归
现在让我们看一下从源到目的地复制的文件之一的时间戳。如下所示,rsync在同步期间没有保留时间戳
# ll /tmp/yum.log /data/yum.log -rw-------. 1 root root 0 Aug 25 22:16 /data/yum.log -rw-------. 1 root root 0 Aug 20 20:39 /tmp/yum.log
2.使用rsync -a在同步期间保留时间戳
rsync选项-a表示归档模式。-a选项执行以下操作,
递归模式
保存符号链接
保留权限
保留时间戳
保存所有者和组
现在,执行示例1中提供的相同命令(但是使用rsync选项-a),如下所示:
# rsync -azv /tmp/ /data/ sending incremental file list ./ ks-script-hd1UxV yum.log .ICE-unix/ .Test-unix/ .X11-unix/ .XIM-unix/ .font-unix/ 111/
如下所示,rsync在同步期间保留时间戳
# ll /tmp/yum.log /data/yum.log -rw-------. 1 root root 0 Aug 20 20:39 /data/yum.log -rw-------. 1 root root 0 Aug 20 20:39 /tmp/yum.log
3.仅同步单个文件
要仅复制一个文件,请指定rsync命令的文件名,如下所示。
# rsync -v /tmp/yum.log /data/ yum.log sent 67 bytes received 31 bytes 196.00 bytes/sec total size is 0 speedup is 0.00
4.将文件从本地同步到远程
rsync允许您同步本地和远程系统之间的文件/目录。
# rsync -avz /data/1.txt [email protected]:/data/ The authenticity of host ‘192.168.0.172 (192.168.0.172)‘ can‘t be established. ECDSA key fingerprint is 96:4f:34:ce:2f:c6:15:ae:24:06:02:7f:e1:a8:7f:66. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘192.168.0.172‘ (ECDSA) to the list of known hosts. sending incremental file list 1.txt sent 75 bytes received 31 bytes 11.16 bytes/sec total size is 6 speedup is 0.06
在与远程服务器进行同步时,需要指定远程服务器的用户名和IP地址。您还应该在远程服务器上指定目标目录。格式为username @ machinename:path
如上所述,它在从本地到远程服务器执行rsync时要求输入密码。
有时您不想在从本地服务器远程服务器备份文件时输入密码。例如,如果您有一个备份shell脚本,可以使用rsync将文件从本地文件复制到远程服务器,那么您无需输入密码即可使用rsync。
要做到这一点,请先安装ssh密码登录,
5.将文件从远程同步到本地
当要将文件从远程同步到本地时,请在目标的源和本地路径中指定远程路径,如下所示。
# rsync -avz 192.168.0.176:/data/yum.log /data/ receiving incremental file list yum.log sent 30 bytes received 73 bytes 18.73 bytes/sec total size is 0 speedup is 0.00
6.用于同步的远程shell
rsync允许您指定要使用的远程shell。您可以使用rsync ssh启用安全的远程连接。使用rsync -e ssh指定要使用哪个远程shell。在这种情况下,rsync将使用ssh
# rsync -avz -e ssh 192.168.0.176:/data/ /data/tmp/ receiving incremental file list ./ yum.log .ICE-unix/ .Test-unix/ .X11-unix/ .XIM-unix/ .font-unix/ sent 53 bytes received 204 bytes 514.00 bytes/sec total size is 0 speedup is 0.00
7.不覆盖目的地的修改文件
在典型的同步情况下,如果文件在目的地被修改,我们可能不想用来源的旧文件覆盖该文件。
使用rsync -u选项来做到这一点。(即不要覆盖目的地的文件,如果被修改)。在以下示例中,名为Basenames的文件已在目标位置修改。所以,它不会被rsync -u覆盖。
# cat /data/tmp/yum.log 111111 # rsync -avzu 192.168.0.176:/data/ /data/tmp/ receiving incremental file list sent 16 bytes received 150 bytes 110.67 bytes/sec total size is 0 speedup is 0.00 # rsync -avzu 192.168.0.176:/data/ /data/tmp/ receiving incremental file list ./ 2.txt sent 38 bytes received 216 bytes 46.18 bytes/sec total size is 7 speedup is 0.03 # cat /data/tmp/yum.log 111111
8.仅同步目录树结构(而不是文件)
使用rsync -d选项只能从源到目的地同步目录树。以下示例,以递归方式同步目录树,而不是目录中的文件。
# tree /data/ /data/ ├── 1dir │ ├── 4dir │ │ └── 5.txt │ └── 5dir ├── 2dir │ ├── 4dir │ └── 5dir ├── 2.txt ├── 3dir │ ├── 4dir │ └── 5dir └── yum.log # rsync -vd 192.168.0.176:/data/ /data/tmp/ receiving file list ... done yum.log 1dir/ 2dir/ 3dir/ sent 45 bytes received 231 bytes 552.00 bytes/sec total size is 7 speedup is 0.03 # tree /data/tmp/ /data/tmp/ ├── 1dir ├── 2dir ├── 2.txt ├── 3dir └── yum.log 3 directories, 2 files
9.在传输过程中查看rsync进度
当您使用rsync进行备份时,您可能需要知道备份的进度。即有多少个文件是副本,以什么速度复制文件等。
rsync -progress选项显示rsync执行的详细进度,如下所示。
# rsync -avz --progress 192.168.0.176:/data/ /data/tmp/ receiving incremental file list ./ yum.log 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=15/18) 1dir/ 1dir/4dir/ 1dir/4dir/5.txt 6 100% 5.86kB/s 0:00:00 (xfer#2, to-check=4/18) 1dir/5dir/ 2dir/ 2dir/4dir/ 2dir/5dir/ 3dir/ 3dir/4dir/ 3dir/5dir/ sent 93 bytes received 470 bytes 375.33 bytes/sec total size is 13 speedup is 0.02
您还可以使用rsnapshot实用程序(使用rsync)来备份本地linux服务器或备份远程linux服务器。
10.删除目标中创建的文件
如果文件不存在于源,但存在于目标中,则可能需要在rsync期间删除目标文件。
在这种情况下,请使用-delete选项,如下所示。rsync delete选项删除源目录中不存在的文件。
#来源和目标同步。现在在目标中创建新的文件 # touch /data/tmp/{2,3}.txt # ll !$ ll /data/tmp/{2,3}.txt -rw-r--r-- 1 root root 7 Aug 25 23:16 /data/tmp/2.txt -rw-r--r-- 1 root root 0 Aug 25 23:16 /data/tmp/3.txt # rsync -avz --delete 192.168.0.176:/data/ /data/tmp/ receiving incremental file list deleting 3.txt ./ 2.txt sent 53 bytes received 399 bytes 904.00 bytes/sec total size is 13 speedup is 0.03 # ll /data/tmp/{2,3}.txt ls: cannot access /data/tmp/3.txt: No such file or directory -rw-r--r-- 1 root root 7 Aug 25 23:06 /data/tmp/2.txt # cat /data/tmp/2.txt 222222
目标有新的文件名为1.txt,当与-delete选项同步时,它删除了文件1.txt
11.不要在目标上创建新文件
如果你愿意,你可以更新(同步)目标的现有文件。如果源有新的文件,目标不存在,您可以避免在目标上创建这些新文件。如果需要此功能,请使用-existing选项与rsync命令。
首先,把目前的之前同步的3.txt删除,目的地就没有了3.txt
# rm -rf /data/tmp/3.txt [[email protected] ~]# rsync -avz --existing 192.168.0.176:/data/ /data/tmp/ receiving incremental file list ./ sent 28 bytes received 405 bytes 66.62 bytes/sec total size is 53 speedup is 0.12
source:
# ll /data/ total 12 drwxr-xr-x. 4 root root 30 Aug 25 23:09 1dir drwxr-xr-x. 4 root root 30 Aug 25 23:09 2dir -rw-r--r--. 1 root root 7 Aug 25 23:06 2.txt drwxr-xr-x. 4 root root 30 Aug 25 23:09 3dir -rw-r--r--. 1 root root 20 Aug 25 23:22 3.txt -rw-r--r--. 1 root root 20 Aug 25 23:21 new-file.txt -rw-------. 1 root root 0 Aug 25 22:21 yum.log
dst:
# ll /data/tmp/ total 16 drwxr-xr-x 4 root root 4096 Aug 25 23:09 1dir drwxr-xr-x 4 root root 4096 Aug 25 23:09 2dir -rw-r--r-- 1 root root 7 Aug 25 23:06 2.txt drwxr-xr-x 4 root root 4096 Aug 25 23:09 3dir -rw------- 1 root root 0 Aug 25 22:21 yum.log
现在让我们看看rsync如何显示这个差异。-i选项显示项目更改。
rsync -avzi 192.168.0.176:/data/ /data/tmp/ receiving incremental file list >f+++++++++ 3.txt >f+++++++++ new-file.txt sent 63 bytes received 520 bytes 1166.00 bytes/sec total size is 53 speedup is 0.09
在输出中,它显示文件名或目录名前面的9个字母,表示更改。
在我们的例子中,前面的字母表示如下:
>指定文件正在传输到本地主机。 f表示它是一个文件。 s表示大小变化。t表示时间戳更改。 o所有者改变 g组改变了。
13.在文件传输期间包括和排除模式
rsync允许您在进行同步时给出要包含的模式并排除文件或目录。
# mkdir /data/{s1dir,s2dri} # mkdir /data/r1dir # touch /data/r1dir/u.txt
# rsync -avz --include ‘s*‘ --exclude ‘*‘ 192.168.0.176:/data/ /data/tmp/ receiving incremental file list ./ s1dir/ s2dri/ sent 37 bytes received 80 bytes 234.00 bytes/sec total size is 0 speedup is 0.00
在上面的例子中,它只包含以‘s‘(使用rsync include)开头的文件或目录,并排除所有其他文件。(使用rsync 排除‘*‘)
14.不要传输大文件
您可以告诉rsync不要使用rsync -max-size选项传输大于特定大小的文件。
# ll -h /data/test.txt /data/t.txt -rw-r--r--. 1 root root 78K Aug 25 23:51 /data/test.txt -rw-r--r--. 1 root root 2.0K Aug 25 23:52 /data/t.txt # rsync -avz --max-size="50K" 192.168.0.176:/data/ /data/tmp/ receiving incremental file list ./ t.txt r1dir/ r1dir/u.txt sent 72 bytes received 1300 bytes 249.45 bytes/sec total size is 81341 speedup is 59.29
max-size = 50K使rsync仅传输小于或等于50K的文件。您可以将M表示为兆字节,G表示千兆字节。
15、传输整个文件
rsync的一个主要特点是它只将更改的块传输到目的地,而不是发送整个文件。
如果不考虑网络带宽(但CPU除外),则可以使用rsync -W选项传输整个文件。这将加速rsync进程,因为它不必在源和目的地执行校验和
# rsync -avzW 192.168.0.176:/data/ /data/tmp/ receiving incremental file list test.txt sent 47 bytes received 13085 bytes 2387.64 bytes/sec total size is 81341 speedup is 6.19
16、通过ssh无密码rsync
首先需要生成没有加密的public key,把你的ssh public key放到远程主机
# ssh-keygen Enter passphrase (empty for no passphrase): Enter same passphrase again: ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.0.176 # rsync -avz -e ssh /data/tmp/ 192.168.0.176:/data/
本文出自 “实践出真知” 博客,请务必保留此出处http://m51cto.blog.51cto.com/53087/1959478
以上是关于rsync命令使用总结的主要内容,如果未能解决你的问题,请参考以下文章