Existem duas abordagens que posso pensar em cima da minha cabeça. A primeira envolveria o uso de rsync
, a segunda seria usar uma combinação de ssh
& %código%.
OBSERVAÇÃO: Ambas as abordagens comparam um diretório na máquinaA que tem todos os arquivos com um subconjunto desses arquivos nos computadores B e C da máquina, mostrando qual máquina (B ou C) foi o originador dos referidos arquivos.
Exemplo de dados
Digamos que eu tenha feito a seguinte configuração de arquivos no machineA.
$ ls
t1_1980_10_200003_5.data t1_1980_4_200003_5.data t1_1980_8_200003_5.data
t1_1980_1_200003_5.data t1_1980_5_200003_5.data t1_1980_9_200003_5.data
t1_1980_2_200003_5.data t1_1980_6_200003_5.data
t1_1980_3_200003_5.data t1_1980_7_200003_5.data
Método 1 - rsync
Agora vamos descobrir quais arquivos nesse diretório vieram do machineB.
$ rsync --dry-run -avz machineB:~/20140317/ .
receiving incremental file list
./
t1_1980_1_200003_5.data
t1_1980_2_200003_5.data
t1_1980_3_200003_5.data
t1_1980_4_200003_5.data
t1_1980_5_200003_5.data
sent 29 bytes received 165 bytes 129.33 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
Enquanto machineC:
$ rsync --dry-run -avz machineC:~/20140317/ .
receiving incremental file list
./
t1_1980_10_200003_5.data
t1_1980_6_200003_5.data
t1_1980_7_200003_5.data
t1_1980_8_200003_5.data
t1_1980_9_200003_5.data
sent 29 bytes received 166 bytes 390.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
Método 2 - ssh + diff
Como alternativa, você pode usar alguns diff
e ssh
semicolares para fazer algo semelhante.
$ cd /dir/with/machBC
$ diff -B <(ssh user@machineB "ls -R ~/20140317/") <(ls -R .)
> .:
> t1_1980_10_200003_5.data
> t1_1980_6_200003_5.data
> t1_1980_7_200003_5.data
> t1_1980_8_200003_5.data
> t1_1980_9_200003_5.data