> CentOS > CentOS服务器 > 文件同步 >

rsync同步指定目录

对于rsync的使用, 在备份之中常常用到, 不敢说精通, 但是也已经熟练到得心应手了, 但是细节问题, 没遇到还真的不知道.

最近遇到一个备份的问题, 需要同步大量文件中的小部分文件, man rsync的中有两个参数可以完成, 但是这两个参数的使用却又有其中的玄机,  分别是--exclude=PATTERN,  --include=PATTERN.

例如我要将/home/test1中包含mysql开头的文件同步到/data/test1中, 其他的文件忽略掉, 这个命令怎么写呢?

如果全部同步这样写是没有问题的, 它会在/data下面创建test1,并将文件同步过去.
rsync -av /home/test1 /data

想当然, 就会将上面改成下面这样, 显然是行不通的, 没有任何的文件同步过去...
rsync -av --exclude=* --include=mysql* /home/test1 /data/

呵呵, 将--exclude=*放到后面看看, 全部文件都同步过去了, 但是模式mysql*却没有起作用.
rsync -av --include=mysql*  --exclude=*  /home/test1 /data/

正确的方法是...
rsync -av --include=mysql*  --exclude=*  /home/test1/  /data/test1

看到差别了吗? 我想/home/test1/表示的是/home/test1下面的所有文件,  必须要一个/, 模式--include=mysql*才会起作用. 疯了吧... 刚开始少了一个/的时候我还怀疑--include=PATTERN这个参数是唬人的... (责任编辑:IT)