fbpx

風雲變色之 Linux 檔案誤刪救援

在 Windows 誤刪檔案有資源回收桶可以救回,就算資源回收桶也刪了目前也一堆成熟的軟體可以救回。那 Linux 可就不這麼幸運了,基本上大多數的 Linux Distribution 是沒有內建檔案救援的功能或程式,事實上誤刪檔案這件事在伺服器應用中本來就不太存在。但人有失足馬有失蹄,難免 rm -rf * 就下去了,這時候除了抱頭痛哭其實還有其他方法可以救回(當然不是尋求市面上的硬碟救援服務,除非你口袋夠深那沒話說)。基本上 Linux 使用的 ext 系統在設計上是很安全的,到了 ext4 更是安全,如果您的檔案系統還有開啟加密的功能話,那想救回誤刪檔案的路就更加遙遠了。有一次在 Linux 為了拯救重要檔案靠的就是 extundelete 這一套軟體,那麼讓我來介紹一下吧。

無論如何,一但發生硬碟檔案誤刪或損毀,第一件事就是重新掛載 partition 為 read-only,第二件事就是使用 dd 指令將原本的 partition copy 到另一個硬碟,至少建立了完整的分割區副本,一便不時之需。

首先先用 wget 下載 extundelete-0.2.0.tar.bz2 這個檔案,然後使用以下指令進行解壓縮

[root@server extundelete-0.2.0]# tar -xvf extundelete-0.2.0.tar.bz2

切換到解壓縮的目錄後先執行 ./configure

[root@server extundelete-0.2.0]# cd extundelete-0.2.0
[root@server extundelete-0.2.0]# ./configure
Configuring extundelete 0.2.0
configure: error: Can't find ext2fs library
[root@server extundelete-0.2.0]#

看來少了 ext2fs library,那麼參考以下指令用 yum 裝一下吧

[root@server extundelete-0.2.0]# yum install e2fsprogs-devel

再次執行 ./configure

[root@server extundelete-0.2.0]# ./configure
Configuring extundelete 0.2.0
Writing generated files to disk
[root@server extundelete-0.2.0]#

設定完成,接著執行 make 來編譯原始碼(這些動作我相信大家都很熟練了)

[root@server extundelete-0.2.0]# make
make -s all-recursive
Making all in src
[root@server extundelete-0.2.0]#

編譯好的執行檔在 src 目錄中,各位可以使用以下指令對整個 partition 進行掃描,就可以自動救回誤刪檔案,是不是很間單呢?

[root@server extundelete-0.2.0]# ./src/extundelete /dev/sda1 --restore-all

如果還是失敗就要嘗試其他方法了,其他方法可就很痛苦了,比如先掃描所有刪除的 node,再用程式分析的方式重組檔案,之前的測試沒有都成功過,如果下次有機會再與大家分享心得。

發佈留言