Você deve conseguir isso com rsync
, usando o sinalizador --existing
:
--existing skip creating new files on receiver
dado
$ tree -a A/ B/
A/
├── bar
├── baz
├── foo
└── .hidden
B/
├── bam
├── baz
├── foo
└── .hidden
0 diretórios, 8 arquivos
em que baz
, foo
e .hidden
são comuns, mas bar
existe somente na origem e bam
apenas no destino, então (nota: incluímos o verboso -v
e -n
"run dry" flag com a finalidade de ilustração):
$ rsync -avn --existing A/ B/
sending incremental file list
.hidden
baz
foo
sent 152 bytes received 25 bytes 354.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
atualiza apenas baz
, foo
e .hidden
. (Arquivos que existem apenas no destino são ignorados por padrão).
Você pode verificar se sem --existing
, bar
também seria copiado:
$ rsync -avn A/ B/
sending incremental file list
.hidden
bar
baz
foo
sent 155 bytes received 28 bytes 366.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)