rzip
rzip هو برنامج كمبيوتر لضغط البيانات على نطاق واسع مصمم حول مطابقة السلاسل الأولية على نمط LZ77 على نافذة قاموس بحجم 900 ميجابايت، متبوعًا بتحويل Burrows–Wheeler القائم على bzip2 وتشفير الإنتروبيا ( Huffman ) على أجزاء إخراج بحجم 900 كيلوبايت.
خوارزمية الضغط
يعمل برنامج rzip على مرحلتين. في المرحلة الأولى، يتم العثور على أجزاء كبيرة من البيانات المكررة وتشفيرها، والتي قد تمتد لمسافات طويلة جدًا (900 ميجابايت) في ملف الإدخال. أما في المرحلة الثانية، فيتم استخدام خوارزمية ضغط قياسية ( bzip2 ) لضغط مخرجات المرحلة الأولى.
من الشائع هذه الأيام الحاجة إلى ضغط الملفات التي تحتوي على بيانات مكررة على مسافات طويلة. على سبيل المثال، عند ضغط مجموعة من مجلدات المستخدمين، قد يمتلك عدة مستخدمين نسخًا من الملف نفسه، أو من ملفات متشابهة جدًا. ومن الشائع أيضًا وجود ملف واحد يحتوي على أجزاء مكررة كبيرة على مسافات طويلة، مثل ملفات PDF التي تحتوي على نسخ متكررة من الصورة نفسها. لا تستطيع معظم برامج الضغط الاستفادة من هذا التكرار، وبالتالي قد تحقق نسبة ضغط أقل بكثير مما يحققه برنامج rzip.
تتكون الواجهة الوسيطة بين المرحلتين من دفق بيانات محاذي للبايتات، والذي يحتوي على أمرين، أحدهما حرفي ("add") مع الطول والبيانات:
النوع: 8 = 0 => نطاق عدد البايتات الحرفية/الإضافية العدد: 16 = 1..65535 البيانات: 8..∞ = البيانات الحرفية المراد إدخالها (عدد n من البايتات الكاملة)
ومطابقة (" نسخة ") مع معلمات الطول والإزاحة:
النوع: 8 = 1 => مطابقة/نسخ نطاق عدد البايتات العدد: 16 = 31..65535 offset:32 = إزاحة إلى الموضع المراد نسخه
يتم تقسيم البيانات الحرفية أو بيانات المطابقة/النسخ التي يزيد طولها عن 65,535 بايت إلى عدة تعليمات. ويُشار إلى نهاية التدفق بأمر حرفي/جمع بطول صفر (type=0,count=0) متبوعًا مباشرةً بمجموع اختبار CRC ذي 32 بت .
التنفيذ المرجعي
تُستخدم خوارزمية مجموع التحقق المتغير، المُستندة إلى تلك الموجودة في rsync، لتحديد التطابقات المحتملة ضمن مجموعة بيانات ضخمة كهذه. مع امتلاء خانات التجزئة، تُحذف التجزئات السابقة ("الوسوم") مرتين. ويتم حذف الوسوم بطريقة تُوفر تغطية جيدة ، مع انخفاض تدريجي في دقة التطابق مع ازدياد المسافة. لا يبحث هذا التطبيق عن تطابقات بأطوال أقل من 31 بايتًا متتاليًا.
المزايا
يكمن الاختلاف الرئيسي بين rzip وخوارزميات الضغط الأخرى المعروفة في قدرته على الاستفادة من التكرار لمسافات طويلة جدًا. تستخدم خوارزمية deflate المعروفة في gzip مخزنًا مؤقتًا للسجلات بحد أقصى 32 كيلوبايت. أما خوارزمية فرز الكتل Burrows-Wheeler transform المستخدمة في bzip2 ، فتقتصر على 900 كيلوبايت من السجل. في المقابل، يمكن أن يصل حجم مخزن السجلات في rzip إلى 900 ميجابايت، أي أكبر بعدة مراتب من gzip أو bzip2. غالبًا ما يكون rzip أسرع بكثير من bzip2، على الرغم من استخدام مكتبة bzip2 كخلفية. ويعود ذلك إلى أن rzip يزود bzip2 ببيانات مُصغّرة، مما يُقلل من الجهد المطلوب من bzip2. وقد أُجريت مقارنات بسيطة (وإن كانت محدودة جدًا بحيث لا تُعتبر معيارًا موثوقًا). [ 1 ] [ 2 ]
العيوب
لا يُناسب برنامج rzip جميع الأغراض. من أبرز عيوبه عدم إمكانية تنفيذه بتقنية التوازي (أي أنه لا يستطيع القراءة من المدخلات القياسية أو الكتابة إلى المخرجات القياسية)، واستهلاكه الكبير للذاكرة: فقد تستهلك عملية ضغط نموذجية لملف كبير مئات الميغابايتات من ذاكرة الوصول العشوائي (RAM ). إذا توفرت ذاكرة وصول عشوائي كافية، وكان المطلوب نسبة ضغط عالية جدًا، يُنصح باستخدام rzip. أما إذا لم تتوفر هذه الشروط، فيُفضل استخدام طرق ضغط بديلة مثل gzip وbzip2، التي تستهلك ذاكرة أقل. يوجد على الأقل رقعة برمجية واحدة لتفعيل تقنية التوازي. [ 3 ]
تاريخ
تمت كتابة برنامج rzip في الأصل بواسطة أندرو تريدجيل كجزء من بحثه لنيل درجة الدكتوراه.
تطبيقات بديلة
lrzip
برنامج lrzip (Long Range ZIP) هو نسخة محسّنة من برنامج rzip. صيغة ملفاته .lrzغير متوافقة مع صيغة rzip. يحتوي على التحسينات التالية:
- خيارات ضغط LZMA و LZO و DEFLATE و Bzip2 و ZPAQ (بدلاً من Bzip2 فقط)
- لا يوجد حد للقاموس، ولا حتى محدود بذاكرة الوصول العشوائي المتاحة.
- القدرة على اختبار قابلية ضغط البيانات قبل ضغطها، مما يمنع الكمبيوتر من إضاعة الوقت في محاولة ضغط البيانات غير القابلة للضغط.
- إمكانية التوصيل عبر خطوط الأنابيب من المدخلات القياسية / المخرجات القياسية (مع فقدان في نسبة الضغط)
- إمكانية تعطيل ضغط المرحلة الأخيرة لاستخدامه مع ضاغط آخر
- تشفير AES-128 اختياري [ 4 ]
يأتي توزيع lrzip مع برنامجين لاستخدامه مع tar و lrztar.lrzuntar
rzip64
يُعدّ rzip64 امتدادًا لبرنامج rzip لمعالجة الملفات الكبيرة جدًا، حيث يُمكنه استخدام أنوية معالجة متعددة بالتوازي. وقد أُجريت دراسات قياس الأداء. [ 5 ] لكن الأهم من ذلك، هو إمكانية إيقاف rzip64 مؤقتًا في أي وقت. وبالتالي، تستمر عملية الضغط الجارية (التي قد تستغرق عدة ساعات للملفات الكبيرة) حتى بعد إعادة تشغيل النظام للصيانة، دون فقدان العمل المنجز، ويمكن استئنافها لاحقًا. يُذكر أن تنسيق ملف rzip64 مطابق لتنسيق ملف rzip الأصلي.
مندوب
REP هو تطبيق بديل لخوارزمية rzip من تطوير بولات زيغانشين، ويُستخدم في برنامج الأرشفة FreeArc كمعالج مسبق لخوارزميات ضغط LZMA/Tornado. في FreeArc، يجد REP التطابقات ذات المسافات الكبيرة، ثم يقوم LZMA بضغط البيانات المتبقية. على سبيل المثال، على جهاز كمبيوتر بذاكرة وصول عشوائي (RAM) سعتها 2 جيجابايت، يجد REP التطابقات التي لا يقل طولها عن 512 بايت على مسافات تصل إلى 1 جيجابايت، ثم يجد LZMA أي تطابقات متبقية على مسافات تصل إلى 128 ميجابايت. وبذلك، يوفران معًا أفضل ضغط ممكن بذاكرة وصول عشوائي (RAM) سعتها 2 جيجابايت.
نظرًا لتحسينها لفك ضغط البيانات المتدفقة والعمل التعاوني مع LZMA، فإن REP تختلف عن تطبيق RZIP الأصلي في بعض الجوانب. أولًا، لا تجد REP افتراضيًا إلا التطابقات التي يزيد طولها عن 512 بايت، حيث أثبتت الاختبارات المعيارية أن هذا هو الإعداد الأمثل لضغط REP+LZMA بشكل عام. ثانيًا، تستخدم REP قاموسًا منزلقًا يبلغ طوله حوالي نصف ذاكرة الوصول العشوائي (RAM)، مما يُغني عن إعادة قراءة البيانات من الملف بعد فك ضغطه. وتكمن ميزة REP في تجزئة التدحرج المضاعفة، التي تتميز بسرعة حسابها وتوزيعها شبه المثالي.
سمح طول المطابقة الأدنى الأكبر (512 بايت مقارنة بـ 32 بايت في rzip) بإجراء تحسينات إضافية على السرعة، بحيث يوفر REP ضغطًا سريعًا جدًا (حوالي 200 ميجابايت/ثانية على Intel i3-2100).
SREP
SREP (SuperREP) هو تطبيق لفكرة Tridgell لضاغط LZ، لا يخزن قاموسه في ذاكرة الوصول العشوائي (RAM)، بل يستخدم بدلاً من ذلك تجزئات SHA1 للكتل المُعالجة لمقارنة محتوياتها. يسمح هذا للبرنامج بضغط ملفات أكبر بعشر مرات تقريبًا من حجم ذاكرة الوصول العشوائي المتاحة. تتم عملية فك الضغط إما بقراءة البيانات من الجزء الذي تم فك ضغطه من الملف، أو بتخزين التطابقات المستقبلية في الذاكرة (خوارزمية ضغط LZ المستقبلية). بالطبع، يتطلب ضغط LZ المستقبلية مرورين على ملف الإدخال، لكن فك الضغط لا يحتاج إلا إلى ذاكرة صغيرة جدًا. في إحدى التجارب، تطلب ملف بحجم 22 جيجابايت، تم ضغطه بحد أدنى لطول التطابق 512 بايت وقاموس كامل بحجم 22 جيجابايت، 2 جيجابايت فقط من ذاكرة الوصول العشوائي لفك الضغط.
انظر أيضاً
مراجع
- ↑ اختيار الرمز البريدي المناسب
- ↑ "rzip" .
- ↑ "نيكولاس راتشينسكي: روابط" .
- ↑ كوليفاس، كون. "الملف التمهيدي" . جيثب . تم الاسترجاع 27 يناير 2017 .
- ↑ "GHSi - Benchmarking rzip64" .
روابط خارجية
- rzip
- lrzip هو تحسين لـ rzip يسمح باستبدال مرحلة الضغط الثانية bzip2 بـ LZMA أو LZO ، أو الاستغناء عن المرحلة الثانية تمامًا (ضغط خام باستخدام القاموس فقط). المؤلف هو كون كوليفاس، الذي يذكر أن lrzip اختصار لـ "Long Range ZIP" (ضغط مضغوط طويل المدى).
- rzip64 — تحسين موازٍ لـ 'rzip' مع وضع التوقف والانطلاق من كاي جورونتزي.
- REP في Wayback Machine (مؤرشف بتاريخ 19-11-2016) - تطبيق RZIP مُحسَّن للاستخدام مع LZMA
- SREP على موقع Wayback Machine (أرشيف 23-12-2016) - أول ضاغط LZ يستخدم ذاكرة وصول عشوائي أقل من حجم القاموس
- DataCompression.info – LZ77/LZSS ومشتقاتها
- برنامج مجاني لضغط البيانات
