我在 CentOS 6.3 机器上有一堆应用程序,它们以这种方式生成每日日志(内容非常相似的文本文件):
/data/logs/app/my-2014-06-29.log
/data/yet_another_app/logs/catalina.20140629
/data/in_fact/there_are/around_500_such_paths/2014-06-29-1.log
我需要将这些日志保存 5 年。我目前以传统的 Unix 方式对待它们,只是将它们压缩到位(如.log.bz2
),但我不满意它们仍然占用大量空间。我觉得我可以节省很多空间,但先压缩它们,然后再压缩(想想一个巨大的 .zip 可以容纳一整年的日志)。
要求:
RHEL 犹太洁食
请不要“从源代码编译”。如果它还不够成熟,无法以 .rpm 形式分发,那么它不适合我。
grep
存档应该允许递归 grep (如grep -rli
):
grep_my_zip -rli pattern /this/and/that/wildcards/2014-06-*
grep 时,存档不应解压缩所有内容,而应仅解压缩与通配符匹配的文件。
附加
每周我都会将文件放入相同的归档并从文件系统中删除它们:
append_and_remove $( find /this/and/that -name '*.log' -type f -mtime +31 ) # weekly log cleaning job
这不是每周存档,我想每周附加到一个大的年度存档中。
微软视窗访问
Archive 虽然主要在 CentOS Linux 上运行,但也应该允许在 Windows 上进行单个文件检索以用于紧急目的(因此,squashfs 风格的文件系统不是一个可行的选择)。
可选的东西(一个加号,但不是必需的)
- 追加应该是有效的空间 - 考虑到以前的日志文件与当前的日志文件非常相似
- 每周工作的 logrotate 集成
- grep_my_zip 适用于 Windows
- 存档还可以是可更新的(即可写的),而不仅仅是可追加的
最初发布对于这个可怜的弟弟
答案1
我对各种压缩机的研究表明,为了节省空间,不值得走上非传统的道路。
- 8800M解包双周输入(5842个文件)
- 270M 只是 bzip2 (传统 logrotate 风格 - 单独的 .log.bz2 文件)
- 257M 焦油 bzip2
- 400M拉链
- 132M p7zip(兼容 Windows .7z)
- 140M焦油xz
- 129M 焦油lrzip