今天是資源回收日。來撿回我們的 rm -rf 檔吧。
Google了一下,Ubuntu 上大概有兩三套可以玩。因為我只是在 projects/ 下 rm -rf * 而已。所以不痛不癢。(目向遠方,滴淚打轉)
所以flat (text)檔才是我的重點,而非什麼 rm、jpg、或 mp3 檔;否則有其它的工具可對那些多媒體檔做復元。

ext2、fat,甚至連 ntfs 都有看來頗方便的工具,那 ext3 呢?有!ext3grep

因為 Ubuntu 還沒時間把它收進 package,所以要裝還是得靠它(tar)。解開後 ./configure && make && make install 。我的情況是要另外 apt install ext2lib-dev 與 g++ 才能過 ./configure 。

ext3grep 的用法不少,參見。以下簡述我的過程:

apt install gddrescue。as root:
# umount /home
# mount /dev/sdb3 /mnt/sdb3 ## 救援用大容量硬碟,因為我的sda容量渺茫…
# ddrecsue -r /dev/sda6 /mnt/sdb3/sda6image ## sdaN 視原來 /home mount 在哪個 /dev 下而定
# cd /mnt/sdb3/
# mkdir ext3grep
# cd ext3grep
# ext3grep /mnt/sdb3/sda6image --dump-names

此時我看了一下它生出來的 sda6image.ext3grep.stage2,我想回復的資料夾是
keitheis/Conquer,故:
# grep "keitheis/Conquer'" sda6image.ext3grep.stage2 ## 剛剛 dump-names 生出來的東西
50835 'keitheis/Conquer' 129126

當然,/mnt/sdb3 應該要比 /dev/sda6 的容量會比較安心。接著的指令會把在 129126 inode 後的 inode 檔通通恢復,不只是 Conquer 下,是指整個 /home。so in /mnt/sdb3/ext3grep
# ext3grep ../sda6image --restore-all --after=129126

/home 的資料就會開始行屍走肉到 RESTORED_FILES/ 下。接著就是檢視並選擇性 copy 回去的工作了。我的 Conquer 資料夾很早就建立了,所以它也幾乎把 90% 的 /home 抓出來。

註:試用 foremost 工具產生了一堆 inode 名的檔案,要再重新一一命名?不太人性。不過就相機的圖片而言也許沒差。