No Ubuntu, existe uma maneira de mesclar virtualmente duas pastas sem unionfs ou aufs?

6

Eu tenho um sistema de controle de origem no trabalho que não posso modificar, o qual espalha um monte de arquivos em lugares desafortunados. Meu IDE espera que essas pastas estejam em um único local unificado. Normalmente, eu apenas associa simbolicamente tudo, mas para piorar as coisas, algumas das pastas devem ser mescladas recursivamente. Eu tenho a garantia de que não há nomes de arquivos sobrepostos, mas estamos falando de milhares de arquivos, mais do que eu farei à mão.

Eu olhei para unionfs e aufs, mas é uma máquina corporativa, então não se preocupe com o kernel (sem mencionar os documentos "iniciados" para esses wang chung).

Existe outra maneira de fazer isso?

    
por Hounshell 12.06.2012 / 22:33

1 resposta

9

Eu não sei exatamente quais ferramentas você está usando e como elas se comportam com links simbólicos, mas você pode "copiar" a árvore inteira usando links simbólicos (se quiser) automaticamente usando a opção -s de cp (ou -l para links físicos).

Vamos dar uma olhada no exemplo abaixo.

.
├── 1
│   ├── s -> x
│   ├── x
│   ├── y
│   └── z
│       └── 1
└── 2
    ├── a
    │   └── 2
    ├── b
    └── c

Se você quiser que os arquivos comlml 1/ to 2/ no diretório atual, você pode simplesmente fazer:

cp -ans "$PWD/1/"* 2/

Agora 2/ se parece com:

.
...
└── 2
    ├── a
    │   └── 2
    ├── b
    ├── c
    ├── s -> /home/przemoc/links/1/s
    ├── x -> /home/przemoc/links/1/x
    ├── y -> /home/przemoc/links/1/y
    └── z
        └── 1 -> /home/przemoc/links/1/z/1

Explicação das opções cp usadas:

  • -a ou --archive
    preserva atributos, links e copia diretórios de forma recursiva (na verdade, é um alias de -dR --preserve=all )
  • -n ou --no-clobber
    evita sobrescrever arquivos existentes
  • -s ou --symbolic-link
    cria links simbólicos em vez de copiar literalmente

Os caminhos do arquivo de origem devem ser absolutos nesse caso (é por isso que usei $PWD ), porque cp "pode criar links simbólicos relativos apenas no diretório atual".

Espero que ajude um pouco.

    
por 12.06.2012 / 23:43