rsync可以通过以下选项与传统mv非常类似,优于传统文件夹:
rsync -axvvES --remove-source-files source_directory /destination/
然而,我似乎无法做到的一件事是删除原来的目录。 --remove-source-files标志就是这样做的,除去源文件,而不是源目录。 我希望有一个--remove-source-directories标志,但是没有。
我该如何处理? 我想我可以在移动之后发出一个rm -fr ,但是我宁愿将这个过程全部保存在一个进程中,而不是引入潜在的错误。
我还没有find一个一步到位的命令,但是由于rsync仍然比rm -rf执行得更好(特别是如果你有很多目录的话),这里有两个执行“移动”的 rsync命令:
rsync -av --ignore-existing --remove-source-files source/ destination/ && \ rsync -av --delete `mktemp -d`/ source/ && rmdir source/
使用“ rm -rf ”具有固有的竞争条件,你可以删除在rsync和rm调用之间创build的文件。
我更喜欢使用:
rsync –remove-source-files -a服务器:incoming / incoming / &&
ssh服务器find传入-type d -delete
这不会删除目录,如果他们不是空的。
为什么不在你的rsync之后添加rm -rf source_directory呢?
rsync -axvvES --remove-source-files source_directory /destination/ && rm -rf source_directory
每个命令行程序(idealy)都是为了完成一个特定的任务而完成的,你可以把几个命令粘在一起来完成更复杂的任务。