我有一个226GB的日志文件,我想把它分成块,以便于xz ing。 问题是我的可用空间只剩下177GB的空间。
有一种方法可以split文件split一半或者分成N块,而不需要保留原始的副本。
$ split myFile.txt $ ls -halF -rw-r--r-- 1 user group 35 Dec 29 13:17 myFile.txt -rw-r--r-- 1 user group 8 Dec 29 13:18 xaa -rw-r--r-- 1 user group 3 Dec 29 13:18 xab -rw-r--r-- 1 user group 5 Dec 29 13:18 xac -rw-r--r-- 1 user group 10 Dec 29 13:18 xad -rw-r--r-- 1 user group 8 Dec 29 13:18 xae -rw-r--r-- 1 user group 1 Dec 29 13:18 xaf
我宁愿只是没有myFile.txt遗留下来,只有分割文件。 我会很高兴地坚持默认行为,并删除原来的,但我只是没有可用的空间来完成。
我不是sed或awk的专家,但是我想也许会有办法“去掉另一个文件”那种可以用其中一个来实现的行为?
什么可能工作是将它的部分直接stream入xz – 我想你可以压缩一个足够好的日志文件,以适应原始和压缩的部分到你的空间左侧。
获取行数:
wc -l myFile.txt
使用sed将你想要的部分放入xz :
sed -n '1,10000p' myFile.txt | xz > outfile01.xz sed -n '10001,20000p' myFile.txt | xz > outfile02.xz
等等。这当然可以用脚本来完成。
但说实话,做EEAA说…
你可以做连续的尾巴和截断化身,从海量文件的末尾切出块。
就像是
tail -n 10000 myFile.txt > myFile.001.txt truncate -s -$(wc -c myFile.001.txt) myFile.txt xz myFile.001.txt rm myFile.001.txt
你也可以编写脚本。 不过,运行可能需要一段时间,而且只是在箱子外面处理就好多了。