0

我需要编写一个脚本,将文件移动到目标位置(关闭卷),删除原始文件和目录,然后将它们移回原始位置,同时保留所有属性。

这个概念在算法上相当简单,但是当我使用 rsync 时,我遇到的真正问题是正确地递归树。

到目前为止,这似乎rsync -axvvES --remove-source-files source_directory /destination/是复制文件的最有效解决方案,但是,如前所述,由于大小限制,我不能简单地允许 rsync 递归树本身。最终我认为find可以用来向下钻取然后允许rsync运行,但是为了实现这个目标,我怎样才能先下降到最低点呢?find

更新:

最终,这似乎令人满意地解决了这个问题:

echo -e "Moving over... "
rsync -axvES --remove-source-files ${SRC_FILE_AND_PATH} ${DESTINATION_PATH}/
echo -e "Bringing back... "
rsync -axvES --remove-source-files ${DESTINATION_PATH}/${SRC_BASENAME} ./

它确实将文件夹留在工作目录中,但是由于它确实在移回时正确覆盖了初始文件夹上的属性,因此令人满意,最后我可以 rm 剩余的空目录。

4

1 回答 1

1

find命令有一个-depth开关,使其行为符合您的要求。

于 2012-04-28T20:44:38.600 回答