ฉันเพิ่งทดลองเล็ก ๆ น้อย ๆ ที่ฉันสร้างไฟล์เก็บถาวร tar พร้อมไฟล์ที่ซ้ำกันเพื่อดูว่ามันจะถูกบีบอัดไปยังความกลัวของฉันหรือไม่! รายละเอียดติดตาม (ผลการเยื้องเพื่อความสุขในการอ่าน):
$ 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 เมื่อสร้าง tarball นั้น tar นั้นรับรู้ถึงฮาร์ดลิงก์เนื่องจากทาร์บอลเป็นเพียง ~ 2MiB และไม่ใช่ ~ 3Mib
ตอนนี้ฉันคาดว่า gzip จะลดขนาดของ tarball เป็น ~ 1MiB เนื่องจาก a และ b ซ้ำกันและควรมี 1MiB ของข้อมูลอย่างต่อเนื่องซ้ำใน tarball แต่สิ่งนี้ไม่ได้เกิดขึ้น
ทำไมนี้ และฉันจะอัด tarball ได้อย่างมีประสิทธิภาพในกรณีเหล่านี้ได้อย่างไร?