低速ネットワーク用のバックアップシステム

低速ネットワーク用のバックアップシステム

新しいバックアップが作成されるたびに最小限のデータ量を転送できるようなバックアップ システムを考案しようとしています。

現在、私は duplicity 経由で smb マウントに増分バックアップを実行しています。現時点では、約 1MB/秒に制限されています (wifi/ndiswrapper はばかげていますが、それでも、これを修正しても 5 倍以上の速度向上は得られません)。

残念ながら、削除、変更されたデータなどにより、増分バックアップを永久に保存することが困難になっています。増分バックアップを完全なバックアップに簡単にフラット化することはできず、40 GB を超える完全なコピーを取得するのに少し時間がかかります。

新しいシステムで実現したいことがいくつかあり、あまり気にしていないことがいくつかあります。

  • チェックポイントはいくつか欲しいですが、おそらく2つか3つまででしょう。
  • ストレージはローカルネットワーク上にあるため、暗号化は気にしません。
  • 圧縮は良いのですが、ファイルシステム/デバイス圧縮を使用すればいいと思います
  • 再度完全なコピーをすることなく、最新のバックアップ以外のすべてを完全に削除できるようにしたい

これは、rsync + ループデバイス圧縮 + fs スナップショットで実行できるようです... しかし残念ながら、私のデバイスはスナップショットを実際にはサポートしていません。 サポートされているファイルシステムの標準的な Debian リストがあるだけなので、バックアップに btrfs を使用するつもりはありません。

これに匹敵する解決策はありますか? 他にどのようなアプローチがありますか?

編集: スナップショット部分は、実際には LVM 読み取り専用スナップショットで実行できると思います。これにより、不正な動作をするアプリからの保護がさらに強化されます。

答え1

スナップショットハードリンクと rsync を使用して増分バックアップを実行します。ファイルが前回のバックアップ実行時と同じ場合は、ハードリンクが作成されます。したがって、何も変更せずに rsnapshot を 3 時間ごとに実行すると、次の 3 つのフォルダーが作成されます。

hourly.0
hourly.1
hourly.2

それぞれに「完全な」バックアップが含まれているように見えますが、ディスク上には各ファイルのコピーが 1 つだけ存在します。つまり、hourly.2 を削除しても、hourly.1 と hourly.0 にはすべてのファイルが残ります。バックアップの頻度とスナップショットの数を設定できます。

これにより最初の目標は達成されますが、これが機能するには、宛先ファイル システムがハードリンクをサポートしている必要があります。

これに代わる方法としては、rsync +を使用する方法があります。ライトVMバックアップ デバイス上で、定期的にスナップショットを作成します。LVM スナップショットは「コピー オン ライト」ボリュームであり、ブロックが変更されない限り、スナップショット ボリュームと同じブロックを再利用することで、元のボリュームと同一の状態が維持されます。ブロックが変更されると、スナップショット ボリュームには異なるブロックのみが保存されます。したがって、バックアップ間でスナップショットされるボリュームの変更率に合わせてサイズを調整できます。

圧縮は良いのですが、btrfs を使用したくない場合は、ループまたはヒューズを介した何らかのファイル システム圧縮が必要になります。

関連情報