首页 > 解决方案 > Logrotate Postrotate aws s3 通配符

问题描述

我正在尝试旋转一堆日志文件并使用postrotate命令将它们上传到 S3。但是,似乎 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

(注意单引号)。

我该怎么做才能在 postrotate 步骤中扩展 glob 通配符?

标签: amazon-web-servicesamazon-s3shlogrotate

解决方案


AWS cli 文档指出他们的 CLI 工具确实直接支持 glob 通配符。相反,您应该使用 --include 或 --exclude 参数。

我最终使用:

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

--recursive 标志很重要,否则它将不起作用。


推荐阅读