gzip использует алгоритм deflate , который, грубо говоря, сжимает файлы, заменяя повторяющиеся строки указателями на первый экземпляр строки. Таким образом, очень повторяющиеся данные сжимаются исключительно хорошо, в то время как чисто случайные данные будут сжиматься очень мало, если вообще.
с помощью демонстрации:
[chris@polaris ~]$ dd if=/dev/urandom of=random bs=1048576 count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.296325 s, 3.5 MB/s
[chris@polaris ~]$ ll random
-rw-rw-r-- 1 chris chris 1048576 2010-08-30 16:12 random
[chris@polaris ~]$ gzip random
[chris@polaris ~]$ ll random.gz
-rw-rw-r-- 1 chris chris 1048761 2010-08-30 16:12 random.gz
[chris@polaris ~]$ dd if=/dev/zero of=ordered bs=1048576 count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00476905 s, 220 MB/s
[chris@polaris ~]$ ll ordered
-rw-rw-r-- 1 chris chris 1048576 2010-08-30 16:12 ordered
[chris@polaris ~]$ gzip ordered
[chris@polaris ~]$ ll ordered.gz
-rw-rw-r-- 1 chris chris 1059 2010-08-30 16:12 ordered.gz
Моя чисто случайная выборка данных фактически увеличилась из-за издержек, в то время как мой файл, заполненный нулями, сжался до 0,1% от своего предыдущего размера.