มีรูปแบบการบีบอัดที่รองรับการทำงานของหางหรือไม่?


12

ฉันกำลังมองหารูปแบบการบีบอัดที่สนับสนุนการtailed หมายความว่าคุณไม่จำเป็นต้องอ่านไฟล์ทั้งหมดเพื่อรับ X ที่ไม่มีการบีบอัด X ครั้งสุดท้าย เป็นไปได้หรือไม่กับรูปแบบใด ๆ เช่น bzip2, xz, lzma และอื่น ๆ ?

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

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

คำตอบ:


5

gzip มีตัวเลือก --rsyncable ซึ่งไม่หลักเดียวกัน ส่วนที่ไม่ได้มาตรฐานจะเป็นยูทิลิตี้ "ztail" ที่รับรู้ gzip-block-aware แต่ดูเหมือนว่าคุณจะจัดการกับมันแล้ว


2
แน่นอนว่าตัวเลือกนั้น จำกัด คุณไว้ที่ระดับการบีบอัด -0.5 แม้ว่าคุณจะระบุ -9 ไว้ก็ตาม
psusi

คุณได้รับเวอร์ชันของ gzip ที่รองรับสิ่งนี้อยู่ที่ไหน หากนี่คือตัวเลือก ณ จุดหนึ่งดูเหมือนว่าจะถูกลบ
Patrick

ดิสทริบิวชั่นที่ใช้เดเบียนมี - ซึ่งมาจาก Ubuntu 10.04: root @ backup1: ~ # gzip -V gzip 1.3.12 root @ backup1: ~ # gzip -h | egrep rsync --rsyncable ทำให้การเก็บถาวรเป็นมิตรกับ rsync
the-wabbit

เห็นได้ชัดว่าผู้ดูแลระบบ distro คนอื่น ๆ (เช่น Fedora) ดูเหมือนจะรวมโปรแกรมแก้ไขไว้ด้วย และมีแพทช์สำหรับ gzip แบบโบราณที่นี่: samba.org/netfilter/diary/gzip.rsync.patchซึ่งอาจนำไปใช้กับเวอร์ชันที่ใหม่กว่าด้วยการแก้ไขเล็กน้อยหากคุณต้องการรวบรวมตัวเองจริงๆ
the-wabbit

BTW การสนทนาแนะนำว่าผลกระทบต่อการบีบอัดค่อนข้างเล็กน้อย (ภายใน 2-3%) แม้ว่าระยะทางสำหรับชุดข้อมูลที่เฉพาะเจาะจงอาจแตกต่างกันไป หากคุณต้องการการบีบอัดแบบ "พร้อมใช้งาน" พร้อมอัลกอริธึมแบบปรับตัวได้เช่นยุบตัวแทบไม่มีวิธีใด ๆ ในการรีเซ็ตอัลกอริทึมทุก ๆ คราว - แน่นอนว่าสิ่งนี้จะทำให้เกิดประสิทธิภาพในการบีบอัด
the-wabbit

0

FWIW: ฉันได้พัฒนาเครื่องมือบรรทัดคำสั่งตามซอร์สโค้ดzran.cของ zlibซึ่งสร้างดัชนีสำหรับไฟล์ gzip: https://github.com/circulosmeos/gztool

มันสามารถทำให้หางอย่างต่อเนื่องของไฟล์ gzip พร้อม-Tตัวเลือก หรือเพียงแค่เนื้อหาท้ายสุดแล้วหยุดด้วย-t(มีตัวเลือกอื่น ๆ อีกมากมาย)

โปรดทราบว่าสำหรับการดำเนินการใด ๆ เหล่านี้gztoolจะสร้างไฟล์ดัชนีที่มีการดำเนินการดังกล่าว

ดัชนีสามารถถูกขัดจังหวะได้ตลอดเวลาและสามารถนำมาใช้ใหม่และ / หรือเสร็จสมบูรณ์ในภายหลัง และเช่นเดียวกับที่gztoolได้รับคำสั่งให้ดึงข้อมูลจากที่ใด ๆ ในไฟล์และจะสร้างดัชนีที่สอดประสานกับการกระทำนั้นจะไม่มีเวลาสูญหายเมื่อใช้งาน

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