تنسيق أرشيف XZ
XZ هو تنسيق أرشيف عالي الضغط يستخدم بشكل أساسي لضغط الملفات الفردية، مما يوفر كفاءة ضغط فائقة وتوافقًا مفتوح المصدر. تم تطوير هذا التنسيق كجزء من XZ Utils، وهو معروف باستخدامه لخوارزمية الضغط LZMA2، والتي تحقق نسب ضغط عالية مع الحفاظ على سرعات إلغاء الضغط المعقولة. تُستخدم أرشيفات XZ على نطاق واسع في توزيع حزم البرامج، خاصة في أنظمة التشغيل المشابهة لـ Unix مثل Linux.
معلومات أرشيف XZ العامة
أرشيفات XZ مصممة لتوفير ضغط فعال مع التركيز على تقليل أحجام الملفات للتخزين والتوزيع. يستخدم التنسيق خوارزمية LZMA2، التي تجمع بين ضغط القاموس وترميز الإنتروبيا، مما يجعله فعالاً للغاية لضغط الملفات الكبيرة. تحتوي أرشيفات XZ عادة على ملف مضغوط واحد، ولكن يمكن دمجها مع أدوات أخرى مثل tar لضغط المجلدات بأكملها. غالبًا ما يُستخدم تنسيق XZ في توزيع البرامج والنسخ الاحتياطي للبيانات والأرشفة، لا سيما في نظام Linux البيئي، حيث أصبح معيارًا لتعبئة البرامج وتحديثات النظام.
معلومات تاريخ XZ
- 2005: بدأ تطوير تنسيق XZ كجزء من مشروع XZ Utils، والذي يهدف إلى إنشاء بديل أكثر كفاءة لتنسيق LZMA الأقدم.
- 2009: تم إصدار XZ Utils رسميًا، حيث تم تقديم تنسيق XZ كمعيار جديد لاحتياجات الضغط العالي.
- 2010: بدأ XZ يكتسب شعبية في مجتمع Linux، وسرعان ما أصبح التنسيق المفضل لضغط حزم البرامج وأرشيفات النظام.
- 2011: بدأت توزيعات Linux الرئيسية، بما في ذلك Debian وArch Linux، في اعتماد XZ كتنسيق الضغط الافتراضي لمستودعات الحزم الخاصة بها.
- 2014: توسع استخدام XZ إلى ما هو أبعد من Linux، وأصبح شائعًا في توزيع البرامج عبر الأنظمة الأساسية، خاصة بالنسبة للتطبيقات التي تتطلب نسب ضغط عالية.
- 2020: يظل XZ مستخدمًا على نطاق واسع في تغليف البرامج وتخزين البيانات وتوزيعها، خاصة في البيئات التي يكون فيها الضغط الفعال أمرًا بالغ الأهمية.
هيكل أرشيف XZ
- الرأس: يحتوي الرأس على بيانات تعريف حول أرشيف XZ، بما في ذلك إصدار التنسيق والأعلام وأي ملحقات اختيارية مستخدمة. ويشير أيضًا إلى وجود مجاميع اختبارية لتكامل البيانات.
- دفق البيانات المضغوطة: جوهر أرشيف XZ هو دفق البيانات المضغوطة. يحتوي هذا القسم على بيانات الملف الفعلية، المضغوطة باستخدام خوارزمية LZMA2. يتم تقسيم تدفق البيانات إلى كتل، مما يسمح بالضغط وإلغاء الضغط بكفاءة. يمكن فك ضغط كل كتلة بشكل مستقل، مما يساعد في استعادة البيانات حتى لو كان الأرشيف تالفًا جزئيًا.
- التذييل: يتضمن التذييل المجموع الاختباري CRC32 الذي يتحقق من سلامة الأرشيف. كما أنه يمثل نهاية دفق البيانات المضغوطة ويمكن أن يحتوي على معلومات إضافية مثل فهرس الكتل للوصول السريع.
تم تصميم تنسيق أرشيف XZ لضغط ملف واحد ويستخدم بنية واضحة لتحقيق نسب ضغط عالية. فيما يلي نظرة عامة على بنية أرشيف XZ:
طرق ضغط XZ
يعتمد تنسيق XZ بشكل أساسي على خوارزمية الضغط LZMA2، المعروفة بنسبة الضغط العالية وسرعة الضغط المعقولة. فيما يلي نظرة فاحصة على طرق الضغط المرتبطة بـ XZ:
- LZMA2: هذه هي طريقة الضغط الافتراضية والوحيدة التي تستخدمها أرشيفات XZ. يعتمد LZMA2 على خوارزمية LZ77 ويتضمن ترميز إنتروبيا متقدم، مما يجعله عالي الكفاءة في ضغط الملفات الكبيرة. وهو يوفر إعدادات ضغط قابلة للتعديل، مما يسمح للمستخدمين بتحديد أولويات سرعة الضغط أو النسبة حسب احتياجاتهم.
- المرشحات: بالإضافة إلى LZMA2 ، يدعم XZ العديد من المرشحات الاختيارية التي يمكن تطبيقها قبل الضغط لتقليل حجم الملف بشكل أكبر. يتضمن ذلك ترميز دلتا، وهو مفيد لضغط البيانات التي تحتوي على تغييرات صغيرة ومتكررة، وBCJ (فرع/استدعاء/قفز)، الذي يعمل على تحسين ضغط التعليمات البرمجية القابلة للتنفيذ عن طريق تحويل تعليمات معينة إلى نماذج أكثر قابلية للضغط.
- المجموع الاختباري CRC32 وSHA-256: على الرغم من أن أرشيفات XZ ليست طرق ضغط في حد ذاتها، إلا أنها تستخدم المجموع الاختباري CRC32 للتحقق من السلامة وتدعم SHA-256 بشكل اختياري للتحقق المحسن من البيانات، مما يضمن عدم إتلاف البيانات المضغوطة أو العبث بها.
.xz العمليات المدعومة
يقدم Aspose.Zip دعمًا شاملاً للعمل مع أرشيفات .xz، مما يسهل إدارة الملفات المضغوطة. إليك ما يمكنك فعله:
- الاستخراج الكامل: يمكنك بسهولة استخراج جميع الملفات من أرشيف .xz، مع الحفاظ على سلامة المحتوى الأصلي وبنيته.
- الاستخراج الانتقائي: استهدف ملفات محددة ضمن أرشيف .xz، مما يسمح باستعادة البيانات بدقة أو إلغاء الضغط الانتقائي بناءً على أسماء الملفات أو معايير أخرى.
- ضغط البيانات: قم بإنشاء أرشيفات بتنسيق .xz من الملفات والأدلة، باستخدام طريقة ضغط LZMA2 الفعالة لتقليل أحجام الملفات بشكل كبير.
- إعدادات الضغط المخصصة: اضبط مستويات الضغط والمعلمات الأخرى لتحقيق التوازن بين سرعة الضغط وحجم الملف، وتخصيص العملية وفقًا لاحتياجاتك المحددة.
هيكل ملف .XZ
يتم استخدام تنسيق الملف .xz بشكل أساسي لضغط البيانات وتعبئتها. يستخدم خوارزمية LZMA2 لتحقيق نسب ضغط عالية. فيما يلي نظرة عامة على بنية أرشيف .xz:
رأس البث:
- وحدات البايت السحرية: تحدد البايتات الستة الأولى (FD 37 7A 58 5A 00) الملف باعتباره أرشيفًا بتنسيق .xz.
- علامات الدفق: تتضمن تفاصيل مثل حجم الكتلة وخيارات الضغط.
رأس الكتلة:
- حجم الكتلة: يشير إلى حجم الكتلة التالية.
- طريقة الضغط: تحدد الخوارزمية المستخدمة (عادةً LZMA2).
- سلاسل التصفية: تفاصيل أي مرشحات إضافية تم تطبيقها قبل الضغط أو بعده.
كتل البيانات المضغوطة:
- البيانات: البيانات الفعلية المضغوطة باستخدام خوارزمية LZMA2.
- CRC32: المجموع الاختباري المستخدم للتحقق من سلامة البيانات المضغوطة.
قسم الفهرس:
- بيانات الفهرس: توفر إزاحات لكل كتلة وحجم غير مضغوط، مما يسمح بالوصول العشوائي داخل التدفق المضغوط.
- الفهرس CRC32: يضمن سلامة قسم الفهرس.
تذييل البث:
- أعلام الدفق: يكرر أعلام الدفق من الرأس لأغراض التحقق من الصحة.
- الحجم الخلفي: حجم قسم الفهرس، مما يتيح الاجتياز العكسي للملف.
- Magic Bytes: ينتهي الملف بتسلسل 2 بايت (59 5A) للإشارة إلى نهاية أرشيف .xz.
بيانات التعريف الاختيارية:
- قد تتضمن بعض أرشيفات .xz بيانات تعريف إضافية لميزات خاصة أو وظائف موسعة، مثل عوامل التصفية المخصصة أو التشفير.
شعبية تنسيق XZ
اكتسب تنسيق الملف .xz شعبية كبيرة، لا سيما في مجتمعات Linux والمجتمعات مفتوحة المصدر، نظرًا لنسبة الضغط العالية والاستخدام الفعال للموارد. يتم استخدامه على نطاق واسع لضغط حزم البرامج وتوزيع التعليمات البرمجية المصدر وأرشفة مجموعات البيانات الكبيرة. توفر مجموعة أدوات XZ Utils دعمًا قويًا لإنشاء ملفات .xz واستخراجها وإدارتها عبر منصات مختلفة، بما في ذلك Linux وmacOS وWindows. على الرغم من عدم اعتماده على نطاق واسع في بيئات Windows مثل ZIP أو CAB ، إلا أن .xz يحظى بالتقدير لتوازنه بين فعالية الضغط والأداء، مما يجعله خيارًا مفضلاً للمطورين ومسؤولي النظام. بالإضافة إلى ذلك، تم دمج .xz في العديد من أنظمة إدارة الحزم، مثل Debian’s APT وArch Linux’s Pacman، مما يعزز دورها في النظام البيئي لتوزيع البرامج.
أمثلة على استخدام أرشيفات XZ
يوفر هذا القسم أمثلة التعليمات البرمجية التي توضح كيفية ضغط أرشيفات XZ وفك ضغطها باستخدام C# وJava. تستخدم هذه الأمثلة مكتبات مثل Aspose.Zip لـ C# وفئة XzArchive المضمنة (اعتمادًا على بيئة Java) للتفاعل مع ملفات XZ.
Compress XZ File via C#
using (FileStream xzFile = File.Open("data.bin.xz", FileMode.Create))
{
using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new XzArchive(Aspose.Zip.Xz.Settings.XzArchiveSettings.FastestSpeed))
{
archive.SetSource(source);
archive.Save(xzFile);
}
}
}
Open XZ Archive via C#
using (var archive = new XzArchive("data.bin.xz"))
{
archive.Extract("data.bin");
}
Compress XZ File via C#
try (FileOutputStream xzFile = new FileOutputStream("data.bin.xz")) {
try (FileInputStream source = new FileInputStream("data.bin")) {
try (XzArchive archive = new XzArchive(XzArchiveSettings.getFastestSpeed())) {
archive.setSource(source);
archive.save(xzFile);
}
}
} catch (IOException ex) {
}
Open XZ Archive via Java
try (XzArchive archive = new XzArchive("data.bin.xz")) {
archive.extract("data.bin");
}
معلومات إضافية
لقد كان الناس يسألون
1. هل .xz مدعوم على كافة أنظمة التشغيل؟
في حين أن .xz هو الأكثر استخدامًا في بيئات Linux، إلا أنه مدعوم على جميع أنظمة التشغيل الرئيسية. تتوفر أدوات مثل XZ Utils لنظامي التشغيل Windows وmacOS، كما تدعم الأدوات المشتركة بين الأنظمة الأساسية مثل 7-Zip ملفات .xz.
2. ما هي مزايا استخدام ملفات XZ؟
توفر ملفات XZ العديد من المزايا، بما في ذلك نسب الضغط العالية والاستخدام الفعال لموارد النظام والتوافق عبر الأنظمة الأساسية. يتم استخدامها بشكل شائع لأرشفة مجموعات البيانات الكبيرة، وتوزيع حزم البرامج، والنسخ الاحتياطي للبيانات.
3. هل يمكنني ضغط ملفات متعددة في أرشيف واحد بتنسيق .xz؟
على عكس التنسيقات مثل ZIP أو TAR ، يُستخدم عادةً .xz. لضغط ملف واحد. إذا كنت تريد ضغط ملفات متعددة، فأنت بحاجة أولاً إلى أرشفتها في ملف واحد باستخدام Aspose.Zip API من أجل إنشاء ملف .tar ثم قم بضغط الأرشيف باستخدام .xz، مما ينتج عنه ملف .tar.xz.