如何在linux文件系统中恢复已删除的文件(快一点)?

时间:2012-02-20 01:20:34

标签: linux

如果我启动以下命令来恢复linux上丢失的文件:

  

grep -a -B 150 -A 600“class SuperCoolClass”/ dev / sda10> /tmp/SuperCoolClass.repair

我真的需要“-a”吗? 我们需要从“sda10”恢复一些已删除的文件(破坏)并且我们有一堆要恢复我相信删除-a会更快。

我认为文件在磁盘上但不是二进制文件。

THX

2 个答案:

答案 0 :(得分:7)

您正在处理的文件是/dev/sda10 grep将假定包含二进制数据。为了将其视为文本(您正在寻找),您需要-a,否则grep将只打印Binary file /dev/sda10 matches

此外,由于任务是IO而不是CPU限制,因此在任何情况下都不会有很大的性能提升。

将来你自己测试这样的东西很容易:

  • 创建虚拟10Mb磁盘:dd if=/dev/zero of=testfs bs=1024 count=10000
  • 创建文件系统:mkfs.ext4 testfs
  • 通过环回安装:mount -o loop ./testfs /mnt/test/
  • 复制虚拟文件系统上的一些东西
  • 卸载:umount /mnt/test
  • 使用不同选项
  • 在测试文件上运行grep

EDIT 我刚想到你可能正在寻找命令'/usr/bin/strings'而不是

类似的东西:

  • 从破坏的磁盘中提取所有可打印的字符串:/usr/bin/strings -a /dev/sda10 > /tmp/recovery
  • 对于不同的字符串,只对文本进行多次grep:grep "whatever" /tmp/recovery > /tmp/recovery.whatever

答案 1 :(得分:1)

要恢复您意外删除/覆盖的文本文件(仅限文本文件)(假设您记住该文本文件中的短语)

  • 通过使用

    卸载目录来确保文件的安全性

    umount /home/johndoe

  • 查找文件夹所在的硬盘分区,例如 sda3
  • 以root身份切换到终端。
  • 运行

    grep -a -A800 -B800 'search this phrase' /dev/sda3 | strings>recovery_log.txt

  • 这需要一段时间。即使命令正在运行,您也可以使用任何文本编辑器浏览文件 recovery_log.txt