13.2. Snapper スナップショットの作成

Snapper は、以下の種類のスナップショットを作成できます。
プリスナップショット
プリスナップショットは、ポストスナップショットの起点となります。プリスナップショットおよびポストスナップショットは密接に関係し、この間のファイルシステムの変更を追跡します。プリスナップショットはポストスナップショットの前に作成する必要があります。
ポストスナップショット
ポストスナップショットは、プリスナップショットの終点となります。結合されたプリスナップショットおよびポストスナップショットは比較の範囲を定義します。デフォルトでは、関連するポストスナップショットが正常に作成された後、バックグラウンド比較を作成するために新しい Snapper ボリュームが設定されます。
シングルスナップショット
シングルスナップショットは、特定時に作成されるスタンドアロンのスナップショットです。シングルスナップショットは変更のタイムラインを追跡するために使用され、後で戻る点があります。

13.2.1. プリスナップショットおよびポストスナップショットのペアの作成

13.2.1.1. Snapper を用いたプリスナップショットの作成

プリスナップショットを作成するには、以下を実行します。
# snapper -c config_name create -t pre
-c config_name オプションは、名前付き設定ファイルの仕様に従ってスナップショットを作成します。設定ファイルが存在しない場合は 「初期の Snapper セットアップ」 を参照してください。
create -t オプションは、作成するスナップショットの種類を指定します。許可されるエントリーは prepost、または single です。
たとえば、「初期の Snapper セットアップ」 で作成された lvm_config 設定ファイルを使用してプリスナップショットを作成するには、以下を実行します。
# snapper -c SnapperExample create -t pre -p
1
-p オプションは、作成されたスナップショットの数を出力する任意のオプションです。

13.2.1.2. Snapper を用いたポストスナップショットの作成

ポストスナップショットは、スナップショットの終点で、「Snapper を用いたプリスナップショットの作成」 の手順に従って親のプリスナップショットを作成してから、作成する必要があります。

手順13.2 ポストスナップショットの作成

  1. プリスナップショットの番号を確認します。
    # snapper -c config_name list
    たとえば、lvm_config 設定ファイルを使用して作成されたスナップショットの一覧を表示するには、以下を実行します。
    # snapper -c lvm_config list
    Type   | # | Pre # | Date              | User | Cleanup  | Description | Userdata
    -------+---+-------+-------------------+------+----------+-------------+---------
    single | 0 |       |                   | root |          | current     |
    pre    | 1 |       | Mon 06<...>       | root |          |             |
    上記の出力は、プリスナップショットの番号が 1 であることを表しています。
  2. 以前作成されたプリスナップショットにリンクされるポストスナップショットを作成します。
    # snapper -c config_file create -t post --pre-num pre_snapshot_number
    • -t post オプションは、ポストスナップショットの作成を指定します。
    • --pre-num オプションは、対応するプリスナップショットを指定します。
    たとえば、lvm_config 設定ファイルを使用してポストスナップショットを作成し、番号が 1 のプリスナップショットにリンクするには、以下を実行します。
    # snapper -c lvm_config create -t post --pre-num 1 -p
    2
    -p オプションは、作成されたスナップショットの数を出力する任意のオプションです。
  3. 番号が 2 のポストスナップショットが作成され、番号が 1 のプリスナップショットとペアになります。list コマンドで確認します。
    # snapper -c lvm_config list
    Type   | # | Pre # | Date              | User | Cleanup  | Description | Userdata
    -------+---+-------+-------------------+------+----------+-------------+---------
    single | 0 |       |                   | root |          | current     |
    pre    | 1 |       | Mon 06<...>       | root |          |             |
    post   | 2 | 1     | Mon 06<...>       | root |          |             |

13.2.1.3. プリまたはポストスナップショットでのコマンドのラッピング

プリスナップショットおよびポストスナップショット内でコマンドをラッピングすることも可能です。これはテスト時に便利です。簡単な手順は、手順13.3「プリまたはポストスナップショットでのコマンドのラッピング」 を参照してください。
  1. snapper create pre snapshot コマンドを実行します。
  2. ファイルシステムの内容に影響する可能性があるアクションを実行するため、1 つまたは複数のコマンドを実行します。
  3. snapper create post snapshot コマンドを実行します。

手順13.3 プリまたはポストスナップショットでのコマンドのラッピング

  1. プリスナップショットおよびポストスナップショットでコマンドをラッピングするには、以下を行います。
    # snapper -c lvm_config create --command "command_to_be_tracked"
    たとえば、/lvm_mount/hello_file ファイルの作成を追跡するには、以下を実行します。
    # snapper -c lvm_config create --command "echo Hello > /lvm_mount/hello_file"
  2. これを確認するには、status コマンドを実行します。
    # snapper -c config_file status first_snapshot_number..second_snapshot_number
    たとえば、最初のステップで変更した内容を追跡するには、以下を実行します。
    # snapper -c lvm_config status 3..4
    +..... /lvm_mount/hello_file
    必要な場合は list コマンドを実行し、スナップショットの番号を確認します。
    status コマンドの詳細は、「Snapper スナップショット間の変更の追跡」 を参照してください。
スナップショットが上記の例のコマンドのみをキャプチャーするとは限らないことに注意してください。Snapper はユーザーによる変更だけでなく、システムによる変更もすべて記録します。

13.2.2. シングル Snapper スナップショットの作成

シングル Snapper スナップショットの作成は、プリスナップショットまたはポストスナップショットの作成と似ており、create -t オプションのみがシングルスナップショットを指定します。シングルスナップショットは、他のスナップショットと関連せずに単一のスナップショットを作成するために使用されます。しかし、自動的に比較を生成したり、追加情報をリストする必要がなく、LVM2 シンボリュームのスナップショットを作成する明確な方法が必要な場合は、Snapper の代わりに System Storage Manager を使用することが推奨されます (「スナップショット」 参照)。
シングルスナップショットを作成するには、以下を実行します。
# snapper -c config_name create -t single
たとえば、以下のコマンドは lvm_config 設定ファイルを使用してシングルスナップショットを作成します。
# snapper -c lvm_config create -t single
シングルスナップショットは、変更の追跡用に特別に設計されたものではありませんが、snapper diff コマンド、xadiff コマンド、および status コマンドを使用すると、2 つのスナップショットを比較できます。各コマンドの詳細は 「Snapper スナップショット間の変更の追跡」 を参照してください。

13.2.3. スナップショットを自動的に取得するよう Snapper を設定

スナップショットの自動取得は、Snapper の主な機能の 1 つです。デフォルトでは、ボリュームに対して Snapper を設定すると、Snapper はそのボリュームのスナップショットを 1 時間ごとに取得します。
デフォルトの設定では、Snapper は以下の周期でスナップショットを取得します。
  • 10 時間周期のスナップショット。最後のスナップショットは Daily スナップショットとして保存されます。
  • 10 日周期のスナップショット。月最後のスナップショットは Monthly スナップショットとして保存されます。
  • 10 カ月周期のスナップショット。最後のスナップショットは Yearly スナップショットとして保存されます。
  • 10 年周期のスナップショット。
Snapper はデフォルトで 50 個以下のスナップショットを保持しますが、デフォルトでは作成後 1,800 秒未満のスナップショットはすべて保持されます。
デフォルト設定は、/etc/snapper/config-templates/default ファイルに指定されます。snapper create-config コマンドを実行して設定を作成すると、未指定の値はすべてデフォルト設定を基に設定されます。定義されたボリュームの設定は、/etc/snapper/configs/config_name ファイルで編集できます。