Rsync特定的Direcotries和具有相同结构的文件

我想rsync具有相同结构的特定目录和文件

例如 :-

source/ source/110/var/lib/mysql source/110/var/lib/mysql source/110/var/lib/mysql source/110/home source/110/bin/ source/110/etc/ source/120/var/lib/mysql source/120/var/lib/mysql source/120/var/lib/mysql source/120/home source/120/bin/ source/120/etc/ 

如何将mysql和home目录以及direcotry中包含的文件复制到相同的目标文件夹中,并具有相同的结构,如下所示:

 destination/ destination/110/var/lib/mysql destination/110/home destination/120/var/lib/mysql destination/120/home 

谢谢

你可以做一些奇特的filter。 手册页有一个很好的例子,但最近的rsync(> = 2.6.7),你可以做这样的事情:

 rsync -a source/ destination/ \ -f '+ /*/' \ -f '+ /*/home/***' \ -f '+ /*/var/' \ -f '+ /*/var/lib/' \ -f '+ /*/var/lib/mysql/***' \ -f '- *' 

换句话说,您列出了您想要包含在同步中的目录,然后排除其他所有内容。 ***通配符是非常有用的,但是如果你的rsync比较老,你将不得不用下面两个replace+ /*/home/***filter:

  -f '+ /*/home/' \ -f '+ /*/home/**' \ 

以下是使用filter的替代方法:

 cd source && \ rsync -aR 110/var/lib/mysql 110/home 120/var/lib/mysql 120/home destination 

也就是说,您将所有源目录作为parameter passing给rsync ,然后将目标目录全部传入一个命令中。 在这种情况下,您必须确定使用-R选项,以便您的源目录path保留在目标中。