rsync foi projetado exatamente para resolver este problema:
[$]> rsync -av --ignore-existing dirA/ dirB/
Como seria possível copiar todo o novo conteúdo de um diretório para outro, de modo que apenas novos arquivos sejam copiados do diretório de origem (os dois diretórios possuem a mesma árvore de nomes). Por exemplo, aqui está o layout do diretório A:
/dirA
a.php
b.txt
subdirA1/
readme.txt
config
source_file1.c
/dirB
c.php
subdirA1/
readme.txt
no final dirB deve ter todos os novos arquivos em dirA . Suponha que existam apenas novos arquivos em dirA e seus subdiretórios. O resultado deve ser a união dos dois diretórios:
/dirB
a.php
b.txt
c.php
subdirA1/
readme.txt
config
source_file1.c
Eu tentei usar o cp -ra:
cp -ra dirA/* dirB/
mas dirB é totalmente substituído por dirA .
rsync foi projetado exatamente para resolver este problema:
[$]> rsync -av --ignore-existing dirA/ dirB/