削除してしまったファイルを取り戻したい

概要

zfsのsnapshotをとった時のディレクトリの様子はファイルシステム直下の.zfsディレクトリに入ってる。間違えてファイルを削除してしまった時などはここからファイルをコピーして来ればよい

日記

ファイルサーバ上にあるファイルを間違えて消しちゃったよ( ・ω・)と旦那に言われて、この間zfsと格闘したときにsnapshotをとってあった事を思い出した。
zfsはsnapshotを簡単にとれるからバックアップが超簡単!という説明を読んでいたので、これから消してしまったデータを救い出してあげれば良いんじゃないかと思い調べてみた。
snapshotをとった時の状態にデータを戻す事をロールバックと言うらしい…が、ロールバックしてしまうと、snapshotをとった後に作ったファイルは消えてしまうらしい。
1つのファイルを取り戻すために他のファイルが失われてしまっては困る。
ファイルを削除した後に変更を加えたファイルを別のファイルシステムにコピーしてからロールバックをするという手も考えたけど、余りにスマートではない。
絶対にゴミ箱的なsnapshotからファイルを選んで復旧する手段があるはずだ!と調べたら

ls -al オプションでリストを表示しても、.zfs ディレクトリはデフォルトで 表示されませんが .zfs/snapshot ディレクトリを直接指定してリストを表示 してみます。

このスナップショットのデータは、読み込み専用で参照する事が可能なので、一部のファイル を戻したい時は、ここのディレクトリから直接コピーしてファイルを復旧する事ができます。

http://blogs.sun.com/yappri/entry/zfs_snapshot

とのこと。試しにzfsのプールをマウントしたディレクトリでcd .zfsってしたらsnapshotというディレクトリがあってそのしたにスナップショットの名前のディレクトリがあってさらにその中にファイルシステムディレクトリ構造がそのまま入ってました。
旦那に消したファイルの名前を聞いてコピーして復旧完了。おめでとう