У меня есть этот вывод из команды 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
..
Я пытаюсь проверить, совпадает ли md5sum
из моего объекта в корзине с моим md5sum
на моей локальной машине. Поэтому для этого мне нужно получить результат hash
в качестве fourth
столбца и имя файла в качестве fifth
столбца.
Как это:
41eae9b40d23de2f02bf07635870f6d0 s3://company-backup/company/amazon/ip-11-11-111-11/backup_server245/app.20121117040001.gz
Но мне нужно только имя файла, поэтому для этого я использую команду basename
(я пока не знаю, как ее использовать, но выясню), в конце это выглядит так:
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;
Теперь мне нужно сохранить результат из echo's
в той же переменной, как эти:
41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
Таким образом, я мог бы сравнить результаты s3cmd ls --list-md5sum
с моим md5sum *.gz
работающим локально.
update Используя подход diff, моя команда выглядит так:
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)
Дать следующий результат:
1,50c1,49
< d41d8cd98f00b204e9800998ecf8427e
< 41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
< 541b1bf78682f48867cc99dbb53c4c3a app.20121118040001.gz
..
---
> 41eae9b40d23de2f02bf07635870f6d0 /backup/diveo245/app.20121117040001.gz
> 541b1bf78682f48867cc99dbb53c4c3a /backup/diveo245/app.20121118040001.gz
..
Но как узнать файл, который отличается тогда? (потому что все равные я могу удалить alredy)