あなたが言ったように、BTRFSはこれを行うことができます。これが、私が定期的にラップトップをバックアップする方法です (これを入力している時点で、9 週間と 5 日間のアップタイムがあります)。
私の BTRFS ファイルシステム内には、サブボリュームがあります。ファイルシステムのルートを使用してバックアップしたいデータを保存しない限り、データをサブボリュームに分割する方法とそれらをネストする方法はここでは重要ではありません。
次のコマンドは、構文と可能性を説明するためのものです。cronjob または systemd.timer として実行されるスクリプトにまとめることをお勧めします。
サブボリュームのスナップショットを作成するには:
btrfs subvolume snapshot -r <source> <dest>
スナップショットをシリアル化するには:
btrfs send <snapshot>
古いスナップショットを基準にしてスナップショットをシリアル化するには (つまり、差分):
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>"
復元するには、スナップショットを btrfs receive
経由で新しい BTRFS ファイルシステムに適用します .
BTRFS 増分バックアップの詳細はこちら
@mark-k-cowan が言ったように、btrfs スナップショットでこれを行うことができます。 btrfs は私には未熟です。 zfs とそのスナップショットを使用する方がよいでしょう。 @brady-deanが言ったように、LVMスナップショットはファイルシステムに依存しない方法です。 LVM スナップショットは、パフォーマンスに大きな悪影響を与える可能性があります。
Acronis には、ブロック レイヤーで機能してスナップショットを作成するカーネル モジュールがあります。 Datto Block Driver は、同じことを行う GPLv2 (エヘム「フリーウェア」) カーネル モジュールです。 (免責事項:使用したことはありません。)