gzip
or bzip2
will compress the file and remove the non-compressed one automatically (this is their default behaviour).
However, keep in mind that while the compressing process, both files will exists.
If you want to compress log files (ie: files containing text), you may prefer bzip2
, since it has a better ratio for text files.
bzip2 -9 myfile # will produce myfile.bz2
Comparison and examples:
$ 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
UPDATE as @Jjoao told me in a comment, interestingly, xz
seems to have a best ratio on plain files with its default options:
$ xz -9 myfile
$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 109384 29 april 10:09 myfile.xz
For more informations, here is an interesting benchmark for different tools: http://binfalse.de/2011/04/04/comparison-of-compression/
For the example above, I use -9
for a best compression ratio, but if the time needed to compress data is more important than the ratio, you'd better not use it (use a lower option, ie -1
, or something between).