Copie a partição BTRFS para a partição BTRFS do disco rígido externo, incluindo instantâneos

4

Eu tenho uma pergunta sobre backup de partições BTRFS.

Suponha que eu tenha uma partição BTRFS em / dev / sda1 e um disco rígido externo com BTRFS em / dev / sdb1.

Eu já descobri que posso fazer um backup inicial emitindo:

btrfs replace start /dev/sda1 /dev/sdb1

Depois eu mudo 2 coisas:

  • Eu crio um novo arquivo regular no SDA1
  • Eu crio um novo instantâneo BTRFS no SDA1

Agora quero trazer meu disco rígido externo SDB1 ('backup') alinhado com o SDA1. Ambos os arquivos como o material específico do BTRFS (snapshots).

Como faço isso?

Estou procurando o equivalente rsync, que também sincroniza os recursos do BTFS (snapshots):

rsync -avr --delete <mount point sda1> <mount point sdb1>

Obrigado

    
por robert 04.06.2015 / 09:00

1 resposta

3

O comando replace não faz um backup do sda1, ele substitui o sda1 pelo sdb1 no sistema de arquivos, mas como é um sistema de arquivos de um dispositivo e o btrfs não se incomoda de limpar os dados do sda1 quando ele o substitui eles acabam sendo cópias indenticas do sistema de arquivos. No entanto, você NÃO quer fazer isso, pois ambos terão o mesmo UUID, e atualmente não é seguro montar dois sistemas de arquivos btrfs com o mesmo UUID, pois ele pode causar MASSIVE DATA CORRUPTION (ver a página Gotchas do btrfswiki) . Se você quiser usar o recurso de backup incremental do btrfs, você deve formatar sua unidade de backup / dev / sdb1 para um novo sistema de arquivos btrfs. Então você deve fazer um snapshot somente de leitura dos subvolume (s) de watever que você quer fazer backup no seu sistema de arquivos usando

btrfs su sn -r @subvolume-name @subvolume-name-RO

em cada subvolume. Então você deve montar o sistema de arquivos btrfs em branco e executar

btrfs send /path/to/@subvolume-name-RO | btrfs rec /path/to/backup-directory/

Este será o primeiro envio e o btrfs terá que transferir todos os dados desta vez. Da próxima vez que você quiser enviar um backup para esta unidade, poderá usar os envios incrementais para enviar apenas os dados que foram alterados desde o backup anterior que você enviou. Ele também usará Copy On Write para você economizar muito espaço também. Apenas certifique-se de manter o instantâneo mais recente em ambos os sistemas de arquivos. Quando terminar, você pode renomear o instantâneo enviado para o que quiser.

Agora, se você quiser enviar outro instantâneo, basta renomear o original e tirar um novo instantâneo com algo como

mv @subvolume-name-RO @subvolume-name-RO-old
btrfs su sn -r @subvolume-name @subvolume-name-RO

Em seguida, você pode usar enviar para enviar o instantâneo mais recente usando

btrfs send -p @subvolume-name-RO-old @subvolume-name-RO | btrfs rec /path/to/backup-directory/

e se o instantâneo anterior ainda existir em seu disco de backup, ele enviará o novo instantâneo apenas copiando as alterações feitas desde o anterior.

    
por 26.06.2015 / 08:19