2012-04-28 50 views
0

我需要编写一个将文件移动到目标位置(关闭卷)的脚本,删除原始文件和目录,然后将它们移回原始位置,同时保留所有属性。如何修改目录树以使最低级别的目录第一个和最高级目录最后一个操作?

这个概念在算法上相当简单,然而我使用的真正挂断是在我使用rsync时正确地递归树。

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

UPDATE:

归根结底,这似乎这样令人满意的伎俩:

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} ./ 

它留下的文件夹在工作目录,但由于它的初始文件夹正确地覆盖在移动属性回来,这是令人满意的,最后我可以留下剩余的空目录。

+0

我不明白什么是不满意你目前的命令。您需要首先创建目标目录,然后填充它们,您希望以不同的方式做什么?如果问题是删除的顺序,你想要什么,而不是任何适合的“--delete- *”选项? – Gilles 2012-04-29 17:41:40

回答

1

find命令有一个-depth开关,使它的行为像你所要求的。

相关问题