鈴木うどんの横須賀おもしろ生活

撮った写真や思ったことや技術ネタなど。出来るだけ大きなディスプレイで見ると良いと思う。ここでの発言は個人の見解であり、所属する組織の公式見解ではありません。

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 1227 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

ここで冷静になれなかったら取り返しの付かないことになるところだった。

それからどうなった

  1. 慌ててfsをreadonlyにしたが途方にくれる
  2. google先生ext4 restore delete files などのキーワードで検索すると最近ではext4magicがイケてるとわかる
  3. apt-get install ext4magic する
  4. man ext4magicするが酔っぱらってるし英語だしでよくわからない
  5. ext4magic /dev/md0 -f "udonchan/backup.tar" するといくらか inode 拾えることがわかるが酔っぱらってて(ry
  6. ext4magic /dev/md0 -r -f "udonchan/backup.tar" すると0バイトのbackup.tarできたよー\(^o^)/
  7. あきらめて寝る(これがよかった)
  8. 起きたら頭回ってなんとかなった

教訓

  • /home を分離しておいて本当によかった
  • お酒飲みながら大事な作業するのはやめた方がよい