إكس زي
| نوع | |
|---|---|
| نظام التشغيل | |
| النموذج المصدري | |
| موقع الويب |
tukaani.org… (الإنجليزية) |
| لغة البرمجة | |
|---|---|
| تطبيق ل | |
| الإصدار الأخير |
|
| المستودع | |
| الرخصة |
رخصة جنو العمومية الصغرى، الإصدار 2.1 أو ما يليها [لغات أخرى] |
| الملفات المقروءة | |
| الملفات المنتجة |
| امتداد الملف |
xz |
|---|---|
| صيغة وسائط الإنترنت |
application/x-xz[5] |
| توقيع الملف/عدد سحري | |
| المطور |
إيغور بافلوف [لغات أخرى] |
| موقع الويب |
tukaani.org… (الإنجليزية) |
وسائل إكس زي (بالإنجليزية: XZ Utils)، والمعروفة مسبقًا بوسائل إل زي إم أيه (بالإنجليزية: LZMA Utils) هي مجموعة من برمجيات بضغط البيانات عديم الخسارة الحرة تعمل من واجهة سطر الأوامر، وتشمل برمجيات lzma وxz المصممة لنظم التشغيل الشبيهة بيونكس، وبدءًا من الإصدار 5.0 فصاعدًا لنظام مايكروسوفت ويندوز. يُستخدَم خوارزمية ليمبل-زيف-ماركوف التسلسلية (LZMA) لضغط وفك ضغط البيانات. بدأت وسائل إكس زي كنسخة معدَّلة من LZMA-SDK التي طوَّرها إيغور بافلوف لتتناسب بسلاسة مع بيئات يونكس وهيكلها وسلوكها المعتاد.
المميزات
يمكن لوسائل إكس زي ضغط وفك ضغط الملفات بتنسيقات xz وlzma. ونظرًا لأن تنسيق LZMA يُعد قديمًا،[8] فإن وسائل إكس تضغط بشكل أساسي إلى تنسيق xz.
في معظم الأحيان، تحقق برمجية xz معدلات ضغط أعلى من البدائل الأخرى مثل zip[9] وgzip وbzip2. وسرعة فك الضغط فيه أعلى من bzip2، ولكنها أقل من gzip. قد تكون عملية الضغط أبطأ بكثير من gzip، كما أنها أبطأ من bzip2 في مستويات الضغط العالية، ويكون استخدامه مفيدًا بشكل خاص عندما يتم استخدام الملف المضغوط مرات عديدة.[10][11]
تتألف وسائل إكس زي من مكونين رئيسيين:
xz، وهو أداة ضغط وفك ضغط تعمل من خلال سطر الأوامر (مشابهة لـgzip)liblzma، وهي مكتبة برمجية تحتوي على واجهة برمجة تطبيقات مشابهة لـzlib
توجد العديد من الاختصارات للأوامر، مثل lzma (بديل عن xz --format=lzma)، وunxz (بديل عن xz --decompress؛ مشابه لـgunzip)، وxzcat (بديل عن unxz --stdout؛ مشابه لـzcat).
الاستعمال
صُمِّم كلٌّ من سلوك البرمجيات وخصائص صيغة الملف للعمل بطريقة مشابهة لتلك التي تتميز بها أدوات الضغط الشائعة في نظم يونكس مثل gzip وbzip2.
تمامًا مثل gzip وbzip، فإن xz وlzma يمكنهما فقط ضغط ملفات فردية (أو تدفقات بيانات) كمدخلات. ولا يمكنهما دمج ملفات متعددة في أرشيف واحد - للقيام بذلك تُستخدم برمجية أرشفة أولًا، مثل تار (tar).
للضغط كأرشيف:
xz my_archive.tar # ينتج ملفًا يُدعى my_archive.tar.xz
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 أو -J للضغط بتقنية xz، والمفتاح --lzma للضغط بتقنية 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/
تدعم برمجية xz الضغط متعدد المسارات (باستخدام علامة -T)[12] منذ عام 2014، بدءًا من الإصدار 5.2.0؛[13] ومنذ الإصدار 5.4.0 نُفِّذ فك الضغط متعدد المسارات. يتطلب فك الضغط متعدد المسارات وجود عدة كتل مضغوطة داخل التدفق، والتي تُنشأ بواسطة واجهة الضغط متعددة المسارات. قد يكون عدد المسارات أقل من المُحدد إذا لم يكن الملف كبيرًا بما يكفي لاستخدام المسارات المتعددة بالإعدادات المعطاة، أو إذا كان استخدام المزيد من المسارات متجاوزًا حد استخدام الذاكرة.[12]
صيغة ملف إكس زي
يُحسّن التنسيق xz صيغة lzma من خلال السماح بمرشحات معالجة مسبقة. المرشحات المستخدمة بالتحديد مشابهة لتلك المستخدمة في 7z، حيث إن مرشحات 7z متاحة في النطاق العام عبر حزمة أدوات تطوير برمجيات LZMA.
التطوير والانتشار
طوِّر وسائل إكس زي ضمن مشروع توكاني (بالإنجليزية: Tukaani Project)، وهو فريق صغير من المطورين الذين أشرفوا سابقًا على أحد توزيعات لينكس المبنية على سلاكوير. الاسم المختار XZ ليس اختصارًا، بل يبدو أنه اسم عشوائي أُعطي لضواغط البيانات، حيث لا يوجد أي ذكر في التوثيقات الرسمية عن معنى XZ.[14] أصدِرت المعايير الرسمية لصيغة ملفات .xz الإصدار 1.0.0 في يناير 2009.[15]
أصدِر المصدر البرمجي الكامل لبرمجية xz ومكتبة liblzma للملكية العامة. تضمن المصدر أيضًا بعض النصوص البرمجية الاختيارية وبرنامجًا تجريبيًا خاضعًا لإصدارات مختلفة من رخصة جنو العمومية.[16] الملفات الثنائية الناتجة لبرنامج xz ومكتبة liblzma تعتبر ملكية عامة ما لم تدمج برمجية getopt الاختيارية الخاضع لرخصة جنو العمومية الصغرى.[17]
تتوفر الملفات الثنائية لنظم تشغيل فري بي إس دي ونت بي إس دي ولينكس ومايكروسوفت ويندوز وفري دوس. تستخدم العديد من توزيعات لينكس بما فيها فيدورا وسلاكوير وأوبونتو ودبيان برمجية xz لضغط حزم برمجياتها. كانت توزيعة آرتش لينكس تستخدم xz لضغط الحزم سابقًا،[18] ولكن اعتباراً من 27 ديسمبر 2019، أصبحت الحزم تُضغط باستعمال Zstandard.[19] انتقلت فيدورا كذلك إلى ضغط حزم RPM الخاصة بها باستخدام Zstandard بدءًا من فيدورا لينكس 31.[20] كما يستخدم أرشيف جنو FTP أيضًا برمجية xz.
حادثة الباب الخلفي
في 29 مارس 2024، أعلن أندريس فرويند، وهو مطور بوستجري إس كيو إل يعمل لدى مايكروسوفت، أنه اكتشف ثغرة باب خلفي في وسائل إكس زِي، وتؤثر هذه الثغرة على الإصدارين 5.6.0 و5.6.1. أضيفت ملفات اختبار مضغوطة إلى المصدر البرمجي لإعداد هذه الثغرة الخلفية عبر إضافات إلى نص التكوين (configure script) في ملفات التار (tar). بدأ فرويند تحقيقاته بعد ملاحظة بعض الأعراض الغريبة حول ليبلزما (liblzma) (وهي جزء من حزمة إكس زِي)، حيث وجد أن عمليات الولوج عبر بروتوكول النقل الآمن (ssh) باستخدام sshd تستهلك الكثير من موارد وحدة معالجة مركزية، بالإضافة إلى العديد من أخطاء فالجريند (valgrind).[21] حصلت هذه الثغرة الأمنية على درجة 10 (وهي الأعلى) وفقاً لنظام تسجيل نقاط الضعف المشترك.[22]
المراجع
- ↑ وصلة مرجع: https://git.tukaani.org/?p=xz.git;h=02ddf09.
- ↑ "The xz-utils Open Source Project on Open Hub: Languages Page". أهلوه. اطلع عليه بتاريخ 2018-09-21.
- ↑ "git.tukaani.org - xz.git/commit". اطلع عليه بتاريخ 2025-04-05.
- 1 2 وصلة مرجع: https://manpages.debian.org/bookworm/xz-utils/xz.1.en.html. الوصول: 5 أبريل 2024.
- ↑ "TrID".
- ↑ مذكور في: Gary Kessler's File Signature Table. الوصول: 7 أغسطس 2017.
- 1 2 مذكور في: برونوم. معرف صيغة ملف في برونوم: fmt/1098.
- ↑ LZMA Util، مؤرشف من الأصل في 2025-02-15، اطلع عليه بتاريخ 2011-01-25
- ↑ Vivek، Gite. "How to compress the whole directory using xz and tar in Linux".
For instance, I compressed a directory having 37M size using both xz and zip. The zip file size was 31M, while the xz file was 16M after compression
- ↑ Henry-Stocker, Sandra (12 Dec 2017). "How to squeeze the most out of Linux file compression". Network World (بالإنجليزية). Retrieved 2020-02-09.
- ↑ "Gzip vs Bzip2 vs XZ Performance Comparison". RootUsers (بالإنجليزية الأمريكية). 16 Sep 2015. Retrieved 2020-02-09.
- 1 2 "xz, unxz, xzcat, lzma, unlzma, lzcat – Compress or decompress .xz and .lzma files". Linux Manpages Online. مؤرشف من الأصل في 2024-12-13.
- ↑ "XZ Utils Release Notes". git.tukaani.org. مؤرشف من الأصل في 2024-08-12.
- ↑ "Official XZ Specification". tukaani.org. Lasse Collin. مؤرشف من الأصل في 2024-12-07. اطلع عليه بتاريخ 2024-10-08.
- ↑ Lasse Collin (28 يناير 2009). "News: The .xz file format specification version 1.0.0 is now officially released". مؤرشف من الأصل في 2025-01-23.
- ↑ Licensing on tukaani.org "The most interesting parts of XZ Utils (e.g. liblzma) are in the public domain. You can do whatever you want with the public domain parts. Some parts of XZ Utils (e.g. build system and some utilities) are under different free software licenses such as GNU LGPLv2.1, GNU GPLv2, or GNU GPLv3." نسخة محفوظة 2025-02-19 على موقع واي باك مشين.
- ↑ "In what cases is the output of a GPL program covered by the GPL too?". GNU.org. مؤرشف من الأصل في 2025-02-12. اطلع عليه بتاريخ 2019-08-21.
- ↑ Pierre Schmitz (23 مارس 2010). "News: Switching to xz compression for new packages". مؤرشف من الأصل في 2024-10-14.
- ↑ "Arch Linux - News: Now using Zstandard instead of xz for package compression". www.archlinux.org. اطلع عليه بتاريخ 2020-01-07.
- ↑ Mach، Daniel. "Changes/Switch RPMs to zstd compression". Fedora Project Wiki. مؤرشف من الأصل في 2025-01-15. اطلع عليه بتاريخ 2024-03-30.
- ↑ "oss-security - backdoor in upstream xz/liblzma leading to ssh server compromise". www.openwall.com. مؤرشف من الأصل في 2025-02-13. اطلع عليه بتاريخ 2024-04-08.
- ↑ "A backdoor in xz". إل دبليو إن.نت. مؤرشف من الأصل في 2025-01-08. اطلع عليه بتاريخ 2024-03-30.
وصلات خارجية
- الموقع الرسمي
- إكس زي على موقع سورس فورج