我在通过 ssh 连接时错误地删除了一个文件。我该如何恢复该文件,或者,ubuntu 是否有类似垃圾箱之类的东西?
答案1
rm
与从 GUI 中删除相比
如果您使用了命令rm
,您确实删除了该文件。数据不再可从文件系统访问 - 除非该文件有另一个硬链接(不常见),或者您删除了符号链接。
实际数据可能仍在磁盘上,在文件系统假定未使用的磁盘块上。如果您想恢复它,您不应该写入磁盘,因为它可能会重复使用保存数据的磁盘空间。您可以尝试使用适合您使用的文件系统的工具对文件进行常规数据恢复。
对于默认的 ext4 文件系统,请参阅: 是否有适用于 ext4 的恢复软件?以及下面链接的问题的大部分答案。
CLI 的垃圾
可以从命令行使用垃圾箱,但默认情况下不设置。该软件包trash-cli
包含命令行工具,用于使用桌面环境的垃圾箱。
有诸如 等命令trash-put
;trash-list
名称
相当长 - 你可以定义 shell 别名,例如
alias tp='trash-put'
或者
alias del='trash-put'
然后使用del
而不rm
是以更安全的方式删除文件或目录。
正如下面链接的答案中所建议的那样,可以使用别名rm
,用 替换实际rm
命令trash-put
,但有多个理由不这样做;其中一些是:
- 例如,与 Ubuntu 中的“GNU coreutils”相比,的实现
trash-put
没有经过充分测试。rm
- 默认的选项
rm
并不全都受支持trash-put
- 其他人迟早会使用带有别名的 shell,并且
rm
从技术上讲会看到一个非常不完整的命令。 rm
当需要真实时,需要特殊的语法- 一般来说,摆弄非常危险的工具并不是一个好主意,至少会造成混乱。
话虽如此,看看@enzotib 的回答在用 rm 删除的文件/目录可以恢复吗?如何配置别名。
答案2
有一种特殊情况,你可以找回已删除的文件 - 当它仍在某个程序中打开时。你只需要找出哪个程序正在使用它。
我保存了 Patrick 在 Unix 和 Linux Stack Exchange 上给出的这个答案,但没有保存原始答案的链接。
如果文件仍在程序中打开,则恢复已删除的文件。
如果文件仍处于打开状态,您可以通过转到 /proc/PID/fd 来恢复它,其中 PID 是文件仍处于打开状态的程序的 pid。此目录包含程序的所有打开的文件描述符,您可以像访问普通文件一样访问它们,因此您可以将文件从 /proc 中复制出来。– Patrick 12 月 18 日 4:44 和 – camh 12 月 19 日 7:12 - Unix 和 Linux stackexchange