小部分のみ変更された大容量ファイルの「ハードリンク」部分

小部分のみ変更された大容量ファイルの「ハードリンク」部分

バックアップにはrsyncを使用します。

rsync -a --link-dest=PATHTO/$PREVIOUSBACKUP $SOURCE $CURRENTBACKUP

これにより、ハードリンクを使用してスペースを節約できます。

常に変更される大容量ファイル(仮想マシンイメージ)をバックアップする必要がある場合に問題が発生します。

画像全体をハードリンクするのではなく、変更された部分だけをハードリンクすることも可能ですか?この問題を解決するためのツールはありますか?

答え1

ここでやるべきことがたくさんあります。これらのどれも実際にハードリンクを使用しないことに注意してください。なぜなら、完全なファイルだけを指すことができるからです。ファイルシステムを使用すると、btrfsここで非常に便利な可能性が開きます。btrfs現時点では、まだ実験段階であることに注意してください(最新バージョンはv3.13です)。しかし、(記録中のコピー)機能はこの種の作業に適しています(もちろん、同じファイルシステムのバックアップが許可されているという前提で)。btrfsにマウントされているファイルシステムを考えると、/mnt次のようにファイルシステム全体のアトミックスナップショットを作成できます。

btrfs subvolume snapshot /mnt /mnt/snapshot

部分スナップショットを許可するには、バックアップするファイルをsubvolume単一のディレクトリではなくディレクトリに配置する必要があります。たとえば、

btrfs subvolume create /mnt/subvol
mv stuff /mnt/subvol
btrfs subvolume snapshot /mnt/subvol /mnt/subvol_snapshot

を使用することに加えて、btfrsバックアップの一方または両方に仮想マシンイメージをマウントし、2つのマウントrsyncポイント間で使用することを検討することもできます。

このブログ.vdiこれを使用してVirtual Boxイメージをインストールする方法を示しますqemu-utils。 rootコマンド(テストされていません):

modprobe nbd
qemu-nbd -c /dev/nbd0 <vdi-file>
mount /dev/nbd0p1 /mnt
...
umount /mnt
qemu-nbd -d /dev/nbd0

最後に役立つ最も簡単な方法は--inplaceオプションですrsync。マニュアルページから:

--inplace
          This option changes how rsync transfers a file when its data needs to
          be updated: instead of the default method of creating a new copy of the
          file and moving it into place when it is complete, rsync instead writes
          the updated data directly to the destination file.
...
          This option is useful for transferring large files with block-based
          changes or appended data, and also on systems that are disk bound, not
          network bound.

--link-destrsyncもちろん、問題はファイルのコピーをターゲットに作成する必要があるため、それらを組み合わせて使用​​しても何の利点もないということです(バージョン<2.6.4では2つは完全に互換性がありません)。

関連情報