मैंने अभी थोड़ा प्रयोग किया है जहाँ मैंने डुप्लिकेट फ़ाइलों के साथ एक टार आर्काइव बनाया है, यह देखने के लिए कि क्या यह संकुचित होगा, मेरे खौफ से, यह नहीं था! विवरण का पालन करें (खुशी पढ़ने के लिए प्रेरित परिणाम):
$ 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 फ़ाइल बनाई। फिर मैंने इसे एक फ़ाइल b पर कॉपी किया और इसे c को भी लिंक कर दिया। टारबॉल बनाते समय, टार को स्पष्ट रूप से हार्डलिंक के बारे में पता था, क्योंकि टारबॉल केवल ~ 2MiB था और ~ 3Mib नहीं था।
अब मुझे उम्मीद है कि टारबॉल के आकार को कम करने के लिए gzip ~ 1MiB होगा क्योंकि a और b डुप्लिकेट हैं, और टारबॉल के अंदर लगातार 1MiB डेटा दोहराया जाना चाहिए, फिर भी ऐसा नहीं हुआ।
ऐसा क्यों है? और मैं इन मामलों में कुशलता से टारबॉल को कैसे संपीड़ित कर सकता हूं?