
バックアップには 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
、バックアップの片側または両側に仮想マシン イメージをマウントし、rsync
2 つのマウント ポイント間で を使用することも検討できます。
このブログ.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-dest
(rsync
バージョン <2.6.4 では、2 つはまったく互換性がありません)。ファイルのコピーは、宛先に作成する必要があるためです。