編集時に新しいファイルにリンクするハードリンクを含む `cp -al` スナップショット

編集時に新しいファイルにリンクするハードリンクを含む `cp -al` スナップショット

大容量フォルダのスナップショットを定期的に撮影しようとしています。

私はここで読んだ:http://www.mikerubel.org/computers/rsync_snapshots/#Incremental
cp -alフォルダのスナップショットを撮るには、ハードリンクをコピーしてください。

これはすべて素晴らしいですが、問題は、このスナップショットで1つのファイルを変更すると、すべてのスナップショットで変更されることです。私が望むのは、システムが変更されたときに新しいファイルを作成してそのファイルに接続することです。これにより、最初のファイルを編集するときに各スナップショットが無効になりません。

どうすればいいですか?

ps試してみましたが、rsync -a --delete --link-dest=../backup.1 source_directory/ backup.0/同じ問題が発生しました。

ベストアンサー1

これがハードリンクがどのように機能するかです。ただし、この問題を解決するにはいくつかの方法があります。

いくつかのオプションが思い浮かんだ。

  • たとえば、書き込み中にコピーファイルをサポートするファイルシステムを使用しますbtrfs。もちろん、btrfsを使用している場合はデフォルトのスナップショットしか使用できません...ファイルシステムがそれをサポートしている場合、cp --reflink=alwaysext4はサポートされません。これはちょっと。
  • ハードリンクは、元のスナップショットではなくスナップショット間でのみ共有されます。つまり、特定のバージョンのファイルが最初に表示されると、そのバージョンはスナップショットにコピーされます。ただし、次回は前のスナップショットのリンクにリンクしてください。 (10年前にどのプログラムを使用したのかわかりませんが、検索結果はdirvish、obnam、storebackup、rsnapshotでした)
  • ファイルの変更方法に応じて、一時書き込み/名前変更を使用してファイルの変更を保証できます。これにより、ハードリンクが削除され、スナップショットのバージョンが元のままになります。ただし、エラーによってスナップショットが破損する可能性があるため、これは非常に安全ではありません。
  • ファイルシステム全体のLVMスナップショットを撮ります。

もちろん別のオプションがあります。適切なバックアップシステムを使用することです。ほとんどの人は変更されたファイルのみをバックアップできます。

おすすめ記事