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 :删除那些DSTSRC没有的文件
--exclude=PATTERN
:指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt
-u :加上这个选项后将会把DST中比SRC还新的文件排除掉,不会覆盖
下面笔者将会针对这些选项做一些列小实验:
1
建立目录以及文件



笔者建立这些文件的目的就是为做试验做一些准备工作
2)使用-a选项



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



加一个斜杠就好了,所以笔者建议你在使用rsync备份目录时要养成加斜杠的习惯在上面讲了-a选项等同于- rlptgoD,而且-a还可以和--no-OPTION一并使用



笔者加上-v选项来获得更多的信息,上例中因为没有使用-r选项导致只能拷贝目录但不能拷贝目录下面的内容(英文翻译过来就是忽略了目录test1/.”,其中test1/.指的就是test1目录内部的所有文件),所以虽然创建了test2目录,但是test2目录为空下面再看看那个-l选项的作用



使用-v选项看来就是方便呀,上例告诉我们跳过了非普通文件1.sh,其实1.sh是一个软连接文件,如果不使用-l选项则不会理会软连接文件的



果真test2目录当中没有那个1.sh的影子当然加上-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的访问时间已经不同于test1/1的访问时间了,但是同步后访问时间又一致了



现在你明白-u选项的妙用了吧
5)使用--delete选项



如果不使用--delete选项当SRC有文件删除时,DST是不会删除的,只有加上--delete选项后才能删除掉还有一种情况就是如果在DST增加文件了,而SRC当中没有这些文件,同步时加上--delete选项后同样会删除新增的文件



6)使用--exclude 选项



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



最后简单总结一下,平时你使用rsync同步数据的时候,使用-a选项基本上就可以达到我们想要的效果了,只是有时候会有个别的需求,会用到-a --no-OPTION, -u, -L, --delete, --exclude这些选项,但是笔者要求你把上面这些全部掌握,毕竟这才几个而已,大部分选项笔者都没有介绍如果在以后的工作中遇到特殊需求了,就去查一下rsyncman文档吧


添加新评论 »