满意答案
婂婲餹鈽玎
2013.08.01
采纳率:53% 等级:13
已帮助:8544人
我觉得LZ可以解压部分文件出来处理。
先查看下tar包中的内容,
tar -ztvf your.tar.gz > tar_list.txt
vi tar_list.txt
然后自己定夺每次解压出多少个文件 出来进行处理。
tar -zxvf your.tar.gz 选定问文件names
从大tar包中解压单个文件是非常耗时间的,你这个上百G的tar包真的够呛!
------------------------------------------------------------------------------------------------------------
回复时文字限制我200字符,只得在修改回答这里了。
上百G的数据对任何一个语言的数组来说都是棘手的,内存要消耗不起,必须分割成块处理。
split是连压缩包也可以分割的,且最多可以分割为26*26=676个子文档,这样就可以分块处理了。
首先,你需要知道txt数据存放的形式,以便于分割时的完整性以及后期的处理。(不知道也没关系,可以先split一小块出来,解压后看看数据存放形式)。
存放形式——比如每365行包含一个抬头如下:
2000年data
1 ...
2 ...
365 ...
2001年data
1 ...
2 ...
365 ...
(1)那么你就每366行截出一个数据:split -l 366 your.tar.gz split.tar.gz_
(2)如果没啥规律,而你又想按照文件大小来分割:
split -b 10m your.tar.gz split.tar.gz_
单个文件大小是标准的10M
split -C 10m your.tar.gz split.tar.gz_
考虑到了每行的完整性,文件大小就在10M左右
(1)(2)两种方法均会生成这种形式的文件split.tar.gz_aa,split.tar.gz_ab,split.tar.gz_ac ...
下面你就要随时注意着文件生成的数量,达到一定数量时,要中止split,(Ctrl+c)或者挂起split(Ctrl+z).等这批分割文件处理完成后,再继续split压缩包。
推荐挂起的方式Ctrl+z,所在的窗口就放在一边,不要在此窗口上执行其他的命令了。等上一批分割文件处理完后,再回到该窗口,在命令行敲入bg回车,再敲入fg,它就在原先断掉的地方继续分割出新文件了。
01分享举报