Como posso inteligentemente sincronizar diretórios no Linux?

0

Eu tenho dois diretórios no meu sistema Linux que quero sincronizar. A maior parte do conteúdo desses diretórios é a mesma, no entanto, alguns arquivos são diferentes:

O diretório A contém:

File 1
File 2
File 4
File 5

Diretório B contém:

File 1
File 2
File 3
File 5

Após a sincronização, quero que o diretório A e o diretório B contenham:

File 1
File 2
File 3
File 4
File 5

Este é um exemplo, os diretórios reais contêm milhares de arquivos e seu tamanho é vários GBs.

Como posso fazer isso no Linux?

Update : E se os arquivos 1, 2, 4, 5 não estiverem no diretório A, mas em um subdiretório AA que esteja no diretório A? Os arquivos no diretório B permanecem os mesmos. Após a sincronização, não quero acabar com várias cópias do Arquivo 1, 2, 5.

    
por Alex 16.07.2017 / 12:41

2 respostas

1

O que você quer é rsync :

$ cd -- "$(mktemp --directory)
$ mkdir A B
$ touch A/File\ {1,2,4,5}
$ touch B/File\ {1,2,3,5}
$ rsync -a A/ B
$ rsync -a B/ A
$ ls A B
A:
'File 1'  'File 2'  'File 3'  'File 4'  'File 5'

B:
'File 1'  'File 2'  'File 3'  'File 4'  'File 5'

rsync irá transportar apenas os arquivos necessários para sincronizar os diretórios. Ao contrário de outras ferramentas * nix, a barra após o nome do primeiro diretório é significativa - indica que o conteúdo do diretório de origem, em vez do próprio diretório, deve ser copiado.

    
por 16.07.2017 / 12:54
0

Supondo que os dois diretórios A e B estejam no mesmo nível

$ rsync -a A/ B/ & rsync -a B/ A/
    
por 16.07.2017 / 13:05