إكس زي
المحتويات
بدايةً، وسائل إكس زي ، والمعروفة مسبقًا بوسائل إل زي إم أيه هي مجموعة من برمجيات بضغط البيانات عديم الخسارة الحرة تعمل من واجهة سطر الأوامر، وتشمل برمجيات lzma وxz المصممة لنظم التشغيل الشبيهة بيونكس، وبدءًا من الإصدار 5.0 فصاعدًا لنظام مايكروسوفت ويندوز. يُستخدَم خوارزمية ليمبل-زيف-ماركوف التسلسلية (LZMA) لضغط وفك ضغط البيانات. بدأت وسائل إكس زي كنسخة معدَّلة من LZMA-SDK التي طوَّرها إيغور بافلوف لتتناسب بسلاسة مع بيئات يونكس وهيكلها وسلوكها المعتاد. ونتناول فيما يلي مزيدًا من التفاصيل.
المميزات
وفي هذا الصدد، توجد الكثير من الاختصارات للأوامر، مثل lzma (بديل عن xz --format=lzma)، وunxz (بديل عن xz --decompress؛ مشابه لـgunzip)، وxzcat (بديل عن unxz --stdout؛ مشابه لـzcat).
وفي هذا السياق، في أغلب الأحيان، تحقق برمجية xz معدلات ضغط أعلى من البدائل الأخرى مثل zip وgzip وbzip2. وسرعة فك الضغط فيه أعلى من bzip2، ولكنها أقل من gzip. قد تكون عملية الضغط أبطأ بكثير من gzip، كما أنها أبطأ من bzip2 في مستويات الضغط العالية، ويكون استخدامه مفيدًا بشكل خاص عندما يتم استخدام الملف المضغوط مرات عديدة.
ومن ناحية أخرى، يمكن لوسائل إكس زي ضغط وفك ضغط الملفات بتنسيقات xz وlzma. ونظرًا لأن تنسيق LZMA يُعد قديمًا، فإن وسائل إكس تضغط بشكل أساسي إلى تنسيق xz.
- تتألف وسائل إكس زي من مكونين رئيسيين:
- xz، وهو أداة ضغط وفك ضغط تعمل من خلال سطر الأوامر (مشابهة لـgzip)
- liblzma، وهي مكتبة برمجية تحتوي على واجهة برمجة تطبيقات مشابهة لـzlib
حادثة الباب الخلفي
المراجع
وعلى صعيد آخر، في 29 مارس 2024، أعلن أندريس فرويند، وهو مطور بوستجري إس كيو إل يعمل لدى مايكروسوفت، أنه اكتشف ثغرة باب خلفي في وسائل إكس زِي، وتؤثر هذه الثغرة على الإصدارين 5.6.0 و5.6.1. أضيفت ملفات اختبار مضغوطة إلى المصدر البرمجي لإعداد هذه الثغرة الخلفية عبر إضافات إلى نص التكوين (configure script) في ملفات التار (tar). بدأ فرويند تحقيقاته بعد ملاحظة بعض الأعراض الغريبة حول ليبلزما (liblzma) (وهي جزء من حزمة إكس زِي)، حيث وجد أن عمليات الولوج عبر بروتوكول النقل الآمن (ssh) باستخدام sshd تستهلك الكثير من موارد وحدة معالجة مركزية، فضلًا عن الكثير من أخطاء فالجريند (valgrind). حصلت هذه الثغرة الأمنية على درجة 10 (وهي الأعلى) بحسب نظام تسجيل نقاط الضعف المشترك.
xz my_archive.tar # ينتج ملفًا يُدعى my_archive.tar.xz
علاوةً على ذلك، تدعم برمجية xz الضغط متعدد المسارات (باستخدام علامة ) منذ عام 2014، بدءًا من الإصدار 5.2.0؛ ومنذ الإصدار 5.4.0 نُفِّذ فك الضغط متعدد المسارات. يتطلب فك الضغط متعدد المسارات وجود عدة كتل مضغوطة داخل التدفق، والتي تُنشأ بواسطة واجهة الضغط متعددة المسارات. قد يكون عدد المسارات أقل من المُحدد إذا لم يكن الملف كبيرًا بما يكفي لاستخدام المسارات المتعددة بالإعدادات المعطاة، أو إذا كان استخدام المزيد من المسارات متجاوزًا حد استخدام الذاكرة.
- lzma my_archive.tar # ينتج ملفًا يُدعى my_archive.tar.lzma
- لفك ضغط الأرشيف:
- unxz my_archive.tar.xz # ينتج ملفًا يُدعى my_archive.tar
- unlzma my_archive.tar.lzma # ينتج ملفًا يُدعى my_archive.tar
من جانب آخر، يوفر الإصدار 1.22 أو ما يليه من صياغة مشروع جنو لتار دعمًا شفافًا لحزم التار المضغوطة بواسطة lzma وxz، وذلك باستخدام المفاتيح أو للضغط بتقنية xz، والمفتاح للضغط بتقنية LZMA.
من جهة ثانية، tar -c --xz -f my_archive.tar.xz /some_directory # ينتج ملفًا يُدعى my_archive.tar.xz
وفي هذا الصدد، tar -c --lzma -f my_archive.tar.lzma /some_directory # ينتج ملفًا يُدعى my_archive.tar.lzma
لإنشاء أرشيف ثم ضغطه:
- لفك ضغط الأرشيف واستخراج محتوياته:
- tar -x --xz -f my_archive.tar.xz # ينتج مجلدًا يٌدعى /some_directory
- tar -x --lzma -f my_archive.tar.lzma # ينتج مجلدًا يٌدعى /some_directory
- لضغط وفك ضغط الأرشيف باستعمال اختصارات الأحرف الواحدة:
- tar cJf keep.txz keep # يؤرشف ويضغط المجلد ./keep/ داخل الملف ./keep.txz
- tar xJf keep.txz # يفك ضغط ويستخرج الملف ./keep.txz داخل المجلد ./keep/
الاستعمال
وعلى صعيد آخر، تمامًا مثل gzip وbzip، فإن xz وlzma يمكنهما فقط ضغط ملفات فردية (أو تدفقات بيانات) كمدخلات. ولا يمكنهما دمج ملفات متعددة في أرشيف واحد - للقيام بذلك تُستعمل برمجية أرشفة أولًا، مثل تار (tar).
إضافةً إلى ذلك، صُمِّم كلٌّ من سلوك البرمجيات وخصائص صيغة الملف للعمل بطريقة مشابهة لتلك التي تتميز بها أدوات الضغط الشائعة في نظم يونكس مثل gzip وbzip2.
للضغط كأرشيف:
التطوير والانتشار
كذلك، أصدِر المصدر البرمجي الكامل لبرمجية xz ومكتبة liblzma للملكية العامة. تضمن المصدر كذلك بعض النصوص البرمجية الاختيارية وبرنامجًا تجريبيًا خاضعًا لإصدارات مختلفة من رخصة جنو العمومية. الملفات الثنائية الناتجة لبرنامج xz ومكتبة liblzma تعتبر ملكية عامة ما لم تدمج برمجية getopt الاختيارية الخاضع لرخصة جنو العمومية الصغرى.
وفي هذا الصدد، طوِّر وسائل إكس زي ضمن مشروع توكاني ، وهو فريق صغير من المطورين الذين أشرفوا سابقًا على أحد توزيعات لينكس المبنية على سلاكوير. الاسم المختار XZ ليس اختصارًا، بل يبدو أنه اسم عشوائي أُعطي لضواغط البيانات، حيث لا يوجد أي ذكر في التوثيقات الرسمية عن معنى XZ. أصدِرت المعايير الرسمية لصيغة ملفات .xz الإصدار 1.0.0 في يناير 2009.
وفي هذا الصدد، تتوفر الملفات الثنائية لنظم تشغيل فري بي إس دي ونت بي إس دي ولينكس ومايكروسوفت ويندوز وفري دوس. تستعمل الكثير من توزيعات لينكس بما فيها فيدورا وسلاكوير وأوبونتو ودبيان برمجية xz لضغط حزم برمجياتها. كانت توزيعة آرتش لينكس تستعمل xz لضغط الحزم سابقًا، ولكن اعتباراً من 27 ديسمبر 2019، أصبحت الحزم تُضغط باستعمال Zstandard. انتقلت فيدورا كذلك إلى ضغط حزم RPM الخاصة بها باستخدام Zstandard بدءًا من فيدورا لينكس 31. كما يستعمل أرشيف جنو FTP كذلك برمجية xz.
صيغة ملف إكس زي
إضافةً إلى ذلك، يُحسّن التنسيق xz صيغة lzma من خلال السماح بمرشحات معالجة مسبقة. المرشحات المستعملة بالتحديد مشابهة لتلك المستعملة في 7z، حيث إن مرشحات 7z متاحة في النطاق العام عبر حزمة أدوات تطوير برمجيات LZMA.
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟