对于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这个参数是唬人的...