Eu tenho essa saída de um comando s3cmd ls --list-md5
.
2013-05-22 12:20 1965154 41eae9b40d23de2f02bf07635870f6d0 s3://company-backup/company/amazon/ip-11-11-111-11/backup_server245/app.20121117040001.gz
2013-05-22 12:20 11456836 541b1bf78682f48867cc99dbb53c4c3a s3://company-backup/company/amazon/ip-11-11-111-11/backup_server245/app.20121118040001.gz
..
Estou tentando verificar se o md5sum
do meu objeto no bucket corresponde ao meu md5sum
em minha máquina local. Então, para isso, preciso obter o resultado hash
como a coluna fourth
e o nome do arquivo como a coluna fifth
.
Assim:
41eae9b40d23de2f02bf07635870f6d0 s3://company-backup/company/amazon/ip-11-11-111-11/backup_server245/app.20121117040001.gz
Mas eu preciso apenas do nome do arquivo, então para isso eu estou usando o comando basename
(eu não sei como usá-lo aqui ainda, mas vou descobrir), no final está parecendo assim:
s3='s3cmd ls --list-md5 s3://company-backup/company/amazon/ip-11-11-111-11/backup_server245/';
echo "$s3";
echo "$s3" | tr -s ' ' | cut -d ' ' -f 4;
echo "$s3" | tr -s ' ' | cut -d ' ' -f 5;
Agora preciso armazenar o resultado do echo's
na mesma variável como:
41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
Para comparar os resultados de s3cmd ls --list-md5sum
com meu md5sum *.gz
em execução localmente.
atualização
Usando a abordagem diff, meu comando se parece com:
ls --list-md5 s3://company-backup/company/amazon/ip-11-11-111-11/backup/server245/ \
| tr -s ' ' \
| cut -d ' ' -f 4,5 \
| sed 's= .*/= =' \
| diff -w - <(md5sum /backup/server245/*.gz)
Dando o resultado a seguir:
1,50c1,49
< d41d8cd98f00b204e9800998ecf8427e
< 41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
< 541b1bf78682f48867cc99dbb53c4c3a app.20121118040001.gz
..
---
> 41eae9b40d23de2f02bf07635870f6d0 /backup/diveo245/app.20121117040001.gz
> 541b1bf78682f48867cc99dbb53c4c3a /backup/diveo245/app.20121118040001.gz
..
Mas como saber o arquivo que é diferente então? (porque todos os que são iguais eu posso deletar alredy)