Az önce sıkıştırılmış olup olmadığımı görmek için kopya dosyaları olan bir tar arşivi oluşturduğum küçük bir deney yaptım. Detaylar takip edilir (okuma zevkine yönelik sonuçlar):
$ 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
$
İlk önce rastgele verilerin 1MiB dosyasını oluşturdum (a). Sonra onu bir dosya b'ye kopyaladım ve c'ye de bağladım. Tarball oluştururken, tar görünüşte hardlink'in farkındaydı, çünkü tarball sadece ~ 2MiB idi ve ~ 3Mib değildi.
Şimdi, gzip'in a ve b kopyaları olduğu için tarball boyutunu ~ 1MiB'ye düşürmesini bekliyordum ve tarball içinde tekrarlanan 1MiB sürekli veri olması gerekiyordu, ancak bu gerçekleşmedi.
Bu neden? Ve bu durumlarda tarball'ı nasıl etkili bir şekilde sıkıştırabilirim?