分页: 1 / 1
大压缩文件如何读取部分内容
发表于 : 2012-09-08 15:54
由 Think1st
这个问题不知道放在哪里问比较好。
现手头有一个很大的压缩日志文件,大概有20G,格式lzo,现在文件每行的格式是固定的,但是不知道是什么。
现在我想读出这个压缩文件的第一行,有没有什么方法?
我想的是:——>解压出一个文件——>head读出来(好像想不开啊。。)
有没有便捷的方式呢?求助

Re: 大压缩文件如何读取部分内容
发表于 : 2012-09-09 9:06
由 cuihao
我不太了解压缩算法,但有些压缩格式确实没办法部分读取。比如7z就是,只有全部读取才能获取部分内容……
Re: 大压缩文件如何读取部分内容
发表于 : 2012-09-09 10:47
由 Dohw0Doh
看了一下, 好像不行哎. 你的LZO从哪来的, 如果是服务器上的, 看能不能再生成一个小点儿的日志文件. 20G确实太大了.
Re: 大压缩文件如何读取部分内容
发表于 : 2012-09-09 10:48
由 Dohw0Doh
gzip的可以单行操作的.
Re: 大压缩文件如何读取部分内容
发表于 : 2012-09-09 11:22
由 lilydjwg
cuihao 写了:我不太了解压缩算法,但有些压缩格式确实没办法部分读取。比如7z就是,只有全部读取才能获取部分内容……
7z 不是支持读取单个文件的吗?这不也算是部分读取吗?
Re: 大压缩文件如何读取部分内容
发表于 : 2012-09-09 11:36
由 cuihao
lilydjwg 写了:cuihao 写了:我不太了解压缩算法,但有些压缩格式确实没办法部分读取。比如7z就是,只有全部读取才能获取部分内容……
7z 不是支持读取单个文件的吗?这不也算是部分读取吗?
大概是我记错格式了吧,找了个rar试了试:
代码: 全选
cuihao@cuihao-arch shm $ time unrar x *.rar > /dev/null
unrar x *.rar > /dev/null 1.95s user 0.21s system 96% cpu 2.233 total
cuihao@cuihao-arch shm $ time unrar x *.rar n Lesson01.mp3 Lesson15.mp3 Lesson22.mp3 > /dev/null
unrar x *.rar n Lesson01.mp3 Lesson15.mp3 Lesson22.mp3 > /dev/null 1.76s user 0.10s system 97% cpu 1.898 total
有24个大小差不多的mp3文件和几个文本文件,单独解压3个文件的时间和全部解压的时间是差不多的……
Re: 大压缩文件如何读取部分内容
发表于 : 2012-09-09 12:24
由 lilydjwg
cuihao 写了:lilydjwg 写了:cuihao 写了:我不太了解压缩算法,但有些压缩格式确实没办法部分读取。比如7z就是,只有全部读取才能获取部分内容……
7z 不是支持读取单个文件的吗?这不也算是部分读取吗?
大概是我记错格式了吧,找了个rar试了试:
代码: 全选
cuihao@cuihao-arch shm $ time unrar x *.rar > /dev/null
unrar x *.rar > /dev/null 1.95s user 0.21s system 96% cpu 2.233 total
cuihao@cuihao-arch shm $ time unrar x *.rar n Lesson01.mp3 Lesson15.mp3 Lesson22.mp3 > /dev/null
unrar x *.rar n Lesson01.mp3 Lesson15.mp3 Lesson22.mp3 > /dev/null 1.76s user 0.10s system 97% cpu 1.898 total
有24个大小差不多的mp3文件和几个文本文件,单独解压3个文件的时间和全部解压的时间是差不多的……
代码: 全选
10198 ~tmp
>>> mkdir test1 test2
10199 ~tmp
>>> time (cd test1 && exec unrar x ../t.rar)
UNRAR 4.20 freeware Copyright (c) 1993-2012 Alexander Roshal
Extracting from ../t.rar
Extracting .................................. OK
Extracting .................................. OK
Extracting .................................. OK
Extracting .................................. OK
Extracting .................................. OK
All OK
( cd test1 && exec unrar x ../t.rar; ) 0.01s user 0.01s system 21% cpu 0.063 total
10200 ~tmp
>>> time (cd test2 && exec unrar x ../t.rar ...........)
UNRAR 4.20 freeware Copyright (c) 1993-2012 Alexander Roshal
Extracting from ../t.rar
Extracting .................................. OK
All OK
( cd test2 && exec unrar x ../t.rar ...........; ) 0.01s user 0.00s system 19% cpu 0.033 total
随手找的文件,所以把文件名换成 . 了。第二次解压的是倒数第二个文件。文件都在 tmpfs 上。
你那个是固实压缩?或者是未压缩直接取出的所以速度只受 I/O 的影响?rar 默认是会将图片、音视频等已经压缩过的文件直接复制而不压缩的。
Re: 大压缩文件如何读取部分内容
发表于 : 2012-09-09 12:49
由 cuihao
唔,我是在/dev/shm解压的,所以应该不是IO的问题。
压缩包是网上下的,怎么压就不知道了。
查了查“固实压缩”这个名词,貌似就是我想表达的无法单独取出的意思……
Re: 大压缩文件如何读取部分内容
发表于 : 2012-09-09 12:58
由 lilydjwg
cuihao 写了:唔,我是在/dev/shm解压的,所以应该不是IO的问题。
压缩包是网上下的,怎么压就不知道了。
查了查“固实压缩”这个名词,貌似就是我想表达的无法单独取出的意思……
嗯,就是把许多文件当成一个大文件了,要单个取出就麻烦了,不然也不会不是默认。