如果我启动以下命令来恢复linux上丢失的文件:
grep -a -B 150 -A 600“class SuperCoolClass”/ dev / sda10> /tmp/SuperCoolClass.repair
我真的需要“-a”吗? 我们需要从“sda10”恢复一些已删除的文件(破坏)并且我们有一堆要恢复我相信删除-a会更快。
我认为文件在磁盘上但不是二进制文件。
THX
答案 0 :(得分:7)
您正在处理的文件是/dev/sda10
grep
将假定包含二进制数据。为了将其视为文本(您正在寻找),您需要-a
,否则grep
将只打印Binary file /dev/sda10 matches
此外,由于任务是IO而不是CPU限制,因此在任何情况下都不会有很大的性能提升。
将来你自己测试这样的东西很容易:
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 "whatever" /tmp/recovery > /tmp/recovery.whatever
答案 1 :(得分:1)
要恢复您意外删除/覆盖的文本文件(仅限文本文件)(假设您记住该文本文件中的短语)
通过使用
卸载目录来确保文件的安全性 umount /home/johndoe
。
运行
grep -a -A800 -B800 'search this phrase' /dev/sda3 | strings>recovery_log.txt
这需要一段时间。即使命令正在运行,您也可以使用任何文本编辑器浏览文件 recovery_log.txt 。