mv 命令失败后文件可以恢复吗?

mv 命令失败后文件可以恢复吗?

mv * ..在 Unix 中曾经将目录中的所有内容移动到其父文件夹中。当前目录和父目录中都有一个名为“Downloads”的文件夹。父目录中的文件夹一开始是空的。

执行此命令后,我回到了命令提示符,但 shell 已冻结,我不得​​不启动新的 SSH 会话。现在,父目录中的 Downloads 文件夹仍然是空的,我试图移动的 Downloads 文件夹不再存在。

有没有办法找出这些文件在哪里,或者此时是否需要数据恢复程序来找到这些文件,因为文件系统中不再有任何内容指向它们?

答案1

您可能需要运行文件系统检查,以防某些节点丢失:

fsck -fyv /dev/sdaX

您应该sdaX根据实际分区进行更改。但据我所知,如果文件被删除,它将永远消失。这就是为什么我总是运行cp,当我看到一切正常时,我就会运行rm。您也可以尝试使用数据恢复工具,但不能 100% 保证您恢复所有内容。一旦你空白了就永远不会回头

答案2

你需要小心动量cp:它们是不可原谅的,你很容易丢失文件,例如:-

mv * ..    ; # moves from current directory to parent, overwriting duplicates

我建议始终使用-n或者-我以防止覆盖。我还建议-v列出已完成的工作。有一次我打错了(我按到了键盘上回车键旁边的 # 键):-

mv * other/#

这会将第一个文件移动到“other/#”,然后用其他每个文件覆盖相同的“#”,只剩下“#”,其中包含最后移动的文件!我再也没有这样做过。

因为我也在 Windows 上使用 TCC,所以我输入了以下内容,不假思索地期望移动到目标目录中同名的文件:-

mv -iv * other/*    ; # In TCC, MOVE * other\* would do what I wanted

这通常会失败,除非目标中的最后一个扩展名是目录,在这种情况下当前目录中的所有文件以及目标中的所有其他文件已移至该处。

至于你的文件发生了什么:如果你知道它们的名字,请使用寻找从父目录中查看是否将它们移动到了意外位置。如果不起作用,请尝试父级的父级。您可能会对它们的最终位置感到惊讶。

如果你不相信自己能记住这些选项,请将以下命令(或类似命令)添加到~/.bashrc或者~/.bash_aliases:-

alias mv="`which mv` -iv"

相关内容