linux找回rm的文件夹,Linux rm 文件恢复
Linux下刪除命令 rm 大家肯定是熟悉得不能再熟悉了,然后有時候卻陰溝里翻船不小心刪除了某些重要的文件,想死的心都有了。。。。現在我們就來看看被誤刪除的文件要如何恢復?
Linux文件系統
Linux的文件系統(如ext3、ext4)由三部分組成:inode,data block,super block。Super block:記錄此文件系統的整體信息,包括inode/block的總量、使用量、剩余量,以及文件系統的格式和相關信息;
inode:記錄 文件的屬性,一個文件占用一個inode,同時記錄此文件的數據所在的block號碼;
block:實際記錄文件的內容,如果文件比較大,會占用多個block;
每個inode和block都有編號,而每個文件都占用一個inode,inode內則有文件數據對應的block號碼。因此,如果找到了文件的inode,自然就可以讀取到文件的數據內容了。
當我們將一個文件刪除時,Linux并非真實地刪除磁盤里的數據,而是將文件的inode節點對于對應的扇區指針清除,同時釋放這些數據對應的block,只有但這些block被系統重新分配時,那些被刪除的數據才會被覆蓋,最終無法恢復。
因為當我們誤刪數據時,應立刻卸載所在的文件系統,然后進行恢復。
Default
$ umount /dev/partition
$ mount -o remount,ro /dev/partition
1
2$umount/dev/partition
$mount-oremount,ro/dev/partition
grep
通過grep命令我們可以簡單地進行文件恢復:
Default
grep -a -B 50 -A 60 'some string in the file' /dev/sda1 > results.txt
1grep-a-B50-A60'some string in the file'/dev/sda1>results.txt
說明:
Default
-a:把二進制文件當作文本文件
-A,-B:字符串的后幾行和前幾行
1
2-a:把二進制文件當作文本文件
-A,-B:字符串的后幾行和前幾行
不過grep命令比較麻煩的是,必須記得文件中的部分內容,而且如果有相同的其它文件也會被輸出到result.txt,結果比較混亂;同時,由于是整個分區掃描,時間會比較漫長。
debugfs & extundelete
首先,我們先創建一個文件,然后將其刪除:
Default
$ cat /proc/cpuinfo > /tmp/testrm.txt
$ rm /tmp/testrm.txt
1
2$cat/proc/cpuinfo>/tmp/testrm.txt
$rm/tmp/testrm.txt
使用系統自帶的 debugfs 命令:
Default
$ sudo debugfs
debugfs: open /dev/sda2
debugfs: ls -d /tmp
1
2
3$sudodebugfs
debugfs:open/dev/sda2
debugfs:ls-d/tmp
可以看到被刪除的文件testrm.txt,其中的<657573>就是文件的inode編號:
Default
……
<657573> (92) testrm.txt
……
1
2
3……
<657573>(92)testrm.txt
……
使用extundelete進行恢復:
Default
$ extundelete /dev/sda2 --restore-inode 657573
1$extundelete/dev/sda2--restore-inode657573
然后我們就可以在當前目錄下的RECOVERED_FILES 目錄看到恢復的文件了
Default
$ ls -al RECOVERED_FILES
-rw-r--r-- 1 root root 4.0K 7月 3 15:01 file.657573
1
2$ls-alRECOVERED_FILES
-rw-r--r--1rootroot4.0K7月315:01file.657573
總結
以上是生活随笔為你收集整理的linux找回rm的文件夹,Linux rm 文件恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux修改su的PAM配置文件,li
- 下一篇: linux xargs命令,xargs