نظرة عامة
توفر بيئة لينكس مجموعة قوية من أدوات إدارة المساحة، وتبرز من بينها أداة bzip2 كأحد الحلول الموثوقة لتحقيق نسب ضغط فائقة. يتناول هذا الدليل التطبيقي كيفية توظيف الخيارات التشغيلية الحيوية للأداة على خوادم أوبونتو، بدءاً من أساليب حماية الملفات الأصلية أثناء المعالجة وصولاً إلى تقييم كفاءة الخوارزميات المختلفة. من خلال التطبيق التفاعلي عبر الطرفية، سنوضح الفروق الجوهرية وآليات العمل المشتركة بين الأدوات الشقيقة bzip2 وbunzip2 وbzcat.
التحقق من توفر bzip2 وضغط الملفات مع حماية الأصل (-k, -v)
قبل البدء في الاختبارات المعملية، نتأكد أولاً من وجود حزمة bzip2 ضمن بيئة النظام ونقوم بتثبيتها عند الحاجة عبر سطر الأوامر.

لإنشاء بيئة تجريبية بسيطة، نولد ملفاً نصياً تجريبياً باسم sample1.txt بالاعتماد على أمر echo.

تعتمد أداة bzip2 على خوارزمية فرز الكتل (Burrows-Wheeler) لتحقيق كفاءة تقليص عالية لحجم البيانات.
السلوك الافتراضي للأداة يتضمن استبدال الملف الأصلي وإنتاج أرشيف بامتداد .bz2، ولكن إضافة المعامل -v تتيح للمسؤول متابعة تفاصيل المعالجة وحساب نسبة التقليص بدقة.
⚙️ [الخيارات الأساسية]
-d : فك الضغط عن الأرشيفات التي تحمل الامتداد .bz2.-k : الاحتفاظ بالنسخة الأصلية ومنع حذفها بعد اكتمال الضغط أو الاستخراج.-v : طباعة تقرير مفصل حول مراحل المعالجة ونسبة التوفير في الحجم.-f : فرض الكتابة فوق الملفات الوجهة في حال وجودها مسبقاً دون طلب تأكيد.-t : التحقق من سلامة بنية الأرشيف واختبار صحة البيانات بدون استخراجها.-c : إرسال ناتج الضغط مباشرة إلى مجرى الإخراج القياسي (stdout).-1 ~ -9 : ضبط حجم كتلة البيانات للتحكم في التوازن بين السرعة ومستوى الضغط (الإعداد الافتراضي هو -9).

لاختبار سلوك الاحتفاظ بالملف المصدر، ننشئ مستنداً ثانياً يحمل اسم sample2.txt.

ننفذ الأمر bzip2 -vk sample2.txt بهدف معالجة الملف واستعراض الإحصائيات مع إصدار تعليمات صريحة للأداة بعدم إتلاف أو إزالة الملف المصدري.
يضمن استخدام المعامل -k بقاء المستند الأصلي sample2.txt جنباً إلى جنب مع الأرشيف الجديد sample2.txt.bz2.

باستخدام الأمر ls -l sample*، نقارن بين نتيجة الملف الأول الذي اختفى مصدره وأصبح sample1.txt.bz2، والملف الثاني الذي ظل موجوداً رفقة نسخته المضغوطة بفضل الخيار -k.

استرجاع الملفات واختبار سلامة الأرشيف (-d, -t, bunzip2)
يتيح تشغيل bzip2 -tv sample1.txt.bz2 إجراء فحص مسبق لحالة البيانات والتأكد من خلو الحاوية من أي تلف في البايتات.
يقوم الخيار -t بقراءة الأرشيف ومطابقة خوارزميات التحقق دون كتابة أي ملف على القرص، بينما يعرض -v حالة التحقق بشكل مرئي ومباشر.

لاستعادة المستند إلى حالته العادية، ننفذ الأمر bzip2 -dv sample1.txt.bz2 لمتابعة تدفق عملية فك الضغط.
نظراً لغياب خيار الحفظ -k في هذا الأمر، ستتخلص الأداة تلقائياً من ملف الأرشيف .bz2 بمجرد اكتمال استخراج sample1.txt.

في المقابل، يمكن الاعتماد على الأمر المتخصص bunzip2 -vk sample2.txt.bz2 لاستخراج البيانات مع حماية الحاوية المضغوطة من المسح.
يعد bunzip2 مرادفاً وظيفياً مباشراً للأمر bzip2 -d، وتمرير الخيار -k إليه يضمن بقاء sample2.txt.bz2 على وسيط التخزين حتى بعد فك محتوياته.

نستعرض النتيجة النهائية لحالة المجلد بواسطة ls -l sample* لمعاينة الملفات المسترجعة والتحقق من بقاء الأرشيفات المحددة.

معاينة المحتويات والتعامل مع مجرى الإخراج القياسي (-c, bzcat)
لتوضيح إمكانات إعادة توجيه المخرجات والاطلاع على الملفات دون استخراجها، نقوم بإنشاء ملف تجريبي جديد باسم sample3.txt.

عند تنفيذ bzip2 -c sample3.txt > sample3.txt.bz2، نقوم بتحويل تيار البيانات المضغوطة نحو ملف جديد عبر مشغل إعادة التوجيه.
تعمل الراية -c على توجيه الناتج نحو stdout بدلاً من الكتابة التلقائية على القرص، مما يوفر طريقة ذكية للحفاظ على الملف الأصلي سليماً تماماً دون الحاجة لاستخدام خيار الحفظ المباشر.

لقراءة ما بداخل الأرشيف سريعاً عبر نافذة الأوامر، نلجأ إلى الأمر bzcat sample3.txt.bz2.
يطابق هذا الأمر سلوك bzip2 -dc تماماً، وهو وسيلة استثنائية لمراجعة النصوص وسجلات النظام داخل الملفات المضغوطة دون حجز مساحات تخزينية إضافية لفكها.

بالتحقق عبر ls -l sample3*، نرى بوضوح أن تطبيق تقنية إعادة التوجيه حافظ على سلامة كل من الملف المصدري sample3.txt والملف المضغوط sample3.txt.bz2.

موازنة مستويات الضغط (-1 إلى -9) ومقارنة استهلاك المساحة
لرصد التباين العملي بين مستويات الضغط من حيث الحجم والسرعة، نقوم بإنشاء كتلة بيانات اختبارية موسعة عبر الأمر seq 1 50000 > large_data.txt.

نبدأ بضغط الملف عبر الخيار -1 من خلال الأمر bzip2 -1 -vk -c large_data.txt > large_fast.bz2 لتفضيل سرعة التنفيذ على الحجم النهائي.
يعتمد المستوى -1 على تجزئة البيانات إلى كتل بحجم 100 كيلوبايت، ما يخفف من الضغط على الذاكرة العشوائية ويقلل الزمن المستغرق في المعالجة.

في المقابل، ننفذ الضغط بأقصى كفاءة اختزال ممكنة باستخدام الأمر bzip2 -9 -vk -c large_data.txt > large_best.bz2.
يمثل الخيار -9 القيمة الافتراضية للنظام، حيث يعالج كتلاً بحجم 900 كيلوبايت؛ وهو ما يتطلب موارد معالجة وذاكرة أكبر مقابل تقليص حجم الملفات بأعلى قدر مستطاع.

نقارن الأحجام الناتجة عبر مسح شامل بحجم مقروء بواسطة ls -lh large*.
نلاحظ بوضوح تقلص البيانات الأصلية البالغة 283K إلى 56K مع الأرشيف السريع large_fast.bz2 وإلى 67K مع الأرشيف الأكفأ large_best.bz2، مما يوضح طبيعة سلوك الخوارزمية مع الأنماط الرقمية المتكررة واختلاف مستويات الكتل.

غطى هذا الدليل العملي الاستخدامات اليومية لأمر bzip2 وخياراته في أوبونتو للتحكم في الضغط واسترجاع الملفات.
يمكنك الآن دمج هذه الخيارات بما يناسب طبيعة خوادمك للموازنة بين سرعة العمليات وتوفير مساحات التخزين بمرونة عالية.