Como mesclar um diretório em outro?

1

Alguém pode me dizer se existe alguma maneira de "mesclar" um dir em outro?

Ou seja. deixe eu ter /some/directories/structure com subdiretentes / arquivos. E agora eu quero "implantá-lo" em /etc , por exemplo. Ou seja Eu preciso de todos os subdiretórios / arquivos de /some/directories/structure será adicionado em (não deve substituir o conteúdo atual de /etc ) /etc ou alguma outra dir.

EDITAR:

OK. Digamos que eu tenha um diretório chamado prog . Ele contém alguns arquivos de configuração. Este dir armazenado em algum lugar no meu diretório home enquanto eu desenvolvo meu programa e ele deve ser instalado em /etc no sistema de trabalho. E agora eu quero depurar meu programa, mas para executá-lo eu preciso que o prog dir (que está armazenado no meu diretório home) esteja acessível no /etc . Então, minha pergunta: posso fazer isso de alguma forma "virtual" (ou seja, sem copiar, mover, rsyncing ou mesmo vincular o prog em /etc )? Talvez haja algum método para montá-lo, mas (novamente) sem criar nada físico no /etc .

A chave para mim aqui é: "Não esqueça de algo desnecessário no /etc ".

Ohhh ... Espero que esteja tudo bem com a minha pergunta agora. :)

    
por Serge Roussak 04.03.2016 / 10:25

4 respostas

1

Eu não estou exatamente conseguindo o que você está tentando, para ser honesto, não faz sentido para mim em tudo .. Mas quando você está falando sobre virtual e montagens - eu suspeito que você está pensando em algum lugar no direção de um monte de ligação?!

O que é um bind mount?

Linux bind mount

Under Linux, bind mounts are available as a kernel feature. You can create one with the mount command, by passing either the --bind command line option or the bind mount option. The following two commands are equivalent:

# mount --bind /some/where /else/where

# mount -o bind /some/where /else/where

Here, the “device” /some/where is not a disk partition like in the case of an on-disk filesystem, but an existing directory. The mount point /else/where must be an existing directory as usual.

Note that no filesystem type is specified either way: making a bind mount doesn't involve a filesystem driver, it copies the kernel data structures from the original mount.

    
por 04.03.2016 / 12:09
1

Eu mudaria isso. Você precisa do código que está desenvolvendo para acessar alguns arquivos de configuração em um diretório que acredita ser /etc/ (e pode ser um subdiretório dentro dele, embora você não esteja claro).

Em vez de tentar encontrar uma maneira de falsificar isso no nível do sistema de arquivos, faça o que muitos outros aplicativos fazem e forneça um diretório de configuração personalizável.

Diga ao seu aplicativo que os arquivos de configuração estão presentes em /home/user/prog/etc/ ou /usr/local/etc/ e depure-o dessa maneira. Os diretórios de configuração de código de hardware são ruins por vários motivos.

Depois que você puder alterar o local em que seu código procura a configuração, você poderá testar o quanto quiser sem ter acesso a /etc/ , o que, na minha opinião, é o problema principal que você tem.

    
por 04.03.2016 / 14:13
0

Não sabe quão grandes são seus dados, mas você pode fazer rsync para mover seus dados da origem para o destino. O comando abaixo não excluirá nada do seu destino.

rsync -avz /some/directories/structure/ /etc/

Abaixo, o comando será alterado no seu diretório de destino.

rsync -av --delete /some/directories/structure/ /etc/

Isso excluirá o arquivo de /etc/ , que não está presente em /some/directories/structure/

    
por 04.03.2016 / 11:05
0

Sua intenção não está clara para mim, mas talvez o que você precise seja um link simbólico em / etc. Em caso afirmativo, consulte man ln .

    
por 04.03.2016 / 12:02