Apache-2.2

連接 gzip 的 Apache 日誌

  • May 2, 2010

我們每天輪換和壓縮我們的 Apache 日誌,但很明顯這還不夠頻繁。一個未壓縮的日誌大約有 6G,快要填滿我們的日誌分區了(是的,我們以後會把它做得更大!)並且每天要花費大量的時間和 CPU 來壓縮。我們必須為我們的統計處理每天生成一個壓縮日誌。顯然我們可以將我們的日誌移動到一個有更多空間的分區,但我也想把壓縮成本分散到一整天。

使用 Apache 的rotatelogs,我們可以更頻繁地旋轉和壓縮日誌——例如每小時一次——但是我怎樣才能將所有每小時壓縮的日誌連接到當天正在執行的壓縮日誌中,而無需解壓縮以前的日誌呢?我不想解壓縮 24 小時的數據並重新壓縮它,因為這具有我們目前解決方案的所有缺點。

Gzip 似乎沒有提供任何附加或連接選項,但也許我錯過了一些明顯的東西。這個問題表明直接的外殼連接“有效”,因為可以解壓縮存檔,但這gzip -l不起作用似乎有點狡猾。

或者,也許這仍然是一種糟糕的做事方式。歡迎提出其他建議——我們唯一的限制是我們相對較小的日誌分區以及需要提供每日壓縮日誌。

gzip 手冊頁應該有你想要的,但你可以直接連接它們:

cat file1.gz >> file2.gz
gzip -c file1 >> file2.gz

壓縮不如僅壓縮一個文件,但您可以通過以下方式恢復:

zcat old.gz | gzip > new.gz

gzip 不在乎。您可以連接 gzip 壓縮的文件,就像您連接它們然後 gzip 壓縮它們一樣。

$ echo foo |gzip >/tmp/log.gz
$ echo bar |gzip >>/tmp/log.gz
$ zcat /tmp/log.gz
foo
bar

引用自:https://serverfault.com/questions/55979