เหตุใด Zip จึงสามารถบีบอัดไฟล์เดี่ยวขนาดเล็กกว่าหลายไฟล์ด้วยเนื้อหาเดียวกันได้


126

สมมติว่าฉันมีไฟล์ XML 10,000 ไฟล์ ตอนนี้สมมติว่าฉันต้องการส่งพวกเขาไปให้เพื่อน ก่อนที่จะส่งพวกเขาฉันต้องการที่จะบีบอัดพวกเขา

วิธีที่ 1: อย่าบีบอัด

ผล:

Resulting Size: 62 MB
Percent of initial size: 100%

วิธีที่ 2: บีบอัดไฟล์ทุกไฟล์แล้วส่ง 10,000 ไฟล์ xml ให้เขา

คำสั่ง:

for x in $(ls -1) ;  do   echo $x ; zip "$x.zip" $x ; done

ผล:

Resulting Size: 13 MB
Percent of initial size: 20%

วิธีที่ 3: สร้างไฟล์ zip เดียวที่มีไฟล์ 10,000 xml

คำสั่ง:

zip all.zip $(ls -1)

ผล:

Resulting Size: 12 MB
Percent of initial size: 19%

วิธีที่ 4: เชื่อมไฟล์เข้าด้วยกันเป็นไฟล์เดียว & zip

คำสั่ง:

cat *.xml > oneFile.txt ; zip oneFile.zip oneFile.txt

ผล:

Resulting Size: 2 MB
Percent of initial size: 3%

คำถาม:

  • ทำไมฉันถึงได้ผลลัพธ์ที่ดีขึ้นอย่างมากเมื่อฉันเพิ่งซิปไฟล์เดียว?
  • ฉันคาดหวังว่าจะได้รับผลลัพธ์ที่ดีขึ้นอย่างมากโดยใช้วิธีที่ 3 กว่าวิธีที่ 2 แต่ไม่ใช่ ทำไม?
  • พฤติกรรมนี้มีลักษณะเฉพาะzipหรือไม่? ถ้าฉันลองใช้gzipฉันจะได้ผลลัพธ์ที่แตกต่างกันไหม

ข้อมูลเพิ่มเติม:

$ zip --version
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
Currently maintained by E. Gordon.  Please send bug reports to
the authors using the web page at www.info-zip.org; see README for details.

Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip,
as of above date; see http://www.info-zip.org/ for other sites.

Compiled with gcc 4.4.4 20100525 (Red Hat 4.4.4-5) for Unix (Linux ELF) on Nov 11 2010.

Zip special compilation options:
    USE_EF_UT_TIME       (store Universal Time)
    SYMLINK_SUPPORT      (symbolic links supported)
    LARGE_FILE_SUPPORT   (can read and write large files on file system)
    ZIP64_SUPPORT        (use Zip64 to store large files in archives)
    UNICODE_SUPPORT      (store and read UTF-8 Unicode paths)
    STORE_UNIX_UIDs_GIDs (store UID/GID sizes/values using new extra field)
    UIDGID_NOT_16BIT     (old Unix 16-bit UID/GID extra field not used)
    [encryption, version 2.91 of 05 Jan 2007] (modified for Zip 3)

แก้ไข: ข้อมูล Meta

คำตอบหนึ่งชี้ให้เห็นว่าความแตกต่างคือข้อมูลเมตาของระบบที่เก็บไว้ในรหัสไปรษณีย์ ฉันไม่คิดว่าจะเป็นเช่นนั้น ในการทดสอบฉันทำสิ่งต่อไปนี้:

for x in $(seq 10000) ; do touch $x ; done
zip allZip $(ls -1)

ซิปที่ได้คือ 1.4MB ซึ่งหมายความว่ายังคงมีพื้นที่ที่ไม่ได้อธิบายประมาณ 10 MB


34
ถ้าฉันไม่เข้าใจผิดมันเป็นฟีโนโมน่านี้ที่ทำให้คนอื่น.tar.gzแทนที่จะทำแค่ซิปไดเร็กตอรี่ทั้งหมด
corsiKa

18
คำถามที่คล้ายกันก็ถามว่าแล้ว TL; DR ใช้จดหมายเหตุ 7zip ของแข็ง
Dmitry Grigoryev

3
@sixtyfootersdude เป็นการทดสอบเพื่อตรวจสอบความถูกต้องของคำตอบคุณสามารถลองซิปซิปที่สร้างในวิธีที่ 3 ได้ไหม ฉันสงสัยว่าสิ่งนี้จะลดขนาดไฟล์เป็นสิ่งที่เทียบเคียงได้กับวิธีที่ 4
Travis

7
แทนที่จะ$(ls -1)ใช้เพียง*: for x in *; zip all.zip *
muru

4
หากคุณต้องการบีบอัดไฟล์ด้วย ZIP ต่อไปนี้เป็นวิธีแก้ไข: ขั้นแรกให้สร้างZIP ที่ไม่มีการบีบอัดซึ่งมีไฟล์ทั้งหมดของคุณ จากนั้นวาง ZIP นั้นไว้ใน ZIP ที่ถูกบีบอัดอื่น
user20574

คำตอบ:


129

Zip จัดการเนื้อหาของแต่ละไฟล์แยกต่างหากเมื่อทำการบีบอัด แต่ละไฟล์จะมีการบีบอัดของตัวเอง มีการสนับสนุนภายในอัลกอริทึมการบีบอัด (โดยทั่วไปคือDEFLATE ) เพื่อระบุส่วนที่ซ้ำ อย่างไรก็ตามไม่มีการรองรับใน Zip เพื่อค้นหาความซ้ำซ้อนระหว่างไฟล์

นั่นเป็นเหตุผลว่าทำไมจึงมีพื้นที่เพิ่มขึ้นมากมายเมื่อเนื้อหามีหลายไฟล์: วางกระแสที่บีบอัดไว้ในไฟล์หลาย ๆ ครั้ง


9
นอกจากนี้ยังเป็นสาเหตุที่ทำให้เครื่องมือบีบอัดมีตัวเลือกให้คุณบีบอัดไฟล์แยกต่างหากหรือเป็นเอนทิตีเดียว (แม้ว่าโดยทั่วไปนั่นหมายความว่าคุณต้องคลายการบีบอัดไฟล์เก็บถาวรมากกว่าที่คุณต้องการหากคุณต้องการดูไฟล์เพียงไฟล์เดียว)
JAB

28
@JAB: เครื่องมือบีบอัดเช่น 7z และ rar ใช้คำว่า "solid" เก็บถาวรสำหรับการบรรจุไฟล์หลาย ๆ ไฟล์ให้แนบลงในสตรีมการบีบอัดขนาดใหญ่ ด้วยขนาดก้อนขนาดปานกลางเช่น 64MiB การเข้าถึงแบบสุ่มไปยังไฟล์เดียวอาจต้องการการแตกไฟล์สูงสุด 64MiB ของข้อมูลจากจุดเริ่มต้นของบล็อกการบีบอัดที่มีอยู่คุณสามารถได้รับการแลกเปลี่ยนที่ดีระหว่างการเข้าถึงแบบสุ่มและการค้นหาความซ้ำซ้อนข้ามไฟล์ 7z สามารถใช้รูปแบบการบีบอัด LZMA ที่มีประสิทธิภาพมากขึ้น (แต่ช้ากว่าในการบีบอัด) ซึ่งเป็นข้อดีอีกประการของการบีบอัด
Peter Cordes

คุณกำลังบอกว่าthere is no support in Zip to find redundancy between filesอยู่ในข้อกำหนดไฟล์ zip หรือไม่
sixtyfootersdude

6
@stytyfootersdude อัลกอริทึมการบีบอัดจำนวนมากเช่น DEFLATE ทำงานเป็นสตรีม ในการกู้คืนข้อมูลให้มากพอที่จะคลายการบีบอัดส่วนหนึ่งของกระแสข้อมูลคุณจำเป็นต้องประมวลผลสตรีมทั้งหมดจนถึงจุดนั้น หากพวกเขาพยายามค้นหาความซ้ำซ้อนระหว่างไฟล์คุณจะต้องแตกไฟล์ทั้ง 1,000 ไฟล์เพื่อที่จะได้ไฟล์ล่าสุด โดยทั่วไปนี่เป็นวิธีการทำงานของ tgz จริง ๆ อย่างไรก็ตาม zip ได้รับการออกแบบมาเพื่อให้คุณแยกไฟล์แต่ละไฟล์ tgz ถูกออกแบบมาให้มีทั้งหมดหรือไม่มีอะไรมากขึ้น
Cort Ammon

1
@sixtyfootersdude - ถูกต้อง ในการถอดความ Cort: สเปค pkzip ไม่รองรับ cross-file ที่ใช้งานได้ หากพวกเขาทำแล้วแตกไฟล์เดียวอาจต้องมีการแยกทั้ง (และทุกไฟล์) ที่จะแยก
James Snell

48

การบีบอัด ZIP จะขึ้นอยู่กับรูปแบบซ้ำ ๆ ในข้อมูลที่จะบีบอัดและการบีบอัดจะยิ่งดีขึ้นเมื่อไฟล์ยาวขึ้นเนื่องจากสามารถพบและใช้รูปแบบได้มากขึ้น

ประยุกต์ได้ง่ายกว่าถ้าคุณบีบอัดไฟล์หนึ่งไฟล์พจนานุกรมที่แมปรหัส (สั้น) กับรูปแบบ (อีกต่อไป) จำเป็นต้องมีอยู่ในไฟล์ zip ที่ได้ หากคุณซิปไฟล์ยาวหนึ่งไฟล์พจนานุกรมจะถูก 'นำกลับมาใช้ใหม่' และจะมีประสิทธิภาพมากขึ้นในเนื้อหาทั้งหมด

หากไฟล์ของคุณคล้ายกันเล็กน้อย (ตามที่เป็นข้อความเสมอ) การใช้ 'พจนานุกรม' อีกครั้งจะมีประสิทธิภาพมากและผลลัพธ์จะเป็น zip ทั้งหมดที่เล็กกว่ามาก


3
ZIP ทำทั้งการเก็บถาวรและการบีบอัด นี่หมายความว่า ZIP บีบอัดไฟล์แต่ละไฟล์แม้ว่าจะจบลงด้วยไฟล์ ZIP เดียวกันหรือไม่
gerrit

2
ลองนึกภาพว่าคุณลบไฟล์เดียวคุณไม่ต้องการให้มันใช้เวลาอีกครึ่งชั่วโมงในการบีบอัดไฟล์ที่เหลือด้วย 'พจนานุกรม' ใหม่ - นอกจากนี้อาจสันนิษฐานว่าไฟล์ต่าง ๆ ต้องการ 'พจนานุกรม' ที่แตกต่างกันมาก
Aganju

2
ฉันไม่เห็นสาเหตุที่ต้องทำ ด้วยเครื่องมือ Unix ฉันจะเก็บไฟล์ด้วย tar ก่อนแล้วบีบอัดด้วย gzip / bz2 / lzma อัลกอริทึมการบีบอัดไม่สนใจจำนวนไฟล์ที่เข้ารหัสในไฟล์เก็บถาวร นอกจากนี้การลบไฟล์เดียวจากไฟล์บีบอัดที่เก็บถาวรเป็นเรื่องธรรมดาจริงๆ ฉันไม่คิดว่าฉันเคยทำอย่างนั้น
gerrit

4
ฉันไม่เห็นด้วยและนั่นอาจเป็นวิธีที่ดี ฉันไม่ได้ออกแบบหรือเขียน ZIP ผมแค่พูดสิ่งที่มันไม่ ...
Aganju

16
@gerrit มันมีปัญหาของตัวเอง Zip ได้รับการออกแบบมาเพื่อให้คุณสามารถเข้าถึงไฟล์ใด ๆ ในไฟล์เก็บถาวรได้อย่างรวดเร็ว - ลองคลายไฟล์ไฟล์เดียวจากไฟล์เก็บถาวร 100 GiB UHA และคุณจะเห็นว่าทำไมพวกเขาถึงเลือกวิธีนี้ นอกจากนี้ยังออกแบบมาเพื่อต่อท้าย - คุณสามารถมีไฟล์สำรองของคุณและเพียงแค่เพิ่ม (หรือแทนที่) ไฟล์ตามที่ต้องการ ทั้งหมดนี้เป็นความช่วยเหลืออย่างมากเมื่อใช้งานไฟล์เก็บถาวร ข้อดีคือถ้าคุณบีบอัดไฟล์ที่คล้ายกันมาก (ซึ่งไม่ใช่สิ่งที่พบได้ทั่วไป) มันไม่สามารถใช้ประโยชน์จากความคล้ายคลึงกันเพื่อลดขนาดไฟล์เก็บถาวร
Luaan

43

ในไฟล์ซิปแต่ละไฟล์จะถูกบีบอัดแยกกัน ตรงกันข้ามคือ 'การบีบอัดที่มั่นคง' ซึ่งเป็นไฟล์ที่ถูกบีบอัดเข้าด้วยกัน 7-zip และ Rar ใช้การบีบอัดแบบ solid ตามค่าเริ่มต้น Gzip และ Bzip2 ไม่สามารถบีบอัดไฟล์ได้หลายไฟล์ดังนั้น Tar จะถูกใช้ก่อนมีผลเหมือนกับการบีบอัดที่เป็นของแข็ง

เนื่องจากไฟล์ xml มีโครงสร้างที่คล้ายกันและอาจมีเนื้อหาคล้ายกันหากไฟล์ถูกบีบอัดเข้าด้วยกันการบีบอัดจะสูงขึ้น

ตัวอย่างเช่นหากไฟล์มีสตริง"<content><element name="และคอมเพรสเซอร์พบว่าสตริงนั้นในไฟล์อื่นมันจะแทนที่ด้วยตัวชี้ขนาดเล็กเพื่อการแข่งขันก่อนหน้าถ้าคอมเพรสเซอร์ไม่ได้ใช้ 'การบีบอัดที่เป็นของแข็ง' ครั้งแรกของสตริงใน ไฟล์จะถูกบันทึกเป็นตัวอักษรซึ่งมีขนาดใหญ่กว่า


9

Zip ไม่เพียง แต่จัดเก็บเนื้อหาของไฟล์เท่านั้น แต่ยังเก็บเมตะดาต้าของไฟล์เช่นรหัสผู้ใช้สิทธิ์การสร้างและการปรับเปลี่ยนเวลาเป็นต้น หากคุณมีไฟล์เดียวคุณจะมีข้อมูลเมตาหนึ่งชุด หากคุณมี 10,000 ไฟล์คุณจะมีข้อมูลเมตา 10,000 ชุด


3
จุดดี แต่ข้อมูลเมตาของระบบเพิ่งใช้พื้นที่ว่าง 1.4MB ดูการแก้ไขของฉัน
sixtyfootersdude

1
ฉันไม่คุ้นเคยกับอัลกอริทึม zip แต่ข้อมูลเมตาไม่ได้เป็นเพียงข้อมูลไฟล์ แต่รวมถึงสิ่งต่างๆเช่นขนาดและพจนานุกรมอาจเป็นข้อมูลเกี่ยวกับการกระจายตัวอักขระ พจนานุกรมในไฟล์ข้อความที่ไม่ว่างเปล่าจะไม่เป็นศูนย์ นั่นอาจเป็นเหตุผลว่าทำไมคุณถึงเห็นเมตาดาต้ามีขนาดใหญ่กว่าในไฟล์ xml ของคุณมากกว่าไฟล์เปล่า
Ben Richards

นี่เป็นความคิดแรกของฉัน ข้อมูลส่วนหัวไฟล์ซิป
WernerCD

สิ่งนี้อธิบายความแตกต่างระหว่าง 2 และ 3 เท่านั้นไม่ใช่ 4
Luaan

@Luaan No ทั้งข้อมูลเมตา 2 และ 3 สำหรับไฟล์ทั้งหมด 10,000 ไฟล์จะรวมอยู่ในไฟล์ zip หรือไฟล์ดังนั้นขนาดไฟล์โดยรวมจึงเกือบเท่ากับขนาดเดียวกัน ใน 4 มีเพียงข้อมูลเมตาสำหรับไฟล์เดียวและไฟล์ zip มีขนาดเล็กกว่ามาก
Mike Scott

7

ตัวเลือกที่พลาดโดย OP คือการซิปไฟล์ทั้งหมดพร้อมกับปิดการบีบอัดจากนั้นบีบซิปที่ได้ด้วยการบีบอัดให้สูงสุด นี่เป็นการจำลองพฤติกรรมของ * nix .tar.Z, .tar.gz, .tar.bz ฯลฯ ไฟล์เก็บถาวรที่บีบอัดโดยอนุญาตให้การบีบอัดใช้ประโยชน์จากความซ้ำซ้อนข้ามขอบเขตไฟล์ (ซึ่งอัลกอริทึม ZIP ไม่สามารถทำได้เมื่อทำงานในไฟล์เดียว ผ่าน) สิ่งนี้อนุญาตให้แยกไฟล์ XML แต่ละไฟล์ในภายหลัง แต่เพิ่มการบีบอัดให้ใหญ่สุด ข้อเสียคือกระบวนการแตกไฟล์ต้องใช้ขั้นตอนพิเศษชั่วคราวโดยใช้พื้นที่ดิสก์มากกว่าที่จำเป็นสำหรับไฟล์. zip ปกติชั่วคราว

ด้วยความแพร่หลายของเครื่องมือฟรีเช่น 7-Zip เพื่อขยายตระกูล tar สู่ Windows จึงไม่มีเหตุผลที่จะไม่ใช้. tar.gz หรือ. tar.bz ฯลฯ เช่น Linux, OS X และ BSD เครื่องมือพื้นเมืองเพื่อจัดการพวกเขา


gzip และ bzip2 อาจสิ้นสุดยิ่งแย่ลงเพราะพวกเขาได้รับการออกแบบโดยคำนึงถึงการบีบอัดสตรีมดังนั้นพวกเขาจะต้องเริ่มส่งออกข้อมูลที่ถูกบีบอัดก่อนที่ข้อมูลทั้งหมดจะถูกบีบอัด
rackandboneman

@rackandboneman: นี่คือการแลกเปลี่ยนที่คุณต้องทำเมื่อทำการบีบอัดไฟล์ที่มีขนาดใหญ่กว่าจำนวนหน่วยความจำที่คุณต้องการใช้ในเวลาบีบอัด (และจำนวนเวลาของ CPU ที่ต้องใช้ในการค้นหาสิ่งที่ดีที่สุดทั่วโลกนั้นมีขนาดใหญ่มาก) พจนานุกรมการบีบอัดขนาดใหญ่ยังสามารถเพิ่มหน่วยความจำที่จำเป็นสำหรับการคลายการบีบอัดได้ นี่คือตัวเลือกสำหรับ LZMA ( xz/ 7-zip) อย่างไรก็ตามพจนานุกรมที่ปรับเปลี่ยนได้สามารถเลือกรูปแบบได้เมื่อพวกเขามองเห็นได้ มันไม่ได้เป็นเพียงแค่สร้างระบบการเข้ารหัสแบบคงที่ตาม 32k แรก นี่คือเหตุผลที่ gzip ไม่ดูด
Peter Cordes

ฉันชอบ "เคล็ดลับ" นี้จริงๆถ้าคุณต้องการอยู่ในรูปแบบซิป ฉันไม่เห็นด้วยกับ "ไม่มีเหตุผลที่จะไม่ใช้ 7-zip" ของคุณ - หากฉันส่งไฟล์ให้เพื่อนที่ไม่ใช่ด้านเทคนิคฉันต้องการให้แน่ใจว่าพวกเขาจะสามารถเปิดได้อย่างง่ายดาย ถ้าฉันจะส่งไปยังลูกค้าธุรกิจมากยิ่งขึ้น
Wowfunhappy

5

รูปแบบการบีบอัด zip จะจัดเก็บและบีบอัดแต่ละไฟล์แยกกัน ไม่ได้ใช้ประโยชน์จากการทำซ้ำระหว่างไฟล์ภายในไฟล์เท่านั้น

การต่อไฟล์ทำให้ zip ใช้ประโยชน์จากการทำซ้ำในทุกไฟล์ทำให้การบีบอัดมีจำนวนมากขึ้น

ตัวอย่างเช่นสมมติว่าแต่ละไฟล์ XML มีส่วนหัวที่แน่นอน ส่วนหัวนั้นจะเกิดขึ้นเพียงครั้งเดียวในแต่ละไฟล์ แต่จะทำซ้ำเกือบเหมือนกันในหลาย ๆ ไฟล์ ในวิธีที่ 2 และ 3 zip ไม่สามารถบีบอัดได้ แต่ในวิธีที่ 4 สามารถทำได้


3
สิ่งนี้แตกต่างจากหนึ่งในสามคำตอบที่โพสต์แล้ว 5 ชั่วโมงก่อนหน้านี้หรือไม่
Xen2050

1
@ Xen2050 ไม่แตกต่างกันมากฉันแค่คิดว่าฉันสามารถอธิบายได้ชัดเจนยิ่งขึ้น
BonsaiOak

1
@BawaiOak - จากนั้นเพิ่มความคิดเห็นในคำตอบที่ถูกต้องหรือแก้ไขหากคุณมีตัวแทนเพียงพอ ถ้าไม่ใช่ แต่ความคิดเห็นของคุณเพิ่มความชัดเจนผู้อื่นอาจหยิบเรื่องนี้มาแก้ไขโพสต์ได้
AdamV

@ AdamV ฉันเห็นประเด็นของคุณแล้ว คำตอบของฉันไม่ได้เพิ่มข้อมูลที่เป็นประโยชน์แม้ว่ามันจะเป็นไปได้เมื่อฉันเขียนมัน มีความคิดเห็นที่เหมาะสมอยู่ภายใต้คำตอบแรกดังนั้นฉันไม่เห็นจุดในการเพิ่มพวกเขาเช่นกัน คุณกำลังบอกว่าฉันควรปิดคำตอบของฉัน? มีอันตรายอะไรในการเปิดทิ้งไว้
BonsaiOak

4

ถัดจากเมตาดาต้าที่ Mike Scott พูดถึงยังมีค่าใช้จ่ายในอัลกอริทึมการบีบอัด

เมื่อทำการบีบอัดไฟล์ขนาดเล็กแต่ละไฟล์คุณจะต้องโชคดีมากที่สามารถบีบอัดไฟล์เหล่านั้นได้ว่ามันเกิดขึ้นเพียงกรอกบล็อกการบีบอัดหนึ่งบล็อก เมื่อทำการบีบอัดบล็อกเสาหินก้อนเดียวระบบจะสามารถสตรีมข้อมูลไปยังอัลกอริธึมของมันได้โดยไม่สนใจ 'ขอบเขต' (เพราะไม่มีคำศัพท์ที่ดีกว่า) ของแต่ละไฟล์

นอกจากนี้ ASCII ยังเป็นที่รู้จักกันว่ามีปัจจัยการบีบอัดสูง บวก xml มักจะซ้ำซ้อนมากทำให้เมตาดาต้าเป็นก้อนข้อมูลขนาดใหญ่ที่ไม่สามารถบีบอัดได้ง่ายเหมือนกับเนื้อหา xml

สุดท้ายถ้าหน่วยความจำทำหน้าที่ถูกต้อง zip ใช้การเข้ารหัสพจนานุกรมซึ่งมีประสิทธิภาพโดยเฉพาะอย่างยิ่งในไฟล์ ascii และอื่น ๆ อีกมากมายสำหรับ XML เนื่องจากการทำซ้ำ

คำอธิบายการบีบอัดข้อมูล: http://mattmahoney.net/dc/dce.html


3

พิจารณา XML นี้:

<root>
  <element id="1" />
  <element id="2" /> 
  <other id="3" />
  ...
</root>

XML มีโครงสร้างซ้ำมากซิปใช้ประโยชน์ของการเกิดซ้ำเหล่านั้นในการสร้างพจนานุกรมซึ่งรูปแบบที่มีมากขึ้นและเกิดขึ้นแล้วเมื่อบีบอัดใช้บิตน้อยในการจัดเก็บมากขึ้นซ้ำแล้วซ้ำอีกรูปแบบและบิตมากขึ้นในการจัดเก็บซ้ำน้อยกว่ารูปแบบ

เมื่อคุณต่อไฟล์เหล่านั้นเข้าด้วยกันไฟล์ต้นฉบับ (ซอร์สสำหรับ zip) มีขนาดใหญ่ แต่มีรูปแบบที่ซ้ำกันมากขึ้นเนื่องจากการกระจายโครงสร้างที่น่าเบื่อของ XML จะถูกตัดจำหน่ายในไฟล์ทั้งไฟล์ขนาดใหญ่ทำให้โอกาสในการเก็บรูปแบบเหล่านั้นใช้บิตน้อย

ตอนนี้ถ้าคุณรวม XML ที่แตกต่างกันไว้ในไฟล์เดียวแม้ว่าไฟล์เหล่านั้นจะมีชื่อแท็กที่แตกต่างกันโดยสิ้นเชิงอัลกอริทึมการบีบอัดจะพบการกระจายรูปแบบที่ดีที่สุดในไฟล์ทั้งหมดและไม่ใช่ไฟล์ต่อไฟล์

ในที่สุดอัลกอริทึมการบีบอัดพบการกระจายรูปแบบซ้ำที่ดีที่สุด


-1

นอกจากคำตอบ 7-Zip ยังมีอีกวิธีหนึ่งที่ไม่ดี แต่ควรทดสอบถ้ามีเหตุผลที่คุณไม่ต้องการใช้ 7-Zip:

บีบอัดไฟล์ zip ตอนนี้ปกติไฟล์ zip จะไม่สามารถบีบอัดได้ แต่เมื่อมันมีไฟล์ที่เหมือนกันจำนวนมากคอมเพรสเซอร์จะสามารถค้นหาความซ้ำซ้อนนี้และบีบอัดไฟล์ได้ โปรดทราบว่าฉันได้เห็นการเพิ่มขึ้นเล็กน้อยเมื่อจัดการกับไฟล์จำนวนมากโดยไม่มีความซ้ำซ้อน ถ้าคุณสนใจเรื่องขนาดมันคุ้มค่าที่จะลองถ้าคุณมีไฟล์มากมายในซิปของคุณ


ใช้งานได้ถ้าคุณเปิด zip ครั้งแรกเมื่อปิดการบีบอัดตามที่ฉันได้กล่าวไว้ข้างต้น
Monty Harder

@ MontyHarder ฉันเห็นว่ามันใช้ได้กับการบีบอัดที่เปิดอยู่
Loren Pechtel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.