rsync工具介绍 rsync常用选项 rsync通过ssh同步

1,rsync工具介绍。

    rsync是Linux系统下数据备份的一种工具。从字面上理解就是远程同步(remote sync),rsync不仅可以远程同步数据(类似于scp),而且可以本地同步数据(类似于cp),但不同于scp和cp的一点是,它不会覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不同的部分覆盖。

   安装命令:yum install -y rsync。  

    示例:把/etc/passwd同步到/tmp/目录下并取名10.txt

    

     远程拷贝是这样的形式:IP:path(例如192.168.121.129:/root/)

    

2,rsync命令格式。    

rsync [OPTION]... SRC DEST

rsync [OPTION]... SRC [USER@]HOST:DEST

rsync [OPTION]... [USER@]HOST:SRC DEST

rsync [OPTION]... [USER@]HOST::SRC DEST

rsync [OPTION]... SRC [USER@]HOST::DEST

SRC:源文件或目录

DEST:目标文件或目录

USER@:目标用户,不加默认为root。

HOST:远程主机IP

3,rsync常用选项。

    

-a 归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD, -a选项后面可以跟一个 --no-OPTION 这个表示关闭-rlptgoD中的某一个例如 -a--no-l 等同于-rptgoD

-r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项

-v 打印一些信息出来,比如速率,文件数量等

-l 保留软链接

-L 向对待常规文件一样处理软链结,如果是SRC中有软连接文件,则加上该选项后将会把软连接指向的目标文件拷贝到DST

-p 保持文件权限

-o 保持文件属主信息

-g 保持文件属组信息

-D 保持设备文件信息

-t 保持文件时间信息

--delete 删除那些DST中SRC没有的文件

--exclude=PATTERN 指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt)

--progress 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等

-u 加上这个选项后将会把DST中比SRC还新的文件排除掉,不会覆盖

实验:

 1)建立目录及文件:

    

2)使用 -a 选项

    

    这里有一个问题,就是本来想把test1目录直接拷贝成test2目录,可结果rsync却新建了test2目录然后把test1放到test2当中。这是因为我们没有加上斜杠/的原因,我们在使用rsync备份目录时要养成加斜杠的习惯。

    

  -a选项等同于-rlptgoD,而且 -a 还可以和 --no-OPTIN 一并使用。下面看看-l选项的作用:

    

    直接跳过了软连接文件123.txt。

3)使用-L选项。可以把SRC中软连接的目标文件给拷贝到DST.

    

4) 使用-u选项。

    查看一下test1/1 和test2/1的创建时间。

    

    使用touch修改一下test2/1的创建时间,然后不加-u同步。test2/1 的创建时间又变成和test1/1的创建时间一样了。

    

    加上-u 选项后,不会再把 test1/1 同步为 test2/1 L 。

5)使用 --delete 选项。

    首先删除test1/123.txt:

    

    然后把test1/ 目录 同步到 test2/ 目录下:

   

    test2/目录并没有删除掉123.txt, 下面加上 --delete 选项:

    

    test2/ 目录里的123.txt也被删除了,这就是 --delete 选项的用处。还有一种情况就是如果在DST增加文件了,而SRC当中没有这些文件,同步时加上 --delete 选项后同样会删除新增的文件:

    

6)使用 --exclude 选项。

    

    另外还可以使用匹配字符 *

    

4. rsync通过ssh的方式同步。

      上面介绍的5种命令格式当中,第二、第三(1个冒号)就属于通过ssh的方式,这种方式其实就是让用户去登录到远程机器,然后执行rsync的任务。

    第二种方式,通过ssh拷贝的数据,需要输入192.168.121.129这台机器www账户的密码。    

    

    第三种方式:

    

     以上两种方式如果写到脚本里,备份起来就有麻烦了,因为要输入密码,脚本本来就是自动的,不可能做到的。但是不代表没有解决办法。那就是通过密钥验证,密钥不设立密码就ok了。

      主机信息:192.168.121.128,主机名:wwan-01,192.168.121.129,主机名:wwan-02。需要从wwan01上拷贝数据到wwan02。

     首先确认一下wwan01上是否有这个文件 /root/.ssh/id_rsa.pub,如果没有按照如下方法生成该文件。

      

     在这个过程中会有一些交互的过程,它首先提示要输入这个密钥的密码,出于安全考虑应该定义个密码,但是我们的目的就是为了自动化同步数据,所以这里不输入任何密码,直接按回车,即密码为空。最后则生成了私钥(/root/.ssh/id_rsa)和公钥文件(/root/.ssh/id_rsa.pub)。

    把公钥文件的内容拷贝到目标机器上:

    

  复制主机wwan01上的/root/.ssh/id_rsa.pub文件内容,粘贴到主机wwan02的/home/www/.ssh/authorized_keys中:

原文地址:https://www.cnblogs.com/twobrother/p/11556046.html