我想使用 rm -r 命令在其所在目录中取消删除我删除的一个大文件。该文件位于 1TB 的 USB 外置硬盘上。文件删除后,磁盘上没有任何内容写入,我只是卸载了它,然后才意识到自己的错误。我很确定我知道文件的名称,不过,如果能够查看先前的文件列表,以防万一又误删了另一个文件,那就方便了。
我见过这个问题: 如何取消删除 btrfs 分区上的文件?
我尝试了那里的建议,但没有成功:
./btrfs-undelete /dev/sdb1 mydir/file.name
Searching roots... found 0 roots.
rm: cannot remove '/tmp/btrfs-undelete.19720': No such file or directory
Didn't find 'mydir/file.name'
因此我感到很困惑。任何建议都将不胜感激。
答案1
我想我做到了。
我首先
btrfs-find-root /dev/sdb1
这给了我一个很长的列表。我感兴趣的是:
Well block 65626112 seems great, but generation doesn't match, have=1000, want=1001
由于空间不足,所以我现在安装了另一个硬盘。然后我做了:
btrfs restore -t 65626112 /dev/sdb1 /media/usb
使用我从上一个命令中找到的 65626112。它现在正在将文件从 btrfs 文件系统还原到 /media/usb,我可以复制任何我想要的文件并删除其余文件。如果我仍然找不到我想要的文件,我可以使用列表中的下一个块,直到找到为止。