我有一个相当大的日志文件。所以我想在将它传输到我的电脑之前先对其进行 gzip 压缩。我这样做了
gzip bla.log
这给了我一个小小的
bla.log.gz
当我使用提取它时
gunzip bla.log.gz
我回到我的 bla.log,但是它很小,当我用 vi 打开它时,它看起来像这样:
^@^@^@^@^@^@^@^@^@^@^@
为什么会发生这种情况? 有没有办法从这个 .gz 存档中获取我的日志文件?
顺便说一句,我使用的是 Linux x86_64 x86_64 x86_64 GNU/Linux
答案1
这很奇怪。
它到底有多小?原始日志文件有多大?它file bla.log.gz
说了什么?
通常gzip bla.log
会写入bla.log.gz
,然后如果成功则删除bla.log
。 gunzip blo.log.gz
会写入bla.log
然后删除bla.log.gz
。
如果在执行命令期间出现问题gzip
(例如,空间不足、超出配额、被信号杀死或计算机断电),那么您很容易得到部分或损坏的文件bla.log.gz
- 但原始bla.log
文件应该仍然在那里。
如果你跑了gunzip bla.log.gz
,你应该得到如下提示:
gzip: bla.log already exists; do you wish to overwrite (y or n)?
它不应该bla.log
除非 (a) 您告诉它这样做(通过使用gunzip -f
或回答y
上述提示),或 (b) 它成功生成,否则它将破坏您的原始文件bla.log.gz
。
回答你的问题,如果bla.log.gz
它只包含几个零字节,那么你将不会从中获得任何有用的东西。
答案2
通常情况下不应该发生这种情况。尝试使用 gzless 之类的工具读取 gz 文件。如果这也有问题。压缩时出了问题。