找回密码
 注册
关于网站域名变更的通知
查看: 351|回复: 1
打印 上一主题 下一主题

用 grep 如何恢复误删的文本文件

[复制链接]
  • TA的每日心情

    2019-11-20 15:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-3-9 10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x

    ( g5 y, s# w1 W4 ?7 ^9 L作为长期的电脑使用者,肯定会有误删文件的经历,在 Mac OS X 和 Windows 上删除的文件都会默认进 “回收站”。在 Linux 上如果事先没有用别名(alias)修改默认的 rm 功能,rm 后文件就会丢失,幸运的是,在一般的删除文件操作中,Linux 并不会立即清空存储该文件的 block 内容,而只会释放该文件所占用的 inode 和 data block,Linux 上 rm 的过程其实就是将 inode bitmap 和 data block bitmap 中的相应标识设为空闲状态的过程,并不涉及到真正的数据,这也是为什么在 Linux 下删除大文件这么快速的原因,因为大文件所占的磁盘根本就没有清空。所以,如果我们能找到文件对应的 inode,由此查到相应的 data block,就可能从磁盘上把已删除的文件恢复出来,很多文件/磁盘恢复工具都是这么做的。
    ! U2 v/ x! }+ S) ]# o% h4 _' v) [3 G8 b6 [  [' J8 c, K; s
    一般来说二进制文件、库文件等删除后都可以从其他 Linux 拷贝恢复,不是很要紧,如果自己辛苦写的脚本或者配置文件误删了就杯具了。误删这种蠢事经常在 VPSee 身上发生,最近一次是在今年年初的时候,开了 screen 多次 ssh 到不同服务器上,在前后切换的过程中删除了一个很肯定的配置文件,后来发现删的文件是对的,可惜在一台错误的服务器上,本来应该在 A 服务器上删除 file.txt 结果在 B 服务器上删除了 file.txt,多个 screen 和 ssh 把自己搞晕了,而且主机名没有安排好,多台机器都是用的 localhost,不利于识别当时的环境。如果使用 Linux 的时候不幸误删了一个文本文件怎么办呢?" q  L$ {9 d3 O5 [

    ) X  K  ]6 y: u3 m先临时建一个文本文件 vpsee.log 做测试,然后删除这个文件:( f& C9 s) j3 ^) n

    0 M1 G) ], f/ {* C2 c6 M
    • $ echo "important log file for vpsee.com" > vpsee.log
    • $ cat vpsee.log
    • important log file for vpsee.com
    • $ rm vpsee.log
      2 B. `: q9 B! u7 f% U* F
    - w  Z# O. S* H$ ?
    如果能记住刚才删除文件中的某个关键字的话可以用 grep 搜索整个 /dev/sda1,-a 标志位的意思是把 /dev/sda1 这个分区看成是文本形式的(分区本身是二进制形式的),-B 10 -A 100 的意思是如果找到关键字就打印出其前10行和后100行的内容:- p; }' l0 ~, }) X/ _; C6 ^

    2 D. K) ~7 D) O8 x% M# P' O* L6 C: E
    • # grep -a -B 10 -A 100 'vpsee.com' /dev/sda1 > tmp.txt
      2 O0 z8 \5 k/ {. H9 ?" m

    / D9 Y4 d: U  K0 F在一堆 @ 之间可以找到我们刚才删除的内容:
    ! F% r! y9 x9 o2 ?+ ?1 M9 Z# ^; o& B: R
    • $ vi tmp.txt
    • ...
    • @$^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@Ç^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@è^K^@^@^@
    • ^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^Q^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@è^K^@^@×^@
    • ^@^@important log file for vpsee.com
    • @
    • @
    • ...
      " x. ]+ C7 u& t# E8 Y. |/ I; w

    # V- i: Q6 d# |/ N- d3 F7 M" P. H0 M! `# \: b6 T
    当然,如果误删了二进制、doc、png/jpg/gif 之类的文件,可以用一些第三方 ext2/ext3 文件恢复工具帮助恢复文件,比如 TestDisk, PhotoRec 等。0 z7 v+ V" G; ^5 B
    5 S: O8 R6 n/ ^: e5 ?7 m% P

    该用户从未签到

    2#
    发表于 2020-3-9 17:19 | 只看该作者
    用 grep 恢复误删的文本文件
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-25 17:37 , Processed in 0.171875 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表