ファイルの復元(Linux)
後輩君からのネタ提供、バックアップ用のシェルを作っててできたと思ってテスト兼開発機で動かしたら、SEさんがテスト運用中だったのに、DBのデータフォルダ以下をサクっと消しちゃったらしい。(ちなみに最近のDBのバックアップも無いらしい)
シェルは確認しなかったけど、たぶん、
cd hoge rm -r ./ cp -r /hoge2 ./
とかやって、本番のパスにしたら、hoge ディレクトリがなくてcd できてないのに、rmで消えちゃったんだろっ(-д☆)キラッ
自分もやったことあるからすぐわかったわ、わっはっは!
で、なんとかならんけ?とかって話で、消したものはムリでない?と言ってたのですが、復旧できてしまったので、メモ
ファイルを消してしまっても、「プロセスが終了していない場合」は/proc内にファイルディスクリプタの情報があるんで、そこからcpとかで取り出せば復旧可能らしい。
lsof | grep deleted | grep hoge user01 1683 user01 10u REG 8,1 4194312192 835691 /hoge.dat (deleted) user01 1683 user01 11u REG 8,1 786440192 835652 /hoge.dat2 (deleted) のとき、 cp /proc/1683/fd/10 /tmp/hoge.dat cp /proc/1683/fd/11 /tmp/hoge.dat2 のような感じ cp /proc/プロセスID/fd/ファイル記述子 復元先
今回は、あわててサービスや、サーバの再起動をしなかったので、ファイルが残っていました。ファイル復旧後もデータベース的には壊れている状態なので、今度はDB屋さんが出てきてなんかコマンドいくつかいれて起動後、ダンプとれたのだけど、結局おかしくて、最終的にはシステムのバックアップからDBを戻して古いデータになったところに、なんとかとれたダンプで復旧できたみたいです。
<参考URL>
削除したファイルをlsofで復元する(DevIT)
カテゴリー: Linux
最近のコメント