フリーソフトウェアを使用して実行されているLinuxシステムの原子増分バックアップを実行するにはどうすればよいですか?

フリーソフトウェアを使用して実行されているLinuxシステムの原子増分バックアップを実行するにはどうすればよいですか?

私は実行中のディスクベースのLinuxシステム(Ubuntuなど)で利用可能な無料ソフトウェアである増分バックアップツールを探しています。


Clonezillaは正確なバックアップを作成できますが、システムがアイドル状態の場合にのみ可能です。

Acronis for Linuxは、実行中のシステムで正確なバックアップを実行できますが、フリーソフトウェアではありません。 Acronis と BTRFS は、オペレーティングシステムのランタイムブレーク効果をシミュレートするためにファイルシステムのランタイム変更をキャプチャする方法を使用します。私はこれを行うことを探しています。

rsync、dump、その他多くの不適切なツールが推奨され、この目的にも使用されますが、実行中のオペレーティングシステムを正確にキャプチャすることは信頼できません。 rsync は静的ファイルシステムで使用すると正常に動作しますが、マルチスレッド実行可能ファイルシステムでは動作しません。

実行中のファイルシステムを何らかの方法でコピーするだけで、正確なバックアップを作成できると信じている人がどれほど多いのか本当に驚くべきことです。数年前、私は小さなマルチタスクエンジンを作成し、ある仕事が他の仕事を汚染する危険性を非常に認識していました。 100%正確な回復可能なバックアップキャプチャは、バックアップがアトミックジョブとして実行され、他のすべてのジョブが動作中に停止した場合にのみ保証されます。バックアップがあれば役に立つと信じていますが、使用しようとするとそのバックアップが破損していることを知っているよりも悪いことはありません。

仮想設定ではなく、通常の古いデスクトップLinuxに必要です。

答え1

述べたように、BTRFSはこれを行うことができます。これが私が定期的にノートブックをバックアップする方法です(私が入力している間のノートブックの稼働時間は9週5日です)。

私のBTRFSファイルシステムにはサブボリュームがあります。バックアップするデータを保存するためにファイルシステムのルートを使用しない限り、データをサブボリュームに分割する方法とネストする方法はここでは重要ではありません。

次のコマンドは構文と可能性を説明するために使用され、cronjobまたはsystemd.timerで実行されるスクリプトでラップすることをお勧めします。

サブボリュームのスナップショットを撮るには:

btrfs subvolume snapshot -r <source> <dest>

スナップショットをシリアライズするには:

btrfs send <snapshot>

以前のスナップショットに基づいてスナップショットをシリアライズするには(例:diff):

btrfs send -p <start> <end>

差分を生成するには、「進行率」監視を使用して動的に圧縮してバックアップサーバーに送信します。

btrfs send -p <start> <end> | \
    pv -bart | \
    pbzip2 --best | \
    ssh [email protected] "cat > /backups/name.bz2"

同様の操作を実行しますが、BTRFSストリームを圧縮するのではなく、バックアップサーバーでBTRFSサブボリュームを再作成します。

btrfs send -p <start> <end> | \
    pv -bart | \
    pbzip2 --best | \
    ssh [email protected] "pbzip2 -d | \
    btrfs receive <target>"

復元するには、.applyを介して新しいBTRFSファイルシステムにスナップショットを適用しますbtrfs receive


詳細は次のとおりです。BTRFS増分バックアップ

答え2

@mark-k-cowanが述べたように、btrfsスナップショットを使用してこれを行うことができます。 btrfsは私にとってあまりにも未熟です。 zfsとそのスナップショットを使用する方が良いです。 @brady-deanが言ったように、LVMスナップショットはファイルシステムに依存しないアプローチです。 LVMスナップショットはパフォーマンスに大きな悪影響を及ぼす可能性があります。

Acronisには、ブロックレベルで動作してスナップショットを作成するカーネルモジュールがあります。これダトブロックドライバ同じ機能を実行するGPLv2(エヘム「フリーソフトウェア」)カーネルモジュールです。 (免責事項:私はそれを使用したことがありません。)

答え3

実行中のマシンを複製することは事実上不可能です。特定のファイルをtarballに追加するスクリプトを作成できます。 LVMスナップショットを使用してシステムドライブをバックアップすることもできます。

答え4

rsync(またはすぐに覚えて編集できる名前のバリエーション...)を使用してください。

フルバックアップを実行し、増分(または差分)バックアップを実行するために使用します。

また、さまざまなプラットフォームで使用できるため、複数のオペレーティングシステム間でバックアップできます。

また見なさい:https://serverfault.com/q/138287/146493

これは、実行中のシステムのすべてではなくてもほとんどのファイルに適しています(ファイルへの一部の書き込みは切り捨てられますが、実行中にバックアップする場合は正常です)。 (また、ddを使用して次の追加のセクタ情報を保存する必要があります。完全な回復を実行したい場合は、ブートセクタ)...またはあなたが言ったように、その容量を含むファイルシステムを使用してください。

実行中のデータベースをバックアップする場合は、まずこのデータベースダンプツールを使用してバックアップしてください。

関連情報