如何使用 logrotate 和 Amazon S3 备份文件?

如何使用 logrotate 和 Amazon S3 备份文件?

我想创建两个方面的新标准:
我的应用程序生成的日志需要多长时间生成并轮换?
如何将日志传输到 Amazon S3 作为备份服务器?

我正在考虑使用 logrotate,以这种方式旋转和压缩我的日常文件:

{filename}-{year}-{month}-{day}-{r-months}.gz

r-months变量的意思是remain-months文件应该在 S3 中保留多少个月,超过该时间的文件应该被删除。

我的一个朋友给了我一个想法,我应该compress the logs daily(采用上面提出的新格式),然后这些文件应该被发送到我们在 Amazon S3 中的存储桶中。然后files older than 7 days should be removed by logrotate(因为它们已经在 S3 中了)。

如今,我们的应用程序使用log4j和其他程序来生成日志。

1) 我们是否应该禁用由我们的应用程序生成的版本日志并仅使用 logrotate 处理?
2) 您认为这会导致某些应用程序崩溃吗?
3) 这种新的日志格式很好吗?
4) 如何将文件发送到 S3? 现在,我正在使用s3cmd,您推荐我其他工具了吗?

答案1

关于你的问题#4:

您可以将 S3 存储桶挂载为本地分区,并使用位于服务器文件系统上的 S3 文件。一个号码好的可用的开源工具。

但从我的角度来看,我建议您看看我的项目:里约热内卢,一个用于挂载 Amazon S3 存储桶的用户空间文件系统。该项目的目标和与其他类似工具相比的主要优势是:简单、操作速度快、代码无错误。

目前该项目处于“测试”状态,但它已经在几个高负载的文件服务器上运行了相当长一段时间(里约热内卢提供对位于 S3 的文件到 ftp/sftp 服务器的访问)。

我们正在围绕我们的项目建立一个社区,并寻求更多人加入我们的项目,讨论未来计划并帮助进行测试。我们这边提供快速错误修复,并会听取您添加新功能的请求。

快速操作方法:

您可以使用以下命令挂载存储桶(假设您已经安装了 RioFS 并已导出 AWSACCESSKEYID 和 AWSSECRETACCESSKEY 环境变量):

riofs http://s3.amazonaws.com your_bucket_name /path/to/localfolder

(请参阅项目描述并运行riofs --help以获取命令行参数的帮助)

请注意,该项目仍在开发中,可能仍存在一些错误。如果您发现某些功能未按预期运行:请在项目的 GitHub 页面上填写问题报告。

希望它能有所帮助,我们期待看到您加入我们的社区!

相关内容