Btrfs copiar instantâneo com rsync

1

Então eu tenho procurado isso de cima a baixo, mas devo estar fazendo algo fundamentalmente errado. O que eu quero fazer:

Configurei meu NAS para fazer instantâneos da minha pasta pessoal, o sistema de arquivos é btrfs. Isso funciona como deveria e está utilizando hard links.

Eu quero copiar todo o diretório de snapshots para backup em um disco usb do ext4, usando rsync -aH para preservar os hard links. Mas hard links não são preservados após a conclusão do rsync - estou com um exemplo mínimo em que rsync um arquivo de 2 snapshots diferentes (verificado ter Inodes idênticos) no volume btrfs - apenas para outro diretório - que também cria 2 arquivos distintos. Estou faltando uma opção de rsync aqui para fazer este trabalho? Ou o rsync é simplesmente incapaz de fazer isso? Ferramenta errada para o trabalho?

    
por quaylar 08.09.2018 / 22:46

1 resposta

3

Eu não sei muito bem o rsync , mas se por "instantâneos" você quer dizer instantâneos do Btrfs (tirados com btrfs subvolume snapshot … ), então arquivos idênticos em dois instantâneos não são hardlinkados.

Eles possivelmente compartilham espaço no dispositivo (físico) por causa do comportamento de cópia na gravação do Btrfs; seus números de inode são os mesmos, mas existem logicamente em dispositivos diferentes. Neste contexto, cada subvolume do Btrfs deve ser tratado como um sistema de arquivos separado.

Se puder, verifique os arquivos pertencentes a diferentes instantâneos com stat . Você verá que eles informam diferentes identificadores de dispositivo. Números de inodes idênticos em diferentes dispositivos não significam nada.

Por esse motivo, rsync não tem nenhuma pista simples de que os arquivos "devem" estar com hardlink. Eles não são hardlinked em seu "diretório de instantâneos completos" em primeiro lugar.

Acredito que btrfs send e btrfs receive são ferramentas para replicar a hierarquia de instantâneos em outro computador (com o sistema de arquivos Btrfs). Eu nunca usei eles, então eu não posso te guiar. Estude man btrfs-send e man btrfs-receive .

    
por 08.09.2018 / 23:06