2014-01-14 107 views
0

我曾嘗試以下,但生成的文件保持在大小爲0如何將「tail -f」壓縮成壓縮(gziped)文件?

tail -f /logs/localhost.log | gzip -c -9 -f > compressed.gz 

localhost.log十分活躍。

謝謝。

+2

gzip做了很多緩衝。在任何輸出到達之前,它可能需要超過1000行。也許它不是*那*活躍? – pentadecagon

+0

爲什麼不'gzip -c -9 -f/log/compressed.gz'? –

回答

0

你不能這樣做,因爲gzip實用程序不會逐行讀取輸入,它需要EOF。 但是你可以使用任何具有zlib實現的編程語言編寫你的包裝器。

+0

我不確定'gzip'是逐行讀取的(但它肯定有一些緩衝區),我不確定它在EOF之前不會工作(實際上,在'tar'之後的管道中使用'gzip'時和'tardy'它在EOF之前開始工作)。 –

1

logrotate(8)旨在解決這類問題 - 它旋轉並壓縮日誌文件。

1

你只是沒有耐心。這將工作,並將寫入gzip文件。積累足夠的輸入來寫第一個壓縮塊需要一段時間。特別是如果輸入是高度可壓縮的,例如日誌條目彼此非常相似。

儘管gzip文件永遠不會被正確終止,但這有一個問題,因爲gzip永遠不會得到文件結尾。