(isso começou como um comentário, mas ficou muito longo, então agora é uma resposta)
Infelizmente, a resposta é "Não". Não há uma maneira mais rápida ou mais inteligente de fazer isso.
Os sistemas de arquivos ZFS (embora estejam no mesmo pool) são sistemas de arquivos separados. Nem mv
nem qualquer outra ferramenta pode apenas mover os ponteiros de bloco ou o que seja, de modo que os arquivos que estavam em fs_a
estejam agora em fs_b
.
(BTW, partições formatadas múltiplas ou volumes LVM no mesmo disco ou array RAID também são sistemas de arquivos separados e mv
devolves para copiar e excluir para eles também)
Esta questão surgiu várias vezes ao longo dos anos (com algumas conversas sobre a criação de uma ferramenta para fazer o que você quer) e, como eu a entendo, a maior dificuldade que a coloca na cesta dura é a questão de como para manipular instantâneos - se houver instantâneos de fs_a
, os blocos estarão nos dois sistemas de arquivos ao mesmo tempo. O mesmo é verdadeiro para arquivos que possuem hard-links.
Eu me deparei com isso inúmeras vezes (por exemplo, ao mover arquivos entre conjuntos de dados como você fez, ou quando preciso converter um subdiretório em um fs), e apenas aprendi a tolerar o inconveniente. Pode ser um grande PITA.
se fs_b
estiver vazio ou ainda não existir e você quiser mover o conteúdo inteiro de fs_a
para fs_b
(e não apenas alguns ou até mesmo a maioria dos arquivos e diretórios ) você pode usar zfs rename
para renomear fs_a
para fs_b
. Eu suspeito que isso não seja relevante para a sua situação.
Há um problema em aberto sobre isso para o ZFSOnLinux, no link
Eu não pesquisei, mas eu esperaria que o OpenZFS e até o ZFS da Sun / Oracle provavelmente tivessem relatórios / recurso de bugs semelhantes -requisitos.
BTW, consulte também link