การรวมกลุ่มของไฟล์เข้าด้วยกันสามารถปรับปรุงการบีบอัดด้วยเครื่องมือมาตรฐานเช่น gzip, bzip2, xz ได้หรือไม่?
ฉันคิดมานานแล้วว่าเป็นกรณีนี้ แต่ไม่เคยทดสอบเลย หากเรามีไฟล์ขนาด 20Mb เดียวกันซึ่งสุ่มจากไบต์สุ่มรวมกัน 2 ชุดโปรแกรมบีบอัดที่ชาญฉลาดซึ่งรู้ว่าสิ่งนี้สามารถบีบอัดทั้งลูก Tarball ลงจนเกือบ 20Mb
ฉันเพิ่งลองการทดลองนี้โดยใช้ gzip, bzip2 และ xz เพื่อบีบอัด 1) ไฟล์สุ่มไบต์, 2) tarball ของไฟล์สองสำเนาและ 3) แมวของไฟล์สองชุด ในทุกกรณีการบีบอัดไม่ได้ลดขนาดไฟล์ สิ่งนี้คาดว่าสำหรับกรณีที่ 1 แต่สำหรับกรณีที่ 2 และ 3 ผลลัพธ์ที่ดีที่สุดคือไฟล์ 40Mb สามารถหดได้เกือบ 20Mb นั่นเป็นความเข้าใจที่ยากสำหรับโปรแกรมบีบอัดที่จะมองเห็นโดยเฉพาะอย่างยิ่งเนื่องจากความซ้ำซ้อนอยู่ไกลดังนั้นฉันไม่คาดหวังผลลัพธ์ที่สมบูรณ์แบบ แต่ฉันยังคงคิดว่าจะมีการบีบอัดบางอย่าง
ทดสอบ:
dd if=/dev/urandom of=random1.txt bs=1M count=20
cp random1.txt random2.txt
cat random1.txt random2.txt > random_cat.txt
tar -cf randoms.tar random1.txt random2.txt
gzip -k random* &
bzip2 -k random* &
xz -k random* &
wait
du -sh random*
ผลลัพธ์:
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 1.40937 s, 14.9 MB/s
[1] Done gzip -k random*
[2]- Done bzip2 -k random*
[3]+ Done xz -k random*
20M random1.txt
21M random1.txt.bz2
21M random1.txt.gz
21M random1.txt.xz
20M random2.txt
21M random2.txt.bz2
21M random2.txt.gz
21M random2.txt.xz
40M random_cat.txt
41M random_cat.txt.bz2
41M random_cat.txt.gz
41M random_cat.txt.xz
41M randoms.tar
41M randoms.tar.bz2
41M randoms.tar.gz
41M randoms.tar.xz
นี่เป็นสิ่งที่ฉันควรคาดหวังหรือไม่
มีวิธีปรับปรุงการบีบอัดที่นี่หรือไม่?