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中: