Linux の ext4 ファイルシステムで間違って上書きしたファイルを復旧させた
結論
ext4magic 最高!!!!111
やったこと
% ext4magic “デバイス名に” -r -a “このunixtimeから” -b “このunixtimeまで存在していた” -f “このファイル名のファイルを復旧する”
実例
/dev/md0 上の昨日の20:00から20:30の間まで存在していた udonchan/backup.tar を復旧させたい
% ext4magic /dev/md0 -r -a $(date -d "-1day 20:00 +%s") -b $(date -d “-1day 20:30 +%s) -f "udonchan/backup.tar"
どうしてこうなった
年末なので OSX をクリーンインストールしようとして ~ をバックアップしたが間違って上書きして消した。
具体的に?
~ をサーバ上にバックアップするぜ
% tar cf -C /Users - $USER_NAME | ssh $SERVER_IPADDR "cat > backup.tar"
OSXクリーンインストールしたから復旧したいけどsshの鍵がバックアップファイルの中だからnetatalk越しにマウントしてとりあえず鍵だけ取り出すか。(ビール飲みながら)
tar cf /$MOUNT_POINT/backup.tar .ssh
^^^
cとzをtypoしたぜ。
% ls -la backup.tar -rw-r--r-- 1 udonchan udonchan 0 12月 27 20:42 backup.tar ^^^
//_ ,", ‐=、:7,=ニー-- ,,_ マジで!? /〃 o l,〃o. l.l: : : : : :`ヽ、 /::,.-l.゙-゙ムl ゙ー゙-"'''ー、: : : : ::ヽ l>ゞ、,,ヽ〈;;;;;ノ==二二 ` 、: : : : ,,-"| ∧ 〈 ̄ 二二 ` ./ 二-二"、 ヽ: : : . ! ./ ヽ、ヽ、__,,__ /__ , ―'─ `ヽ、 !: : レ' ∨ `y'" , -、 r― 、 ! l: : | / l l ヽ l l: : ,.l、,,!, り,,,,,,, ノ ./ /: : rー 、_l_ `ー' ̄ `l_/ /: : : \  ̄ ` ー----‐‐' /: : : :
とりあえず、/homeをreadonlyにするか。(酔いが醒めて冷静になった)
% sudo mount -o remount,readonly /home
ここで冷静になれなかったら取り返しの付かないことになるところだった。
それからどうなった
- 慌ててfsをreadonlyにしたが途方にくれる
- google先生に ext4 restore delete files などのキーワードで検索すると最近ではext4magicがイケてるとわかる
apt-get install ext4magic
するman ext4magic
するが酔っぱらってるし英語だしでよくわからないext4magic /dev/md0 -f "udonchan/backup.tar"
するといくらか inode 拾えることがわかるが酔っぱらってて(ryext4magic /dev/md0 -r -f "udonchan/backup.tar"
すると0バイトのbackup.tarできたよー\(^o^)/- あきらめて寝る(これがよかった)
- 起きたら頭回ってなんとかなった
教訓
- /home を分離しておいて本当によかった
- お酒飲みながら大事な作業するのはやめた方がよい