Сжать с помощью tar и проверить, затем загрузить в S3 и проверить

#bash #amazon-web-services #shell #amazon-s3 #tar

Вопрос:

Я сжимаю файл резервной копии БД, а затем загружаю его в S3.

Он работает и успешно загружается, но я не знаю, как подтвердить его успешность. Так как я не получаю никаких выходных данных.

 COMPRESSING_0=`tar cvzf - $BACKUP_PATH_DB/$YEAR_MONTH/${DB_NAME}-${DATE}.bak` | UPLOADING_TO_S3_0=`aws s3 cp - s3://db-bckp/db/${DB_NAME}.tar.gz`
 

Вопрос:

  • 1: Как я могу проверить сжатие tar из конвейера?
  • 2: Как я могу подтвердить, что он успешно загружен в S3 (поскольку он ничего не возвращает)?

Комментарии:

1. Если он «работает и успешно загружается», что именно вы хотите проверить? Кажется, все в порядке.

2. @Marcin, что это было успешно. Так что я могу запланировать это в кукурузе… Например, загрузка файла S3 ничего не возвращает.

3. Вы имеете в виду какую-то контрольную сумму хэша или существует ли файл после загрузки в S3?

4. @Marcin, был ли он успешно обновлен. Я не хочу хэшировать загруженный файл. Просто хочу убедиться, что сжатие tar было успешным.

5. Извините, но меня смущает ваш код. Вы уверены, что это работает? Потому что, насколько я понимаю, это не сработает, по крайней мере, не так, как вы думаете, что это работает.

Ответ №1:

При работе с каналами в bash, если вы хотите прочитать коды возврата каждой команды, вы будете использовать переменную PIPESTATUS массива.

PIPESTATUS определяется для каждой выполняемой команды (с использованием канала или без него).

Вот пример:

 $ x=`ls /root >/dev/null 2>amp;1` | y=`lsx / >/dev/null 2>amp;1`
$ echo ${PIPESTATUS[*]}
2 127
 
  • 2 Это код возврата для первой команды ( ls )
  • 127 Это код возврата для второй команды (неизвестно lsx )