邱立祥

——— 一个刚刚起步的 Linuxer

Cononico

2018年1月5日

Linux基础 Linux常用命令>

数据同步工具rsync介绍(2)

之前一篇文章介绍了rsync的格式以及常用选项,下面针对rsync的选项做一些列实验:

1) 建立目录以及文件:

建立这些文件的目的就是为做试验做一些准备工作。

2)使用 -a 选项

这里有一个问题,就是本来想把test1目录直接拷贝成test2目录,可结果rsync却新建了test2目录然后把test1放到test2当中。为了避免这样的情况发生,可以这样做:

加一个斜杠就好了,所以在使用rsync备份目录时要养成加斜杠的习惯。在上面讲了 -a 选项等同于-rlptgoD,而且 -a 还可以和 –no-OPTIN 一并使用。下面看看-l 选项的作用:

使用 -v 选项看来就是方便,上例告诉我们跳过了非普通文件 123.txt ,其实 123.txt 是一个软链接文件,如果不使用 -l 选项则不理会软链接文件的。
虽然加上 -l 选项会把软链接文件给拷贝过去,但是软链接的目标文件却没有拷贝过去,有时候咱们指向拷贝软连接文件所指向的目标文件,那这时候该怎么办呢?

3)使用-L选项

加上 -L 选项就可以把SRC中软连接的目标文件给拷贝到DST.

4) 使用-u选项

首先查看一下 test1/1  和 test2/1 的创建时间(肯定是一样的),然后使用touch 修改一下 test2/1 的创建时间(此时test2/1要比test1/1的创建时间晚了一些)。

如果不加-u选项的话,会把 test2/1 的创建时间变成和 test1/1 的创建时间一样。这样讲也许你会迷糊,不妨看一看:

两者之间的创建时间是一样的,下面修改test2/1 的创建时间,然后不加-u同步:

test2/1 的创建时间又变成和test1/1的创建时间一样了。下面加上 -u 再看看结果是怎么样的:

加上-u 选项后,不会再把 test1/1 同步为 test2/1 了,现在你明白 -u 选项的妙用了吧。

5)使用 –delete 选项

首先删除test1/123.txt:

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

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

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

6)使用 –exclude 选项

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

上例中,连带着使用了 –progress 选项,这个主要是用来观察rsync同步过程的状态的。

最后简单总结一下,平时你使用rsync同步数据的时候,使用-a选项基本上就可以达到我们想要的效果了,只是有时候会有个别的需求,会用到 -a –no-OPTION, -u, -L, –delete, –exclude 以及 progress 这些选项。

如果在以后的工作中遇到特殊需求了,就去查一下rsync的man文档吧。

来一发吐槽