amazon-web-services - 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 通配符?
解决方案
AWS cli 文档指出他们的 CLI 工具确实直接支持 glob 通配符。相反,您应该使用 --include 或 --exclude 参数。
我最终使用:
/usr/bin/aws s3 mv /var/log/application/ s3://mybucket --exclude '*' --include '*.gz' --recursive
--recursive 标志很重要,否则它将不起作用。