Zen*_*Zen 26 command-line tar compression gzip disk-usage
我有一台硬盘使用率为 90% 的机器。我想将其 500 多个日志文件压缩成一个较小的新文件。但是,硬盘太小,无法同时保存原始文件和压缩文件。
所以我需要的是将所有的日志文件一个一个地压缩成一个新的文件,压缩后删除每个原始文件。
我怎样才能在 Linux 中做到这一点?
apa*_*aul 23
gzip
或bzip2
将压缩文件并自动删除未压缩的文件(这是他们的默认行为)。
但是,请记住,在压缩过程中,两个文件都将存在。
如果您想压缩日志文件(即:包含文本的文件),您可能更喜欢bzip2
,因为它对文本文件有更好的比率。
bzip2 -9 myfile # will produce myfile.bz2
Run Code Online (Sandbox Code Playgroud)
比较和示例:
$ ls -l myfile
-rw-rw-r-- 1 apaul apaul 585999 29 april 10:09 myfile
$ bzip2 -9 myfile
$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 115780 29 april 10:09 myfile.bz2
$ bunzip2 myfile.bz2
$ gzip -9 myfile
$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 146234 29 april 10:09 myfile.gz
Run Code Online (Sandbox Code Playgroud)
正如@Jjoao 在评论中告诉我的那样更新,有趣的是,xz
它的默认选项似乎对普通文件有最佳比例:
$ xz -9 myfile
$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 109384 29 april 10:09 myfile.xz
Run Code Online (Sandbox Code Playgroud)
有关更多信息,这里是不同工具的有趣基准:http : //binfalse.de/2011/04/04/comparison-of-compression/
对于上面的示例,我使用-9
了最佳压缩率,但是如果压缩数据所需的时间比压缩率更重要,则最好不要使用它(使用较低的选项,即-1
,或介于两者之间的选项)。
Zen*_*Zen 20
我自己想出了一个焦油解决方案。
将单个文件压缩到目标文件后删除。
不过压缩速度不是很快。命令看起来像:
tar -zcvf my_log.tar.gz *.log --remove-files
Run Code Online (Sandbox Code Playgroud)