Назад | Перейти на главную страницу

Как я могу архивировать каталог, названный моим скриптом?

Я пишу сценарий для архивации каталога, а затем загружаю архив в S3. Каталог назван по дате, месяц-год. Вот моя попытка:

 TARNAME=`date --date="$(date +%Y-%m-15) -1 months" +' %B-%Y'`

 tar cvfz /tmp/$TARNAME.tar.gz  /Drive_E/drive_i_bu/monthly/$TARNAME
 /usr/local/bin/aws s3 mv /tmp/$TARNAME.tar.gz s3://test-roger/

Вышеупомянутое работает, если я не выполняю замену переменной. С переменной я получаю: tar: July-2016.tar.gz: Cannot stattar (child): /tmp/: Cannot open: Is a directory

Вдобавок tar пытается глубже погрузиться в каталог. Любые идеи? Опять же, вышеуказанное работает без подстановки переменных. Итак, проблема не в инструменте AWS CLI.

В ваш $TARNAME (увидеть ниже). Это вызывает /tmp/ и July-2016.tar.gz обрабатываться tar как отдельные аргументы

echo /tmp/$TARNAME.tar.gz
/tmp/ July-2016.tar.gz

Если вы избавитесь от этого, все должно работать так, как вы ожидаете. Похоже, это вызвано пробелом в

' %B-%Y'

Обратите внимание на пробелы:

tar cvfz /tmp/"${TARNAME}".tar.gz /Drive_E/drive_i_bu/monthly/"${TARNAME}" /usr/local/bin/aws s3 mv /tmp/"${TARNAME}.tar.gz" s3://test-roger/