Uma pasta com dois locais diferentes no Ubuntu 18.04

10

Eu quero ter a mesma pasta em dois locais diferentes no meu Ubuntu. Se eu atualizar algo em um, ele também deverá ser atualizado no outro local.

Como posso fazer isso acontecer?

Aman Pandey
fonte
8
esses dois locais precisam ser físicos (como em 2x ocupando espaço) ou podem ser links?
Rinzwind
19
A symbolic linké a solução mais simples para seus requisitos e não depende de privilégios de superusuário. man lnPara maiores informações.
doneal24

Respostas:

16

Use montagens de ligação .

Suponha que você tenha um diretório existente /home/pandey/originale deseje espelhá- lo para /home/pandey/mirrorque tudo o que você faça em um deles seja feito automaticamente no outro também.

Isso não requer nenhuma sincronização ou cópia entre os dois diretórios. Uma montagem de ligação é apenas outra visualização do diretório original e o que acontece em uma também acontece na outra.

  1. Crie (como usuário) o novo diretório /home/pandey/mirror:

    mkdir /home/pandey/mirror
    
  2. bind-mount o diretório original no caminho recém-criado. Isso requer acesso root:

    sudo mount --bind /home/pandey/original /home/pandey/mirror
    
  3. Apreciar.

Para desfazer isso, basta

sudo umount /home/pandey/mirror
rmdir /home/pandey/mirror

Consulte também esta pergunta e sua excelente resposta automática em stackexchange sobre bind-mounts .

PerlDuck
fonte
3
+1, com certeza esse caminho é mais rápido do que o proposto.
Codito ergo sum 23/06/19
13
Teria cd /home/pandey; ln -s original mirroro mesmo efeito e não exigiria direitos de sudo?
doneal24
19
Sim, estou me perguntando por que as pessoas estão propondo essas soluções indiretas enquanto isso soa como um caso de uso clássico para um simples link sym. Qual a vantagem? Até onde eu vejo, nenhuma das vantagens listadas na pergunta mencionada parece se aplicar aqui.
Voo
5
@ doneal24 Eu concordo: a ligação simbólica tem o mesmo efeito de um ponto de vista prático e não requer alterações fundamentais no sistema nem privilégios de administrador.
vanadium
2
A pergunta vinculada sobre montagens de ligação possui uma boa lista de possíveis casos de uso. Apenas precisar de outro caminho nomeado para um diretório não é um deles.
Dubu
44

Como apontado nos comentários, mas não como uma resposta adequada:

Em muitos casos, um link simbólico é a solução mais fácil.

Você pode criá-los facilmente na linha de comando (usando o lncomando com o -sparâmetro). Você também pode criá-los facilmente usando uma GUI: A maioria dos navegadores de arquivos (nautilus, ...) permite criar um link simbólico usando arrastar e soltar (como mover um arquivo) enquanto mantém pressionada uma tecla modificadora (CTRL + SHIFT).

Exemplo para uso da linha de comando:

$ mkdir first_dir
$ ln -s ./first_dir ./second_dir
$ ls 
first_dir  second_dir

$ touch ./first_dir/test_1
$ touch ./second_dir/test_2

$ ls ./first_dir 
test_1  test_2

$ ls ./second_dir
test_1  test_2
mnagel
fonte
2

Você pode fazer isso definindo um trabalho crontab:

  • Abra seu terminal e digite crontab -e
  • Pressione ipara ativar o modo de inserção do seu editor vim.

Você pode inserir o comando que deseja que seja executado lá, para poder copiar todos os arquivos da pasta em outra pasta. Por exemplo, se você deseja copiar todos os arquivos em /home/user/folder_nameque /home/user/publicvocê deve inserir este comando no seu crontabarquivo:

rsync /home/user/folder_name -r /home/user/public

Isso copiará todos os arquivos no intervalo desejado. Se você deseja copiar todos os arquivos às 21:30 todos os dias, sua edição deve ser:

 30 21 * * *  rsync /home/user/folder_name -r /home/user/public

Para mais informações sobre o crontab, procure aqui ou use man crontab.

Codito ergo sum
fonte
Eu provavelmente usaria montagens de ligação como @PerlDuck, pois é uma maneira fácil e sustentável de fazer isso. Eu não usaria cronjobs, pois isso pode levar a todos os tipos de problemas de desempenho em sua máquina se você acabar sincronizando uma pasta em vários locais e os arquivos na primeira pasta forem muito grandes ou numerosos. Minha empresa está usando essa abordagem para simular o comportamento do Dropbox / Drive e agora que alcançamos um grande número de arquivos, alguns deles com GB de tamanho, a solução simplesmente não aumenta mais.
amigável
2
Este é dois diretórios, não um.
rage