Estou tentando fazer cópias de vaca de alguns arquivos / diretórios, mas, das várias maneiras que conheço, tudo parece subótimo.
Por exemplo, o btrfs pode, com o uso de cp --reflink=auto
gerar rapidamente cópias de vaca dos arquivos.
O que eu tentei:
- Links simbólicos: Não é bom. Arquivo renomeado, link quebrado.
- Hardlinks: Melhor, mas ainda não é bom. Mudanças em um arquivo mudarão no outro, e eu não quero necessariamente que o outro arquivo seja alterado.
- Crie uma captura instantânea do conjunto de dados e clone a captura instantânea: Isso pode funcionar, mas não é bom. Frequentemente, não estou procurando uma cópia de todo o conjunto de dados ou para que as cópias funcionem como outro conjunto de dados. Depois, há os relacionamentos pai / filho entre o clone / instantâneo / original, que, pelo que entendi, são difíceis, se não impossíveis de quebrar.
- O uso
zfs send/receive
e a desduplicação ativada replicam o conjunto de dados para um novo conjunto de dados: isso evita o relacionamento pai / filho de usar um clone, mas ainda desnecessariamente cria outro conjunto de dados e ainda sofre com a lentidão envolvida nos arquivos que precisam ser lidos 100% e os blocos referenciados novamente em vez de escritos. - Copie arquivos e deixe que a desduplicação faça seu trabalho: isso funciona, mas é lento porque os arquivos precisam ser 100% lidos e os blocos referenciados novamente em vez de serem gravados.
A lentidão do envio / recebimento de zfs e a cópia ou rsyncing fisicamente são ainda mais exacerbadas porque a maioria das coisas é armazenada compactada e precisa ser descomprimida durante a leitura e depois comprimida antes da dedução entrar em referência para blocos duplicados.
Em todas as minhas pesquisas, não consegui encontrar nada remotamente parecido com a simplicidade de --reflink no btrfs.
Então, existe uma maneira de criar cópias de vaca no ZFS? Ou copiar "fisicamente" e deixar que a desduplicação faça seu trabalho são a única opção real?