FreeNASが採用しているファイルシステムZFSの便利機能、「スナップショット」。本記事は、過去のスナップショットから、ファイルを個別に取り出す方法と、過去に作成したスナップショットの時点にロールバック(巻き戻す)方法を解説します。特に前者の方法は「間違って大事なファイルを削除/上書きしてしまった!」といった場合に最適です。
FreeNASについては、こちらの記事に紹介とインストール方法をまとめています。
ちなみに、ロールバック機能は、FreeNASのWebUIから簡単に操作できますが、個別復旧に関してはコマンドライン操作になります。不明な点があればコメントください。
スナップショットを削除する方法はこちら
過去のスナップショットからファイルを個別に取り出す方法
まさに最強ファイルシステムZFSの最大のメリットでもある「スナップショット」の最大の売りです。ターミナルソフトから作業します。WebUIの”Shell”メニューからも同じことができます(使いやすくはないです)。
1.FreeNASにリモートログインする
私はターミナルソフトとしてTeratermを使っています。
2.データセットの直下へ移動
戻したいファイルがあるデータセットの直下まで移動します。
cd /mnt/tank/storage/
3.隠しディレクトリ.zfsへ移動
隠しディレクトリである.zfsへ移動します。このディレクトリはls -aしても見えません。
cd .zfs/
4.snapshotディレクトリへ入り、希望のスナップショットから必要なデータをコピーする
.zfsの中には、snapshotというディレクトリがあるので、その中へ入ります。
cd snapshot/
その下には、過去に保存したスナップショットの名前のディレクトリがあります。
これらのディレクトリはスナップショット当時のデータ構成が再現されたものなので、好きなファイルを、cpコマンドで救出します。
cp [救出ファイル] /mnt/tank/storage/
5.完了
いや、とても便利です。
過去のスナップショットの時点にデータを巻き戻す(ロールバック)する方法
この方法は、スナップショットを保存した時の状態に、データセット内のすべてのデータが巻き戻ります。すなわち、スナップショット保存後に保存したデータ類は全部無かったことになるので注意してください。この方法はランサムウェアやウイルス等でデータが全部消された/壊された場合とかに有効だと思います。
WebUIから行う方法(簡単)
1.FreeNASに設定したIPアドレスにブラウザからアクセスする
私の場合、192.168.0.100です。ログイン画面が現れるので、インストール時に設定したrootアカウントでログインします。
2.メニューバーの”Storage”をクリックし、引き続き”Snapshots”をクリック
スナップショットの一覧が表示されます。”Snapshot Name”の欄の”auto-“とあるものは、定期バックアップ機能で取られたスナップショットを意味しています。”Used”の欄は、そのスナップショットが取られたときから、次のスナップショットまでに、どれだけの差分があるかを表しています(このスナップショット機能は差分を記録します)。
3.戻したいスナップショットの「ロールバックボタン」をクリック
データセット名、スナップショットの名前(時間など)をしっかり確認してください。ロールバックボタンは、下図の赤枠で囲ったボタンです。
ちなみに、一番左は「Clone snapshot(スナップショットのクローン)」、真ん中は「Destroy snapshot(スナップショットの削除)」、右が「Rollback snapshot(スナップショットの復元)」です。
“Are you sure you want to rollback dataset to this snapshot state?”(このスナップショットの時点にデータセットを戻してもいいですか?)と聞かれるので、”Yes”を押してください。
コマンドラインから行う方法
1.FreeNASにリモートログインする
私はターミナルソフトとしてTeratermを使っています。
2.スナップショットを確認する
zfs list -t snapshot
というコマンドで確認できます。
3.ロールバックする
sudo zfs rollback tank/storage@auto-20190107.1400-2w
このように、zfs rollback [snapshot名]というコマンドでロールバックできます。
参考記事
https://blog.shiftky.net/how-to-restore-files-from-freenas-zfs-snapshot/
コメント