Logrotate Postrotate Подстановочные знаки aws s3

Я пытаюсь повернуть кучу файлов журнала и загрузить их на S3 с помощью команды postrotate. Однако похоже, что скрипт postrotate не расширяет подстановочный знак * glob:

Моя конфигурация logrotate:

/var/log/application/*.log {
 missingok
  dateext
  size 500M
  notifempty
  copytruncate
  compress
  rotate 1512
  postrotate
     /usr/bin/aws s3 mv /var/log/application/*.gz  s3://mygreatbucket/
  endscript
}

Ошибка, которую я вижу при запуске logrotate с этой конфигурацией:

The user-provided path /var/log/application/*.gz does not exist.

Это сообщение от команды aws cli s3. Что я могу воспроизвести, если я вручную запущу свою команду:

/usr/bin/aws s3 mv '/var/log/application/*.gz'  s3://mygreatbucket

(обратите внимание на одинарные кавычки).

Что я могу сделать, чтобы подстановочный знак глобуса расширялся на этапе постповорота?


person obaqueiro    schedule 22.04.2020    source источник


Ответы (1)


В документации AWS cli указано, что их инструмент CLI напрямую поддерживает подстановочные знаки. Вместо этого вы должны использовать параметры --include или --exclude.

В итоге я использовал:

/usr/bin/aws s3 mv /var/log/application/ s3://mybucket --exclude '*' --include '*.gz' --recursive

Флаг --recursive важен, иначе он не будет работать.

person obaqueiro    schedule 22.04.2020