我希望这是提出这个问题的正确位置。
试图移动一个大目录" mydirname
" (abt900GB),在远程linux服务器中,从/abc/source
到/xyz/target
;我在source
目录中使用了以下命令,
mv mydirname /xyz/target/ &
然而,过了一段时间后,这个过程中断了并且出错了,
mv: cannot stat `mydirname/GS9/set04/trans/run.3/acc': Stale file handle
mv: cannot stat `mydirname/GS9/set04/trans/run.4/amc': Stale file handle
.
.
.
and many more such messages mentioning different subdirectories locations.
问题是,该过程已经移动了大约300GB的数据。但是,有许多目录没有完全移动。类似地,在同一台机器上运行的另一次传输(大约500 GB)出现了问题。
此外,我不再参加同一个工作会议。我已断开连接并重新连接到远程服务器。
如果你帮助进行以下查询,那就太棒了。
是否有可能某些文件没有完全转移(我已经在' cp'命令中看到过这样的情况:如果进程中断,则会导致目标文件的大小较小
如何恢复流程,以免丢失任何数据。威尔' mv'命令够了吗?或者是否有任何可以在后台工作的特殊命令。
否则,是否有命令撤消该过程并恢复' mydirname
'到原始位置' source
'。
答案 0 :(得分:4)
使用" rsync"完成这样的工作:
rsync -av --delete mydirname/ /xyz/target
它将验证所有文件是否已移动,长度是否正确,时间戳是否正确,并将删除任何剩余的垃圾。
您可以先进行"干运行"看看损害赔偿是什么:
rsync -avn --delete mydirname/ /xyz/target
这贯穿整个rsync过程,但实际上并没有做任何事情。运行此测试来检查命令语法并查看它是否会按照您认为应该执行的操作通常是一个好主意。
" rsync"命令实际上更像是一个副本" cp"而不是一个举动" mv"。它会保留源文件,如果您确信正确传输了everthing,可以在以后删除它们。