我想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保留在目标中。