我需要编写一个脚本,将文件移动到目标位置(关闭卷),删除原始文件和目录,然后将它们移回原始位置,同时保留所有属性。
这个概念在算法上相当简单,但是当我使用 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 剩余的空目录。