意外从文件中删除

Gue*_*est 6 text-processing

我正在编辑 vi

我试图将我论文的一小部分复制到一个临时文件中

.,.+40!temp.  
Run Code Online (Sandbox Code Playgroud)

但我写了

.,.+40!.  
Run Code Online (Sandbox Code Playgroud)

因此,这删除了文件中重要内容中的所有内容(除了那 40 行)。有什么方法可以检索我最初拥有的文件(大约 30 页),还是必须从头开始?

LSe*_*rni 4

我不熟悉您使用的命令,但如果您尚未退出vi,该U命令应该撤消更改。

否则,按期望值降序排列:

  • 在某些情况下,文件的先前版本将被保存为filename.ext~(可能不是您的情况,或者您甚至没有发布,但仍然值得一试)。

  • 如果您的文件系统允许(ext3 或 ext4),则可以使用extundelete恢复该文件的早期版本及其交换。如果只有交换是可恢复的,strings则可用于提取大片文本。您仍然需要重新组装它们,但这与从头开始重写完全不同。

  • 否则,如果您记住一些关键词或短语,则可以恢复大部分文本。这可能是一个相当漫长的操作。您可以将整个分区筛选到stringsviadd并将输出发送ssh到另一台机器,以免冒覆盖本地磁盘可用空间的风险(如果您有另一个可用分区,请务必使用它)。

  • 同样,如果系统没有重新启动,您具有 root 访问权限,并且 /proc/kcore 伪文件的大小合理,您可以使用 从中提取原始文本并将其strings转储到文件中。那么grep就会成为你的朋友。您可能还可以使用其他访问内存的方法。