Suas dúvidas são legítimas. Eu testei unionfs-fuse
. De certa forma, tenta não mover arquivos entre filiais.
Por exemplo Se um diretório de destino existir apenas na ramificação inferior e eu mover arquivos que residam na ramificação inferior, eles permanecerão nessa ramificação.
Por outro lado, se eu deliberadamente criar um diretório de destino vazio separadamente nas ramificações both , os arquivos da ramificação inferior serão movidos para a parte superior enquanto se movem dentro do ponto de montagem mesclado. Eu entendo que isso é exatamente o que você quer evitar .
Eu não testei aufs
nem overlayfs
.
No entanto, testei mhddfs
. É um Sistema de arquivos no espaço do usuário (FUSE) (veja preocupações de segurança relacionadas ao FUSE . mhddfs
parece que funciona exatamente como você deseja. Note que meus testes eram limitados, eu não li o código para aprender seus algoritmos para ter certeza. Eu acho que você deveria testar isso sozinho. Sintaxe básica:
mhddfs /mnt/driveA/ /mnt/driveB/ /mnt/mergeDrive/
Em este artigo há uma observação:
if a certain drive runs out of free space in the middle of a write (suppose, you tried to create a very large file on it), the write process will not fail;
mhddfs
will simply transfer the already written data to another drive (which has more space available) and continue the write there.
No começo eu pensei que "os dados já escritos" podem se referir a outro arquivo que seria transferido para dar espaço para o arquivo que está sendo escrito. Eu acho que isso seria ruim para você. Eu tentei acionar esse comportamento e falhei. Agora eu acho que "os dados já escritos" referem-se apenas ao arquivo exato que está sendo escrito.
Na verdade, nunca observei em meus testes mhddfs
a transferência de arquivos entre duas ramificações. Mesmo que o diretório de destino existisse apenas em algum outro ramo, a ferramenta duplicou a parte necessária da árvore de diretórios para a ramificação onde os arquivos estavam, para que eles pudessem alterar seu caminho sem serem transferidos para outra ramificação.
Para ser claro: estou falando de testes envolvendo o plain mv
. É bastante óbvio se você cp
para outro diretório dentro do ponto de montagem mesclado, então a cópia resultante pode acabar em outro ramo que não o original. Tenha em mente alguns programas modificam arquivos no lugar, alguns criam cópias .
Observe também que há um bug na versão 0.1.39
. Os usuários informam que o downgrade para 0.1.38
ajuda. Alternativamente, você pode tentar este fork: mhddfs-nosegfault .