Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

14.4. スナップショット間の変更を元に戻す

2 つの既存の Snapper スナップショット間で行われた変更を元に戻すには、次の形式で undochange コマンドを実行します。1 は最初のスナップショットで、2 は 2 番目のスナップショットです。
snapper -c config_name undochange 1..2
重要
undochange コマンドを使用しても、Snapper ボリュームは元の状態に戻らず、データの一貫性は確保されません。たとえば、スナップショット 2 の後で、指定された範囲外で発生したファイルの変更は、たとえばスナップショット 1 の状態に戻った後も変更されないままとなります。たとえば、undochange を実行してユーザーの作成を元に戻すと、そのユーザーが所有するファイルはそのまま残ることができます。
また、スナップショットとしてファイルの一貫性を確保するメカニズムもないため、undochange コマンドの使用時に、すでに存在する不整合をスナップショットに戻すことができます。
root ファイルシステムで Snapper undochange コマンドを使用しないでください。失敗する可能性があるためです。
以下の図は、undochange コマンドがどのように機能するかを示しています。

図14.1 時間の経過に伴う Snapper のステータス

時間の経過に伴う Snapper のステータス
図は、snapshot_1 が作成された時点、file_a が作成され、file_b が削除されることを示しています。次に Snapshot_2 が作成され、その後に file_a が編集され、file_c が作成されます。これが、システムの現在の状態になります。現在のシステムには、編集バージョンの file_a があり、file_b はなく、新しく作成された file_c があります。
undochange コマンドが呼び出されると、Snapper は、最初にリストされたスナップショットと 2 番目のスナップショットの間に変更されたファイルのリストを生成します。図では、snapper -c SnapperExample undochange 1..2 コマンドを使用すると、Snapper は変更されたファイルのリスト(つまり、file_a が作成され、file_b が削除されます)を作成し、それらを現在のシステムに適用します。そのため、以下に留意してください。
  • 現在のシステムには file_a がありません。これは、snapshot_1 の作成時にまだ作成されていないためです。
  • file_b は存在します。snapshot_1 から現在のシステムにコピーされます。
  • file_c は、作成が指定の時間外であったため、存在します。
file_bfile_c が競合すると、システムが破損する可能性があることに注意してください。
snapper -c SnapperExample undochange 2..1 コマンドを使用することもできます。この場合、現在のシステムは、編集したバージョンの file_asnapshot_1 からコピーされたものに置き換えます。これにより、snapshot_2 の作成後に行われたファイルの編集が取り消されます。

mount および unmount コマンドを使用して変更を元に戻す

undochange コマンドは、変更を元に戻すのに最適な方法であるとは限りません。status および diff コマンドを使用すると、修飾された決定を作成し、Snapper の代わりに mount コマンドおよび unmount コマンドを使用できます。mount コマンドおよび unmount コマンドは、スナップショットをマウントし、Snapper ワークフローとは別にコンテンツを参照する場合にのみ役立ちます。
必要に応じて、mount コマンドは、マウントする前にそれぞれの LVM Snapper スナップショットをアクティブにします。たとえば、スナップショットをマウントしたり、古いバージョンの複数のファイルを手動で抽出したりする場合は、mount コマンドおよび unmount コマンドを使用します。ファイルを手動で元に戻すには、マウントされたスナップショットから現在のファイルシステムにファイルをコピーします。現在のファイルシステムであるスナップショット 0 は、手順14.1「Snapper 設定ファイルの作成」 で作成されたライブファイルシステムです。ファイルを、元の /mount-point のサブツリーにコピーします。
明示的なクライアント側の要求には、mount コマンドおよび unmount コマンドを使用します。/etc/snapper/configs/config_name ファイルには、ユーザーおよびグループを追加できる ALLOW_USERS= 変数および ALLOW_GROUPS= 変数が含まれています。次に、snapperd を使用すると、追加したユーザーおよびグループのマウント操作を実行できます。