以下按预期工作:
rsync --delete-after -uavh --progress /home/usr/test1/cool-beans /home/usr/test2/
rsync --delete-after -uavh --progress /home/usr/test1/pineapple /home/usr/test2/
rsync --delete-after -uavh --progress /home/usr/test1/pizza /home/usr/test2/
rsync --delete-after -uavh --progress /home/usr/test1/dragons /home/usr/test2/elephant/
然而,当我将其简化为:
rsync --delete-after -uavh --progress \
/home/usr/test1/cool-beans /home/usr/test2/ \
/home/usr/test1/pineapple /home/usr/test2/ \
/home/usr/test1/pizza /home/usr/test2/ \
/home/usr/test1/dragons /home/usr/test2/elephant/
我收到一个错误。它不是根据需要仅将文件夹“dragons”放入“elephant”中,而是将所有“cool-beans”、“pineapple”、“pizza”和“dragons”放入“elephant”中,这是不希望的。如何以简化的方式编写它(没有第一个示例的重复),同时实现相同的输出?谢谢!
您不能在单个
rsync
命令中包含多个目标。当您尝试“简化”版本时发生的情况是,除了最后一个路径之外的所有路径都被视为从中复制数据的源,因此您不仅从 、 、 以及自身cool-beans
复制pineapple
(pizza
重复dragons
)test2
。--dry-run
当第一次尝试某些东西时,这个选项非常有用。您的通话可以简化为两次通话。要么完整:
或者使用函数来封装公共元素:
如果您可以保证大多数路径以固定组件开头,您可以通过提供公共路径(必须已经存在)作为第一个参数来进一步简化函数调用的可见使用:
然后调用:
或者:
你不能。
rsync
可以接受多个源,但只能接受一个目的地。rsync 必须调用多次。但是,您可以将相同的 rsync 和选项部分放入变量中并调用它: