Cria uma união de dois diretórios, enquanto grava em seu próprio diretório original

0

Eu quero criar uma união de dois diretórios e quando eu mover um arquivo dentro da pasta union'd, eu quero que ele fique na pasta que ele origina (veja abaixo).

Como eu realizaria isso? Eu tentei unionfs, mas sempre seguirá a ordem das pastas, por exemplo, se eu montar uma pasta RW no primeiro lugar, todas as gravações irão para essa pasta, eu quero o seguinte comportamento, conforme descrito abaixo:

Eu quero ter duas pastas RW e uma pasta unida pelo sindicato

RW - driveA
RW - driveB
Unioned - mergeDrive

Basicamente, quando eu faço um movimento de arquivo (eu só posso tocar nos arquivos através do mergeDrive , eu quero que cada arquivo seja movido dentro da própria pasta.

Então, por exemplo,

mv /mnt/mergeDrive/subFolderA/fileA.csv /mnt/mergeDrive/subFolderB/fileA.csv

Caminho original do FileA:

/mnt/driveA/subFolderA/fileA.csv

Caminho esperado após a mudança:

/mnt/driveA/subFolderB/fileA.csv

Então eu quero ser capaz de fazer:

mv /mnt/mergeDrive/subFolderA/fileB.csv /mnt/mergeDrive/subFolderB/fileB.csv

Caminho original do FileB:

/mnt/driveB/subFolderA/fileB.csv

Caminho esperado após a mudança:

/mnt/driveB/subFolderB/fileB.csv

Portanto, sempre que a pasta raiz do arquivo é originada, ela permanece nessa pasta raiz quando é movida, mesmo que seja movida através de /mergeDrive/ . Você pode configurar o unionfs (ou algo similar) para fazer isso?

    
por asdasd2a43qaad 24.03.2018 / 19:32

1 resposta

0

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 .

    
por 06.04.2018 / 12:23

Tags