Linux誤刪大文件的一個可能解救辦法

描述:某個網友說他在進行md5指紋對比某文件的時候,另外一個同事在另外一個窗口刪除了該文件,然后順嘴跟他說了下,這時候他意識到同事可能是誤刪除了,于是,他利用了以下辦法來進行解救:

操作順序如下:

1)網友的操作:

[root@C67-X64-A0 ~]# ls -l /test.img 
-rw-r--r-- 1 root root 2147479552 7月  29 15:18 /test.img
[root@C67-X64-A0 ~]# du -sh /test.img 
2.0G/test.img
[root@C67-X64-A0 ~]# md5sum /test.img

2)網友同事的操作:

[root@C67-X64-A0 ~]# rm -rf /test.img 
[root@C67-X64-A0 ~]# ls /test.img
ls: 無法訪問/test.img: 沒有那個文件或目錄
網友同事可能意識到誤操作了,立馬喊了網友,網友一看媽蛋,這文件我下了老半天的,你現在刪除不是捉死么!

3)網友立馬在自己的窗口使用 Ctrl+Z,立刻暫停 md5sum

[root@C67-X64-A0 ~]# md5sum /test.img 
^Z
[1]+  Stopped                 md5sum /test.img

這里利用的一個原理就是:如果有其他程序正在使用這個文件的話,Linux 不會真正刪除這個文件(即使執行了 rm 命令)。我們在刪除命令 rm 執行完之前暫停 md5sum,這樣 test.img 就一直會被 md5um 占用而不會真正被 rm 刪除。

4)開始恢復之路

[root@C67-X64-A0 ~]# jobs -l
[1]+  4254 停止                  md5sum /test.img

使用 jobs 可以看到被暫停的 md5sum 的進程號4254,然后查看這個進程打開了哪些文件:

[root@C67-X64-A0 ~]# ls -l /proc/4254/fd
總用量 0
lrwx------ 1 root root 64 7月  29 15:31 0 -> /dev/pts/0
lrwx------ 1 root root 64 7月  29 15:31 1 -> /dev/pts/0
lrwx------ 1 root root 64 7月  29 15:31 2 -> /dev/pts/0
lr-x------ 1 root root 64 7月  29 15:31 3 -> /test.img (deleted)
[root@C67-X64-A0 ~]# cp /proc/4254/fd/3 /test.img
[root@C67-X64-A0 ~]# ls -l /test.img 
-rw-r--r-- 1 root root 2147479552 7月  29 15:36 /test.img

一次有驚無險的操作,數據得以恢復。







原創文章,作者:Net21-冰凍vs西瓜,如若轉載,請注明出處:http://www.www58058.com/26688

(0)
Net21-冰凍vs西瓜Net21-冰凍vs西瓜
上一篇 2016-08-02
下一篇 2016-08-02

相關推薦

  • btrfs文件系統及管理

      什么是btrfs? Btrfs(B-tree文件系統,通常念成Butter FS,Better FS或B-tree FS),linux文件系統,具有寫時復制COW(copy-on-write),改善ext3文件系統單文件大小限制,并加入其他特性,如可寫快照,快照的快照,內建RAID,子卷(subvloume),專注于容錯,修復和易于管理。單文件…

    系統運維 2016-05-13
  • python Django分頁

    自定義html_helper.py  —>  Page_helper類 #coding:utf-8 from django.utils.safestring import mark_safe class Page_Helper(object):    …

    Linux干貨 2016-08-22
  • LVS+keepalived高可用web集群搭建的疑惑

    參考文章是這一份:http://ox0spy.github.io/debian/2014/06/26/setup-lvs-and-keepalived-on-debian/ 一:操作系統與ip               ip地址形式:19…

    Linux干貨 2016-02-14
  • 基于Redis的開源分布式服務Codis

    Redis在豌豆莢的使用歷程——單實例==》多實例,業務代碼中做sharding==》單個Twemproxy==》多個Twemproxy==》Codis,豌豆莢自己開發的分布式Redis服務。在大規模的Redis使用過程中,他們發現Redis受限于多個方面:單機內存有限、帶寬壓力、單點問題、不能動態擴容以及磁盤損壞時的數據搶救。 Redis通常有3個使用途徑…

    Linux干貨 2015-02-25
  • 循環的特殊用法及函數

    while特殊用法 while read 變量名;do 循環體 done<文件路徑(將文件中的每一行依次讀入循環體,賦值給變量)   (())可以實現C語言風格的變量操作 for循環特殊格式 for((控制變量初始化;條件判斷表達式;控制變量修正表達式)) do 循環體 done 控制變量初始化僅在循環開始時執行一次,進行條件判斷成立后執行循…

    Linux干貨 2016-08-21
  • bash腳本編程

    Linux腳本編程中bash常用的測試類型:                 整數測試:       -gt greater than  大于    …

    Linux干貨 2016-08-18
欧美性久久久久