วิธีทำ“ ไฟล์ที่จัดเก็บโดยไม่บีบอัด” ใน 7-zip?


25

มีวิธีใดบ้างที่จะเลือกป้องกันไม่ให้ไฟล์บางประเภทบีบอัดใน 7-zip เช่นใน WinRAR?

ฉันพยายามบีบอัดโฟลเดอร์ขนาดใหญ่ (หลายกิกะไบต์) และฉันไม่ต้องการให้ไฟล์ที่ถูกบีบอัด (เช่นไฟล์ ZIP) ถูกบีบอัดใหม่ - ควรเก็บไว้โดยไม่บีบอัด


มีเหตุผลที่เฉพาะเจาะจง (บันทึกทุก ๆ เวลาของการประมวลผลที่เป็นไปได้อ่านโดยไม่ต้องรวมไบนารี 7z หรือนำ LZMA กลับมาใช้ใหม่) ที่คุณต้องการทำเช่นนี้? โดยทั่วไปแล้วเครื่องมือบีบอัดส่วนใหญ่ที่ฉันพบมักจะฉลาดพอที่จะเก็บสิ่งที่ไม่บีบอัดไว้โดยอัตโนมัติหากพบว่าไฟล์ตอบสนองไม่ดีต่อความพยายามบีบอัดไฟล์เพิ่มเติม
ssokolow

@ssokolow: เป็นเวลา 4 ปีแล้วและฉันคิดว่าฉันไม่เคยตอบคำถามของคุณ แต่อาจมีสาเหตุอื่น ๆ เช่นการลดความเสียหายจากการทุจริตและยังทำให้การกู้คืนข้อมูลในภัยพิบัติง่ายขึ้น
Mehrdad

คำถามที่เชื่อมต่อ: unix.stackexchange.com/questions/241898/…
bohdan_trotsenko

คำตอบ:


19

ใช่เป็นไปได้ที่จะมีวิธีการบีบอัดที่แตกต่างกันสำหรับไฟล์ต่าง ๆ ในไฟล์ 7-Zip เดียวกัน

ใช้เวอร์ชันบรรทัดคำสั่งของ 7-Zip พร้อม-mพารามิเตอร์เพื่อระบุวิธีการCopyซึ่งหมายถึงไม่มีการบีบอัด

ตัวอย่าง:

7za a -m0=Copy tmp7.7z *.txt

เพื่อดูข้อมูลเพิ่มเติมโปรดดูที่-m (ตั้งค่าวิธีการบีบอัด) สวิทช์


คำสั่งดังกล่าวจะไม่บีบอัดไฟล์ txt และเพิ่มเฉพาะไฟล์ txt ในไฟล์เก็บถาวรที่มีอยู่ ก่อนที่จะเรียกใช้คำสั่งข้างต้นควรสร้างไฟล์เก็บถาวรด้วยไฟล์ที่ไม่ใช่ txt ไม่ใช่เรื่องง่ายถ้ามีไฟล์ประเภทต่าง ๆ
Praveen Sripati

หากไม่ได้ผลลอง-m0=Copy -mx=0
Bora M. Alper

15

สมมติว่าคุณมีไฟล์ซิปและคุณมีไฟล์ txt ที่ไม่บีบอัดในโฟลเดอร์ของคุณ

ขั้นตอนแรกคือการสร้างไฟล์บีบอัดไฟล์ txt โดยใช้คำสั่งต่อไปนี้

คุณสามารถใช้ -m สำหรับการตั้งค่าระดับการบีบอัดซึ่งยังขึ้นอยู่กับวิธีการบีบอัดที่คุณใช้

ให้ถือว่าที่นี่เป็นการบีบอัดเริ่มต้นเท่านั้น

7z a compressed.7z *.txt -r 

คุณจะได้รับการบีบอัด

ขั้นตอนที่สองจะได้รับการคัดลอกไฟล์บีบอัดแล้วที่จะเก็บหรือสร้างที่เก็บใหม่

7z u compressed.7z -u!update.7z -mx0 *.zip 

มีรายละเอียดเพิ่มเติมของคำสั่ง update ที่นี่

และในกรณีที่คุณมีอิสระในการใช้ส่วนต่อประสานกราฟิกการอัพเดทสามารถทำได้ด้วยวิธีต่อไปนี้

ป้อนคำอธิบายรูปภาพที่นี่


ค่อนข้างยุ่งยาก แต่ฉันคิดว่ามันจะใช้ได้ขอบคุณ
Mehrdad

1

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

คุณสามารถค้นหาสคริปต์ได้ที่นี่: https://gist.github.com/ivanatpr/5dea086172eab573ba71


0

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

คอมเพรสเซอร์ที่ดีส่วนใหญ่จะตรวจสอบการบีบอัดและเก็บไฟล์ที่ไม่บีบอัดไว้ตั้งแต่การบีบอัดจากนั้นจะเพิ่มโอเวอร์เฮดและเพิ่มขนาด

แน่นอนว่ามีงานและเวลาในการดูไฟล์ตั้งแต่แรก

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

สร้างไฟล์เก็บถาวร 7z และเพิ่มทุกอย่าง แต่ไฟล์บีบอัดในหนึ่งรอบจากนั้นผนวกไฟล์ที่บีบอัดไว้ล่วงหน้าเป็นข้อมูลที่ไม่บีบอัด (ฉันจะทำแบบนี้เพราะสิ่งที่บีบอัดได้จะเป็นจุดเริ่มต้นของการเก็บถาวรและไม่สามารถบีบอัดได้ทั้งหมดในตอนท้ายมันจะสตรีมออกจากไดรฟ์เร็วขึ้นเนื่องจากมันต่อเนื่องกัน)

(ใช้ 'บีบอัด ... ' มากเกินไป!)


1
ในกรณีที่ช่วยใครก็ได้นี่คือส่วนสำคัญของ "บางสิ่งบางอย่างเกี่ยวกับขีด จำกัด ของเอนโทรปีหรืออย่างนั้น" เอนโทรปีสามารถคิดได้ว่าเป็นตัวชี้วัดความไม่แน่นอน แนวคิดเบื้องหลังการบีบอัดคือถ้าคุณสามารถคาดการณ์รูปแบบของบิตได้คุณไม่จำเป็นต้องเก็บสิ่งทั้งหมดไว้ ... เพียงแค่คำแนะนำที่กะทัดรัดกว่านี้เกี่ยวกับวิธีการคาดการณ์ (codeword) ค่าเอนโทรปีสูงสุดทางทฤษฎีนั้นเกิดขึ้นได้เมื่อมีโอกาสเท่ากันที่โค้ดสัญญาณต่อไปอาจเป็นอะไรก็ได้ การบีบอัดการบีบอัดของข้อมูลที่ถูกบีบอัดมากขึ้นจะเกิดขึ้นเมื่อรอบที่สองระบุการคาดการณ์ที่เหลืออยู่ในผลลัพธ์ของครั้งแรก
ssokolow
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.