Я просто зробив невеликий експеримент, де створив архів дьогтю з дублікатами файлів, щоб побачити, чи не стиснеться він, на превеликий жаль, це не так! Деталі наступні (результати з відступом для задоволення від читання):
$ dd if=/dev/urandom bs=1M count=1 of=a
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.114354 s, 9.2 MB/s
$ cp a b
$ ln a c
$ ll
total 3072
-rw-r--r-- 2 guido guido 1048576 Sep 24 15:51 a
-rw-r--r-- 1 guido guido 1048576 Sep 24 15:51 b
-rw-r--r-- 2 guido guido 1048576 Sep 24 15:51 c
$ tar -c * -f test.tar
$ ls -l test.tar
-rw-r--r-- 1 guido guido 2109440 Sep 24 15:51 test.tar
$ gzip test.tar
$ ls -l test.tar.gz
-rw-r--r-- 1 guido guido 2097921 Sep 24 15:51 test.tar.gz
$
Спочатку я створив 1MiB файл випадкових даних (a). Потім я скопіював його у файл b, а також з'єднав його з c. Створюючи тарбол, смола, мабуть, знала про жорстке посилання, оскільки тарбол був лише ~ 2MiB, а не ~ 3Mib.
Тепер я очікував, що gzip зменшить розмір тарболу до ~ 1MiB, оскільки a і b є дублікатами, і має бути 1MiB безперервних даних, що повторюються всередині тарболу, але цього не сталося.
Чому це? І як я міг би ефективно стискати тарбол у цих випадках?