Menu Close

Red Hat Training

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

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

2 つのスナップショット間で行った変更を元に戻すには、次の形式で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 コマンドを使用すると、変更したファイル (つまり、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 コマンドは、マウントする前にそれぞれの LVMSnapper スナップショットをアクティブにします。たとえば、スナップショットをマウントしたり、古いバージョンの複数のファイルを手動で抽出したりする場合は、mount コマンドと unmount コマンドを使用します。ファイルを手動で元に戻すには、マウントされたスナップショットから現在のファイルシステムにファイルをコピーします。現在のファイルシステムであるスナップショット 0 は、手順14.1「Snapper 設定ファイルの作成」 で作成されたライブファイルシステムです。ファイルを、元の /mount-point のサブツリーにコピーします。
明示的なクライアント側の要求には、mount コマンドおよび unmount コマンドを使用します。/etc/snapper/configs/config_name ファイルには、ユーザーとグループを追加できる ALLOW_USERS= 変数および ALLOW_GROUPS= 変数が含まれます。その後、snapperd を使用して、追加したユーザーおよびグループのマウント操作を実行できます。