Existem várias coisas que podem ser feitas aqui. Observe que nenhum deles realmente usa links físicos, pois eles só podem apontar para um arquivo completo. Usar o sistema de arquivos btrfs
abre algumas possibilidades muito úteis aqui. Observe que btrfs
atualmente (a versão mais recente é v3.13) ainda é experimental. No entanto, sua habilidade COW (copy-on-write) é perfeita para isso tipo de coisa (desde claro que é aceitável ter o backup no mesmo sistema de arquivos). Considere um sistema de arquivos btrfs
montado em /mnt
, você pode fazer um instantâneo atômico de todo o sistema de arquivos com:
btrfs subvolume snapshot /mnt /mnt/snapshot
Para permitir instantâneos parciais, você precisa fazer o backup de seus arquivos dentro de um subvolume
em vez de um diretório. Por exemplo:
btrfs subvolume create /mnt/subvol
mv stuff /mnt/subvol
btrfs subvolume snapshot /mnt/subvol /mnt/subvol_snapshot
Além de usar btfrs
, você também pode considerar montar a imagem da máquina virtual em um ou ambos os lados do backup e usar rsync
entre os dois pontos de montagem.
Este blog mostra como montar um Virtual Caixa .vdi
imagem usando qemu-utils
. Os comandos como root (não testados):
modprobe nbd
qemu-nbd -c /dev/nbd0 <vdi-file>
mount /dev/nbd0p1 /mnt
...
umount /mnt
qemu-nbd -d /dev/nbd0
Por fim, a abordagem mais simples que pode ser útil é a opção --inplace
para rsync
. Na página do manual:
--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.
O problema aqui, é claro, é que não há nenhum benefício em usar isso em combinação com --link-dest
(em rsync
versões < 2.6.4 as duas são incompatíveis ao todo), pois uma cópia do arquivo ainda tem que ser criado no destino.