كتيبات سطر الأوامر

Man » دليل xz عبر الإنترنت - وثائق مفصلة عبر الإنترنت لصفحة دليل xz

🌍
xz، unxz، xzcat، lzma، unlzma، lzcat - ضغط أو فك ضغط ملفات .xz و .lzma

الملخص

xz [خيار...] [ملف...]

أسماء الأوامر البديلة

unxz يعادل xz --decompress.
xzcat يعادل xz --decompress --stdout.
lzma يعادل xz --format=lzma.
unlzma يعادل xz --format=lzma --decompress.
lzcat يعادل xz --format=lzma --decompress --stdout.

عند كتابة البرامج النصية التي تحتاج إلى فك ضغط الملفات، يوصى دائمًا باستخدام الاسم xz مع الوسائط المناسبة (xz -d أو xz -dc) بدلاً من الأسماء unxz و xzcat.

الوصف

xz هي أداة لضغط البيانات للاستخدام العام مع بناء جملة سطر أوامر مشابه لـ gzip(1) و bzip2(1). التنسيق الأصلي للملف هو تنسيق .xz، ولكن يتم أيضًا دعم تنسيق .lzma القديم الذي تستخدمه أدوات LZMA وتدفقات البيانات المضغوطة الأولية بدون رؤوس تنسيق الحاوية. بالإضافة إلى ذلك، يتم دعم فك ضغط تنسيق .lz المستخدم بواسطة lzip.

يقوم xz بضغط أو فك ضغط كل ملف وفقًا لوضع التشغيل المحدد. إذا لم يتم تحديد أي ملفات
أو كان الملف هو -، فسيقوم xz بالقراءة من الإدخال القياسي وكتابة البيانات المعالجة إلى الإخراج القياسي. سيقوم xz بالرفض (يعرض خطأ ويتخطى الملف) لكتابة بيانات مضغوطة إلى الإخراج القياسي إذا كان الإخراج هو طرفية. وبالمثل، سيقوم xz بالرفض لقراءة بيانات مضغوطة من الإدخال القياسي إذا كان الإدخال هو طرفية.

ما لم يتم تحديد --stdout، يتم كتابة الملفات الأخرى غير - إلى ملف جديد يتم اشتقاق اسمه من اسم الملف المصدر:

عند الضغط، يتم إلحاق اللاحقة الخاصة بتنسيق الملف الهدف (.xz أو .lzma) باسم الملف المصدر للحصول على اسم الملف الهدف.

عند فك الضغط، تتم إزالة اللاحقة .xz أو .lzma أو .lz من اسم الملف للحصول على اسم الملف الهدف. يتعرف xz أيضًا على اللاحقات .txz و .tlz، ويستبدلها باللاحقة .tar.

إذا كان الملف الهدف موجودًا بالفعل، فسيتم عرض خطأ وسيتم تخطي الملف.

ما لم تتم الكتابة إلى الإخراج القياسي، سيعرض xz تحذيرًا ويتخطى الملف إذا كان أي مما يلي ينطبق:

الملف ليس ملفًا عاديًا. لا يتم تتبع الروابط الرمزية، وبالتالي لا تعتبر ملفات عادية.

الملف لديه أكثر من رابط ثابت واحد.

يتم تعيين علامات setuid أو setgid أو sticky على الملف.

يتم تعيين وضع التشغيل على الضغط والملف لديه بالفعل لاحقة بتنسيق الملف الهدف (.xz أو .txz عند الضغط إلى تنسيق .xz، و .lzma أو .tlz عند الضغط إلى تنسيق .lzma).

يتم تعيين وضع التشغيل على فك الضغط والملف ليس لديه لاحقة بأي من التنسيقات المدعومة (.xz أو .txz أو .lzma أو .tlz أو .lz).


بعد ضغط الملف أو فك ضغطه بنجاح، يقوم xz بنسخ المالك والمجموعة والأذونات ووقت الوصول ووقت التعديل من الملف المصدر إلى الملف الهدف. إذا فشلت عملية نسخ المجموعة، يتم تعديل الأذونات بحيث لا يصبح الملف الهدف متاحًا للمستخدمين الذين لم يكن لديهم إذن للوصول إلى الملف المصدر. لا يدعم xz نسخ بيانات تعريف أخرى مثل قوائم التحكم في الوصول أو السمات الممتدة حتى الآن.

بمجرد إغلاق الملف الهدف بنجاح، تتم إزالة الملف المصدر ما لم يتم تحديد --keep. لا تتم إزالة الملف المصدر أبدًا إذا تم كتابة الإخراج إلى الإخراج القياسي أو في حالة حدوث خطأ.

يؤدي إرسال SIGINFO أو SIGUSR1 إلى عملية xz إلى طباعة معلومات التقدم إلى الخطأ القياسي. هذا له استخدام محدود فقط لأنه عند استخدام الإخراج القياسي كمحطة طرفية، سيؤدي استخدام --verbose إلى عرض مؤشر تقدم يتم تحديثه تلقائيًا.

استخدام الذاكرة

يتراوح استخدام الذاكرة لـ xz من بضع مئات من الكيلو بايت إلى عدة جيجابايت اعتمادًا على إعدادات الضغط. تحدد الإعدادات المستخدمة عند ضغط ملف متطلبات الذاكرة الخاصة ببرنامج فك الضغط. عادةً ما يحتاج برنامج فك الضغط إلى 5٪ إلى 20٪ من مقدار الذاكرة التي احتاج إليها برنامج الضغط عند إنشاء الملف. على سبيل المثال، يتطلب فك ضغط ملف تم إنشاؤه باستخدام xz -9 حاليًا 65 ميجابايت من الذاكرة. ومع ذلك، من الممكن وجود ملفات .xz تتطلب عدة جيجابايت من الذاكرة لفك ضغطها.

قد يجد مستخدمو الأنظمة القديمة بشكل خاص إمكانية استخدام كمية كبيرة جدًا من الذاكرة أمرًا مزعجًا. لمنع المفاجآت غير السارة، يحتوي xz على مُحدِّد مدمج لاستخدام الذاكرة، وهو معطل افتراضيًا. في حين أن بعض أنظمة التشغيل توفر طرقًا للحد من استخدام الذاكرة للعمليات، لم يُعتبر الاعتماد عليها مرنًا بدرجة كافية (على سبيل المثال، يؤدي استخدام ulimit(1) للحد من الذاكرة الافتراضية إلى تعطيل mmap(2)).

يمكن تمكين مُحدِّد استخدام الذاكرة باستخدام خيار سطر الأوامر --memlimit=limit. غالبًا ما يكون من الأسهل تمكين المُحدِّد افتراضيًا عن طريق تعيين متغير البيئة XZ_DEFAULTS، على سبيل المثال، XZ_DEFAULTS=--memlimit=150MiB. من الممكن تعيين الحدود بشكل منفصل للضغط وفك الضغط باستخدام --memlimit-compress=limit و --memlimit-decompress=limit. نادرًا ما يكون استخدام هذين الخيارين خارج XZ_DEFAULTS مفيدًا لأن تشغيلًا واحدًا من xz لا يمكنه القيام بكل من الضغط وفك الضغط، و --memlimit=limit (أو -M limit) أقصر في الكتابة على سطر الأوامر.

إذا تم تجاوز حد استخدام الذاكرة المحدد أثناء فك الضغط، فسيعرض xz خطأ وسيفشل فك ضغط الملف. إذا تم تجاوز الحد أثناء الضغط، فسيحاول xz تقليل الإعدادات بحيث لا يتم تجاوز الحد بعد ذلك (باستثناء استخدام --format=raw أو --no-adjust). بهذه الطريقة، لن يفشل التشغيل إلا إذا كان الحد صغيرًا جدًا. يتم تقليل الإعدادات على خطوات لا تتطابق مع إعدادات الضغط المسبقة، على سبيل المثال، إذا كان الحد أقل بقليل من المبلغ المطلوب لـ xz -9، فسيتم تقليل الإعدادات بمقدار صغير فقط، وليس كلها إلى xz -8.


الدمج والحشو بملفات ‎.xz

من الممكن دمج ملفات ‎.xz كما هي. ستقوم xz بفك ضغط هذه الملفات كما لو كانت ملف ‎.xz واحدًا.

من الممكن إدراج حشو بين الأجزاء المدمجة أو بعد الجزء الأخير. يجب أن يتكون الحشو من بايتات فارغة ويجب أن يكون حجم الحشو مضاعفًا لعدد أربعة بايتات. يمكن أن يكون هذا مفيدًا، على سبيل المثال، إذا تم تخزين ملف ‎.xz على وسيط يقيس أحجام الملفات بوحدات 512 بايت.

لا يُسمح بالدمج والحشو مع ملفات ‎.lzma أو التدفقات الأولية.

الخيارات

لاحقات الأعداد الصحيحة والقيم الخاصة

في معظم الأماكن التي يُتوقع فيها وسيطة عدد صحيح، يتم دعم لاحقة اختيارية لتحديد الأعداد الصحيحة الكبيرة بسهولة. يجب ألا تكون هناك مسافة بين العدد الصحيح واللاحقة.

KiB: اضرب العدد الصحيح في 1024 (2^10). يُقبل Ki و k و kB و K و KB كمرادفات لـ KiB.

MiB: اضرب العدد الصحيح في 1,048,576 (2^20). يُقبل Mi و m و M و MB كمرادفات لـ MiB.

GiB: اضرب العدد الصحيح في 1,073,741,824 (2^30). يُقبل Gi و g و G و GB كمرادفات لـ GiB.

يمكن استخدام القيمة الخاصة max للإشارة إلى الحد الأقصى لقيمة عدد صحيح مدعومة بواسطة الخيار.

وضع التشغيل

إذا تم إعطاء خيارات وضع تشغيل متعددة، فإن الخيار الأخير هو الذي سيسري.

-z، ‎--compress

ضغط. هذا هو وضع التشغيل الافتراضي عندما لا يتم تحديد خيار وضع تشغيل ولا يتم تضمين وضع تشغيل آخر من اسم الأمر (على سبيل المثال، unxz يعني ‎--decompress).

بعد الضغط بنجاح، تتم إزالة الملف المصدر ما لم تتم الكتابة إلى الإخراج القياسي أو تم تحديد ‎--keep.

-d، ‎--decompress، ‎--uncompress

فك الضغط. بعد فك الضغط بنجاح، تتم إزالة الملف المصدر ما لم تتم الكتابة إلى الإخراج القياسي أو تم تحديد ‎--keep.

-t، ‎--test

اختبار سلامة الملفات المضغوطة. هذا الخيار يعادل ‎--decompress ‎--stdout باستثناء أن يتم تجاهل البيانات التي تم فك ضغطها بدلاً من كتابتها إلى الإخراج القياسي. لا يتم إنشاء أي ملفات أو إزالتها.

-l، ‎--list

طباعة معلومات حول الملفات المضغوطة. لا يتم إنتاج أي إخراج غير مضغوط، ولا يتم إنشاء أي ملفات أو إزالتها. في وضع القائمة، لا يمكن للبرنامج قراءة البيانات المضغوطة من الإدخال القياسي أو من مصادر أخرى غير قابلة للبحث.

تعرض القائمة الافتراضية معلومات أساسية حول الملفات، ملف واحد لكل سطر. للحصول على مزيد من المعلومات التفصيلية، استخدم أيضًا خيار ‎--verbose. للحصول على مزيد من المعلومات، استخدم ‎--verbose مرتين، ولكن لاحظ أن هذا قد يكون بطيئًا، لأن الحصول على جميع المعلومات الإضافية يتطلب العديد من عمليات البحث. يتجاوز عرض الإخراج المطول 80 حرفًا، لذلك قد يكون توجيه الإخراج إلى، على سبيل المثال، less -S مناسبًا إذا لم يكن عرض الجهاز كافيًا.


قد يختلف الناتج الدقيق بين إصدارات xz المختلفة والإعدادات المحلية المختلفة. للحصول على ناتج قابل للقراءة آليًا، يجب استخدام --robot --list.

مُعدِّلات العمليات

-k, --keep

لا تحذف ملفات الإدخال.

ابتداءً من xz 5.2.6، يجعل هذا الخيار xz يقوم بالضغط أو فك الضغط حتى إذا كان الإدخال رابطًا رمزيًا لملف عادي، أو كان له أكثر من رابط ثابت، أو كانت لديه بتات setuid أو setgid أو sticky مضبوطة. لا يتم نسخ بتات setuid أو setgid أو sticky إلى الملف الهدف. في الإصدارات السابقة، تم ذلك فقط باستخدام --force.

-f, --force

يحتوي هذا الخيار على عدة تأثيرات:

إذا كان الملف الهدف موجودًا بالفعل، فاحذفه قبل الضغط أو فك الضغط.

قم بالضغط أو فك الضغط حتى إذا كان الإدخال رابطًا رمزيًا لملف عادي، أو كان له أكثر من رابط ثابت، أو كانت لديه بتات setuid أو setgid أو sticky مضبوطة. لا يتم نسخ بتات setuid أو setgid أو sticky إلى الملف الهدف.

عند استخدامه مع --decompress --stdout وإذا لم يتمكن xz من التعرف على نوع الملف المصدر، انسخ الملف المصدر كما هو إلى الإخراج القياسي. يتيح ذلك استخدام xzcat --force كما هو الحال في [cat]({filename}../../cat)(1) للملفات التي لم يتم ضغطها باستخدام xz. لاحظ أنه في المستقبل، قد يدعم xz تنسيقات ملفات مضغوطة جديدة، مما قد يجعل xz يقوم بفك ضغط المزيد من أنواع الملفات بدلاً من نسخها كما هي إلى الإخراج القياسي. يمكن استخدام --format=format لتقييد xz بفك ضغط تنسيق ملف واحد فقط.

-c, --stdout, --to-stdout

اكتب البيانات المضغوطة أو المفكوكة إلى الإخراج القياسي بدلاً من ملف. هذا يعني ضمنيًا --keep.

--single-stream

فك ضغط أول تيار .xz فقط، وتجاهل بهدوء أي بيانات إدخال إضافية قد تتبع التيار. عادةً ما يتسبب هذا النوع من البيانات الزائدة في عرض xz خطأ.

لا يقوم xz أبدًا بفك ضغط أكثر من تيار واحد من ملفات .lzma أو التدفقات الأولية، ولكن هذا الخيار لا يزال يجعل xz يتجاهل البيانات الزائدة المحتملة بعد ملف .lzma أو التدفق الأولي.

هذا الخيار ليس له أي تأثير إذا لم يكن وضع التشغيل هو --decompress أو --test.

ابتداءً من xz 5.7.1alpha، يعني --single-stream ضمنيًا --keep.

--no-sparse

تعطيل إنشاء ملفات متفرقة. افتراضيًا، إذا كان يتم فك الضغط إلى ملف عادي، يحاول xz إنشاء ملف متفرق إذا كانت البيانات التي تم فك ضغطها تحتوي على تسلسلات طويلة من الأصفار الثنائية. كما أنه يعمل عند الكتابة إلى الإخراج القياسي طالما أن الإخراج القياسي متصل بملف عادي وبعض الشروط الإضافية مستوفاة لجعله آمنًا. قد يؤدي إنشاء ملفات متفرقة إلى توفير مساحة القرص وتسريع فك الضغط عن طريق تقليل كمية الإدخال/الإخراج للقرص.

-S .suf, --suffix=.suf

عند الضغط، استخدم .suf كلاحقة للملف الهدف بدلاً من .xz أو .lzma. إذا لم يتم الكتابة إلى الإخراج القياسي وكان للملف المصدر بالفعل اللاحقة .suf، فسيتم عرض تحذير ويتم تخطي الملف.

عند فك الضغط، تعرف على الملفات ذات اللاحقة .suf بالإضافة إلى الملفات ذات اللاحقات .xz أو .txz أو .lzma أو .tlz أو .lz. إذا كان للملف المصدر اللاحقة .suf، فسيتم إزالة اللاحقة للحصول على اسم الملف الهدف.

عند ضغط أو فك ضغط التدفقات الأولية (--format=raw)، يجب تحديد اللاحقة دائمًا، إلا إذا كان يتم الكتابة إلى الإخراج القياسي، لأنه لا توجد لاحقة افتراضية للتدفقات الأولية.

--files[=file]
اقرأ أسماء الملفات المراد معالجتها من ملف؛ إذا تم حذف `file`، فسيتم قراءة أسماء الملفات من الإدخال القياسي. يجب إنهاء أسماء الملفات بحرف السطر الجديد. يُعتبر الشرطة (-) اسم ملف عادي؛ فهي لا تعني الإدخال القياسي. إذا تم إعطاء أسماء الملفات أيضًا كوسائط سطر أوامر، فسيتم معالجتها قبل أسماء الملفات التي تمت قراءتها من الملف.

--files0[=file]
هذا مشابه تمامًا لـ `--files[=file]` باستثناء أنه يجب إنهاء كل اسم ملف بحرف فارغ.

خيارات التنسيق الأساسي للملف والضغط

-F format، --format=format
حدد تنسيق الملف المراد ضغطه أو فك ضغطه:

auto   هذا هو الوضع الافتراضي. عند الضغط، يكون `auto` مكافئًا لـ `xz`. عند فك الضغط، يتم اكتشاف تنسيق الملف المدخل تلقائيًا. لاحظ أنه لا يمكن اكتشاف التدفقات الأولية (التي تم إنشاؤها باستخدام `--format=raw`) تلقائيًا.

xz     اضغط إلى تنسيق ملف `.xz`، أو اقبل فقط ملفات `.xz` عند فك الضغط.

lzma، بمفرده
اضغط إلى تنسيق ملف `.lzma` القديم، أو اقبل فقط ملفات `.lzma` عند فك الضغط. يتم توفير الاسم البديل `alone` للتوافق مع الإصدارات السابقة من `LZMA Utils`.

lzip   اقبل فقط ملفات `.lz` عند فك الضغط. لا يتم دعم الضغط.

تنسيقات `.lz` الإصدار 0 و 1 مدعومة. تم إنتاج ملفات الإصدار 0 بواسطة `lzip 1.3` والإصدارات الأقدم. هذه الملفات ليست شائعة ولكن يمكن العثور عليها في أرشيفات الملفات حيث تم إصدار عدد قليل من حزم المصدر بهذا التنسيق. قد يكون لدى الأشخاص أيضًا ملفات شخصية قديمة بهذا التنسيق. تمت إزالة دعم فك الضغط لتنسيق الإصدار 0 في `lzip 1.18`. يقوم `lzip 1.4` والإصدارات الأحدث بإنشاء ملفات بتنسيق الإصدار 1.

raw    اضغط أو فك ضغط تدفق أولي (بدون رؤوس). هذا مخصص للمستخدمين المتقدمين فقط. لفك تشفير التدفقات الأولية، يجب عليك استخدام `--format=raw` وتحديد سلسلة المرشحات بشكل صريح، والتي عادةً ما يتم تخزينها في رؤوس الحاوية.

-C check، --check=check
حدد نوع فحص السلامة. يتم حساب الفحص من البيانات غير المضغوطة وتخزينه في ملف `.xz`. هذا الخيار له تأثير فقط عند الضغط إلى تنسيق `.xz`؛ لا يدعم تنسيق `.lzma` فحوصات السلامة. يتم التحقق من سلامة الفحص (إذا كان موجودًا) عند فك ضغط ملف `.xz`.

أنواع الفحص المدعومة:

none   لا تقم بحساب فحص السلامة على الإطلاق. هذه عادةً ما تكون فكرة سيئة. يمكن أن يكون هذا مفيدًا عندما يتم التحقق من سلامة البيانات بوسائل أخرى على أي حال.

crc32  احسب CRC32 باستخدام متعدد الحدود من IEEE-802.3 (إيثرنت).

crc64  احسب CRC64 باستخدام متعدد الحدود من ECMA-182. هذا هو الوضع الافتراضي، لأنه أفضل قليلاً من CRC32 في اكتشاف الملفات التالفة والفرق في السرعة ضئيل.

sha256: احسب قيمة SHA-256. هذه العملية أبطأ قليلاً من CRC32 و CRC64.

يتم دائمًا التحقق من سلامة رؤوس ملفات .xz باستخدام CRC32. لا يمكن تغيير ذلك أو تعطيله.

--ignore-check: لا تتحقق من سلامة البيانات المضغوطة أثناء فك الضغط. ستظل قيم CRC32 في رؤوس ملفات .xz تتحقق بشكل طبيعي.

لا تستخدم هذا الخيار إلا إذا كنت تعرف ما تفعله. الأسباب المحتملة لاستخدام هذا الخيار:

محاولة استعادة البيانات من ملف .xz تالف.

تسريع فك الضغط. هذا مهم بشكل خاص مع SHA-256 أو مع الملفات التي تم ضغطها بشكل كبير. يوصى بعدم استخدام هذا الخيار لهذا الغرض إلا إذا تم التحقق من سلامة الملف خارجيًا بطريقة أخرى.

-0 ... -9: حدد مستوى الضغط المسبق. المستوى الافتراضي هو -6. إذا تم تحديد مستويات مسبقة متعددة، فسيتم تطبيق المستوى الأخير. إذا تم تحديد سلسلة تصفية مخصصة بالفعل، فإن تحديد مستوى الضغط المسبق سيمسح سلسلة التصفية المخصصة.

الفرق بين المستويات المسبقة أكثر أهمية مما هو عليه في [gzip]({filename}../../gzip)(1) و [bzip2]({filename}bzip2.md)(1). تحدد إعدادات الضغط المحددة متطلبات ذاكرة وحدة فك الضغط، لذلك قد يؤدي استخدام مستوى مسبق مرتفع جدًا إلى صعوبة فك ضغط الملف على نظام قديم بذاكرة وصول عشوائي (RAM) محدودة. على وجه التحديد، ليس من الجيد استخدام -9 بشكل أعمى لكل شيء كما هو الحال غالبًا مع [gzip]({filename}../../gzip)(1) و [bzip2]({filename}bzip2.md)(1).

-0 ... -3: هذه مستويات مسبقة سريعة إلى حد ما. في بعض الأحيان يكون -0 أسرع من gzip -9 أثناء الضغط مع تحقيق ضغط أفضل بكثير. غالبًا ما تكون المستويات الأعلى أسرع من [bzip2]({filename}bzip2.md)(1) مع نسبة ضغط مماثلة أو أفضل، على الرغم من أن النتائج تعتمد بشكل كبير على نوع البيانات التي يتم ضغطها.

-4 ... -6: ضغط جيد جدًا مع الحفاظ على معقولية استخدام ذاكرة وحدة فك الضغط حتى بالنسبة للأنظمة القديمة. -6 هو المستوى الافتراضي، وهو خيار جيد بشكل عام لتوزيع الملفات التي يجب أن تكون قابلة لفك الضغط حتى على الأنظمة التي تحتوي على 16 ميجابايت فقط من ذاكرة الوصول العشوائي (RAM). قد يكون من المفيد أيضًا التفكير في -5e أو -6e. انظر --extreme.

-7 ... -9: هذه مماثلة لـ -6 ولكن مع متطلبات أعلى لذاكرة وحدة الضغط ووحدة فك الضغط. هذه مفيدة فقط عند ضغط الملفات الأكبر من 8 ميجابايت و 16 ميجابايت و 32 ميجابايت على التوالي.

على نفس الأجهزة، فإن سرعة فك الضغط هي تقريبًا عدد ثابت من البايتات من البيانات المضغوطة في الثانية. بمعنى آخر، كلما كان الضغط أفضل، عادةً ما يكون فك الضغط أسرع. وهذا يعني أيضًا أن كمية الإخراج غير المضغوط التي يتم إنتاجها في الثانية يمكن أن تختلف بشكل كبير.

الجدول التالي يلخص ميزات المستويات المسبقة:

Preset   DictSize   CompCPU   CompMem   DecMem
    -0     256 KiB       0        3 MiB    1 MiB
    -1       1 MiB       1        9 MiB    2 MiB
    -2       2 MiB       2       17 MiB    3 MiB
    -3       4 MiB       3       32 MiB    5 MiB
    -4       4 MiB       4       48 MiB    5 MiB
    -5       8 MiB       5       94 MiB    9 MiB
    -6       8 MiB       6       94 MiB    9 MiB
    -7      16 MiB       6      186 MiB   17 MiB
    -8      32 MiB       6      370 MiB   33 MiB
    -9      64 MiB       6      674 MiB   65 MiB

أوصاف الأعمدة:

`DictSize` هو حجم قاموس LZMA2. يعتبر استخدام قاموس أكبر من حجم الملف غير المضغوط مضيعة للذاكرة. لهذا السبب، من الجيد تجنب استخدام الإعدادات المسبقة من -7 إلى -9 عندما لا يكون هناك حاجة حقيقية إليها. عند الإعدادات -6 وما دونها، عادةً ما تكون كمية الذاكرة المهدرة منخفضة بما يكفي لعدم إحداث فرق.

`CompCPU` هو تمثيل مبسط لإعدادات LZMA2 التي تؤثر على سرعة الضغط. يؤثر حجم القاموس أيضًا على السرعة، لذلك في حين أن `CompCPU` هو نفسه للإعدادات من -6 إلى -9، فإن الإعدادات الأعلى تميل إلى أن تكون أبطأ قليلاً. للحصول على سرعة أبطأ وبالتالي ربما ضغط أفضل، راجع `--extreme`.

`CompMem` يحتوي على متطلبات ذاكرة الضغط في الوضع أحادي الخيوط. قد يختلف قليلاً بين إصدارات xz.

`DecMem` يحتوي على متطلبات ذاكرة فك الضغط. بمعنى آخر، تحدد إعدادات الضغط متطلبات ذاكرة فك الضغط. يكون استخدام ذاكرة فك الضغط الفعلي أكبر قليلاً من حجم قاموس LZMA2، ولكن تم تقريب القيم الموجودة في الجدول إلى أقرب ميجابايت كامل.

تكون متطلبات الذاكرة لوضع تعدد الخيوط أعلى بكثير من متطلبات وضع أحادي الخيوط. مع القيمة الافتراضية لـ --block-size، يحتاج كل خيط إلى 3 * 3 * DictSize بالإضافة إلى CompMem أو DecMem. على سبيل المثال، أربعة خيوط مع الإعداد المسبق -6 تحتاج إلى 660-670 ميجابايت من الذاكرة.

`-e، --extreme`

استخدم نسخة أبطأ من الإعداد المسبق المحدد (-0 ... -9) على أمل الحصول على نسبة ضغط أفضل قليلاً، ولكن مع سوء الحظ، يمكن أن يؤدي ذلك أيضًا إلى جعلها أسوأ. لا يتأثر استخدام ذاكرة فك الضغط، ولكن يزداد استخدام ذاكرة الضغط قليلاً عند مستويات الإعداد المسبق من -0 إلى -3.

نظرًا لوجود إعدادين مسبقين بأحجام قاموس تبلغ 4 ميجابايت و 8 ميجابايت، فإن الإعدادين المسبقين -3e و -5e يستخدمان إعدادات أسرع قليلاً (أقل CompCPU) من -4e و -6e على التوالي. بهذه الطريقة لا يكون أي إعدادين مسبقين متطابقين.

الإعداد المسبق DictSize CompCPU CompMem DecMem -0e 256 كيلو بايت 8 4 ميجابايت 1 ميجابايت -1e 1 ميجابايت 8 13 ميجابايت 2 ميجابايت -2e 2 ميجابايت 8 25 ميجابايت 3 ميجابايت -3e 4 ميجابايت 7 48 ميجابايت 5 ميجابايت -4e 4 ميجابايت 8 48 ميجابايت 5 ميجابايت -5e 8 ميجابايت 7 94 ميجابايت 9 ميجابايت -6e 8 ميجابايت 8 94 ميجابايت 9 ميجابايت -7e 16 ميجابايت 8 186 ميجابايت 17 ميجابايت -8e 32 ميجابايت 8 370 ميجابايت 33 ميجابايت -9e 64 ميجابايت 8 674 ميجابايت 65 ميجابايت

على سبيل المثال، هناك ما مجموعه أربعة إعدادات مسبقة تستخدم قاموسًا بحجم 8 ميجابايت، وهو ترتيبها من الأسرع إلى الأبطأ هو -5، و -6، و -5e، و -6e.

`--fast`
`--best` هذه أسماء مستعارة مضللة بعض الشيء للإعدادين -0 و -9 على التوالي. يتم توفيرها فقط للتوافق مع الإصدارات السابقة من LZMA Utils. تجنب استخدام هذه الخيارات.

`--block-size=size`

عند الضغط إلى تنسيق .xz، قسّم بيانات الإدخال إلى كتل بحجم size بايت. يتم ضغط الكتل بشكل مستقل عن بعضها البعض، مما يساعد في تعدد الخيوط ويجعل فك الضغط العشوائي المحدود ممكنًا. يستخدم هذا الخيار عادةً لتجاوز حجم الكتلة الافتراضي في وضع تعدد الخيوط، ولكن يمكن استخدام هذا الخيار في وضع أحادي الخيوط أيضًا.

في الوضع متعدد الخيوط، سيتم تخصيص حجم ثلاثة أضعاف البايتات في كل خيط لتخزين مؤقت للبيانات المدخلة والمخرجة. الحجم الافتراضي هو ثلاثة أضعاف حجم قاموس LZMA2 أو 1 ميجابايت، أيهما أكبر. عادةً ما تكون القيمة الجيدة هي 2-4 أضعاف حجم قاموس LZMA2 أو 1 ميجابايت على الأقل. استخدام حجم أقل من حجم قاموس LZMA2 هو إهدار لذاكرة الوصول العشوائي (RAM) لأنه في هذه الحالة لن يتم استخدام المخزن المؤقت الخاص بقاموس LZMA2 بالكامل. في الوضع متعدد الخيوط، يتم تخزين أحجام الكتل في رؤوس الكتل. هذه المعلومات المتعلقة بالحجم مطلوبة لفك الضغط متعدد الخيوط.

في الوضع أحادي الخيط، لا يتم إجراء تقسيم للكتل افتراضيًا. لا يؤثر تحديد هذا الخيار على استخدام الذاكرة. لا يتم تخزين معلومات الحجم في رؤوس الكتل، وبالتالي فإن الملفات التي تم إنشاؤها في الوضع أحادي الخيط لن تكون متطابقة مع الملفات التي تم إنشاؤها في الوضع متعدد الخيوط. يعني أيضًا عدم وجود معلومات الحجم أن برنامج xz لن يتمكن من فك ضغط الملفات في الوضع متعدد الخيوط.

--block-list=items

عند الضغط إلى تنسيق .xz، ابدأ كتلة جديدة مع سلسلة مرشحات مخصصة اختيارية بعد الفواصل الزمنية المحددة للبيانات غير المضغوطة.

العناصر عبارة عن قائمة مفصولة بفواصل. يتكون كل عنصر من رقم سلسلة مرشحات اختياري بين 0 و 9 متبوعًا بنقطتين (:) وحجم مطلوب للبيانات غير المضغوطة. حذف عنصر (فاصلتان أو أكثر متتاليتان) هو اختصار لاستخدام حجم وفلاتر العنصر السابق.

إذا كان حجم الملف المدخل أكبر من مجموع الأحجام في العناصر، فسيتم تكرار العنصر الأخير حتى نهاية الملف. يمكن استخدام القيمة الخاصة 0 كحجم أخير للإشارة إلى أنه يجب ترميز باقي الملف ككتلة واحدة.

يمكن تحديد سلسلة مرشحات بديلة لكل كتلة بالاشتراك مع خيارات --filters1=filters ... --filters9=filters. تحدد هذه الخيارات سلاسل مرشحات بمعرف بين 1-9. يمكن استخدام سلسلة المرشحات 0 للإشارة إلى سلسلة المرشحات الافتراضية، وهي نفسها عدم تحديد سلسلة مرشحات. يمكن استخدام معرف سلسلة المرشحات قبل حجم البيانات غير المضغوطة، متبوعًا بنقطتين (:). على سبيل المثال، إذا حددنا --block-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB، فسيتم إنشاء الكتل باستخدام:

سلسلة المرشحات المحددة بواسطة --filters1 وحجم إدخال 2 ميجابايت

سلسلة المرشحات المحددة بواسطة --filters3 وحجم إدخال 2 ميجابايت

سلسلة المرشحات المحددة بواسطة --filters2 وحجم إدخال 4 ميجابايت

سلسلة المرشحات المحددة بواسطة --filters2 وحجم إدخال 4 ميجابايت

سلسلة المرشحات الافتراضية وحجم إدخال 2 ميجابايت

سلسلة المرشحات الافتراضية وحجم إدخال 4 ميجابايت لكل كتلة حتى نهاية الإدخال.

إذا حددنا حجمًا يتجاوز حجم الكتلة الخاص بالمشفر (إما القيمة الافتراضية في الوضع متعدد الخيوط أو القيمة المحددة باستخدام --block-size=size)، فسيقوم المشفر بإنشاء كتل إضافية مع الحفاظ على الحدود المحددة في العناصر. على سبيل المثال، إذا حددنا --block-size=10MiB --block-list=5MiB,10MiB,8MiB,12MiB,24MiB وكان حجم الملف المدخل 80 ميجابايت، فسيتم الحصول على 11 كتلة: 5، 10، 8، 10، 2، 10، 10، 4، 10، 10، و 1 ميجابايت.


في الوضع متعدد الخيوط، يتم تخزين أحجام الكتل في رؤوس الكتل. لا يتم ذلك في الوضع أحادي الخيوط، لذلك لن يكون الإخراج المشفر مطابقًا للإخراج في الوضع متعدد الخيوط.

--flush-timeout=timeout

عند الضغط، إذا انقضى أكثر من "timeout" ميلي ثانية (عدد صحيح موجب) منذ آخر عملية تفريغ، وكان قراءة المزيد من المدخلات ستؤدي إلى حظر العملية، فسيتم تفريغ جميع البيانات المدخلة المعلقة من المُشفِّر وجعلها متاحة في تدفق الإخراج. يمكن أن يكون هذا مفيدًا إذا تم استخدام xz لضغط البيانات التي يتم بثها عبر شبكة. القيم الصغيرة لـ "timeout" تجعل البيانات متاحة في الطرف المتلقي بتأخير صغير، ولكن القيم الكبيرة لـ "timeout" تعطي نسبة ضغط أفضل.

تتم تعطيل هذه الميزة افتراضيًا. إذا تم تحديد هذا الخيار أكثر من مرة، فسيتم تطبيق آخرها. يمكن استخدام قيمة "timeout" الخاصة وهي 0 لتعطيل هذه الميزة بشكل صريح.

هذه الميزة غير متوفرة على الأنظمة غير المتوافقة مع معيار POSIX.

هذه الميزة لا تزال تجريبية. حاليًا، لا يمكن استخدام xz لفك ضغط الدفق في الوقت الفعلي بسبب طريقة تعامل xz مع التخزين المؤقت.

--no-sync

لا تقم بمزامنة الملف الهدف ودليله مع جهاز التخزين قبل إزالة الملف المصدر. يمكن أن يؤدي ذلك إلى تحسين الأداء إذا تم ضغط أو فك ضغط العديد من الملفات الصغيرة. ومع ذلك، إذا تعطل النظام بعد ذلك بوقت قصير، فمن المحتمل ألا يكون الملف الهدف قد تمت كتابته على جهاز التخزين، ولكن تم تنفيذ عملية الحذف. في تلك الحالة، لن يكون أي من الملف المصدر الأصلي أو الملف الهدف متاحًا.

يكون لهذا الخيار تأثير فقط عندما يكون xz على وشك إزالة الملف المصدر. في الحالات الأخرى، لا يتم إجراء المزامنة أبدًا.

تمت إضافة المزامنة وخيار --no-sync في xz 5.7.1alpha.

--memlimit-compress=limit

تعيين حد لاستخدام الذاكرة للضغط. إذا تم تحديد هذا الخيار عدة مرات، فسيتم تطبيق آخرها.

إذا تجاوزت إعدادات الضغط الحد، فسوف يحاول xz تعديل الإعدادات لأسفل بحيث لا يتم تجاوز الحد بعد ذلك، وسيتم عرض إشعار بأنه تم إجراء تعديل تلقائي. يتم إجراء التعديلات بالترتيب التالي: تقليل عدد الخيوط، والتبديل إلى الوضع أحادي الخيوط إذا تجاوز حتى خيط واحد في الوضع متعدد الخيوط الحد، وأخيراً تقليل حجم قاموس LZMA2.

عند الضغط باستخدام --format=raw أو إذا تم تحديد --no-adjust، يمكن فقط تقليل عدد الخيوط لأن ذلك يمكن القيام به دون التأثير على الإخراج المضغوط.

إذا لم يكن من الممكن تلبية الحد حتى مع التعديلات الموصوفة أعلاه، فسيتم عرض خطأ وسيخرج xz برمز خروج 1.


يمكن تحديد الحد بأكثر من طريقة:

يمكن أن يكون الحد قيمة مطلقة بالبايت. يمكن أن يكون استخدام لاحقة عددية مثل MiB مفيدًا. مثال: --memlimit-compress=80MiB

يمكن تحديد الحد كنسبة مئوية من إجمالي الذاكرة الفعلية (ذاكرة الوصول العشوائي). يمكن أن يكون هذا مفيدًا، خاصة عند تعيين متغير البيئة XZ_DEFAULTS في برنامج نصي لتهيئة shell تتم مشاركته بين أجهزة كمبيوتر مختلفة. بهذه الطريقة، سيكون الحد أكبر تلقائيًا على الأنظمة التي تحتوي على ذاكرة أكبر. مثال: --memlimit-compress=70%

يمكن إعادة تعيين الحد إلى قيمته الافتراضية عن طريق تعيينه إلى 0. هذا يعادل حاليًا تعيين الحد إلى الحد الأقصى (بدون حد لاستخدام الذاكرة).

بالنسبة لـ 32 بت xz، هناك حالة خاصة: إذا كان الحد سيتجاوز 4020 ميجابايت، يتم تعيين الحد إلى 4020 ميجابايت. بالنسبة لـ MIPS32، يتم استخدام 2000 ميجابايت بدلاً من ذلك. (القيمتان 0 و max لا تتأثران بذلك. لا توجد ميزة مماثلة لفك الضغط. يمكن أن يكون هذا مفيدًا عندما يكون لدى برنامج 32 بت إمكانية الوصول إلى مساحة عنوان 4 جيجابايت (2 جيجابايت على MIPS32) مع عدم التسبب في أي ضرر في المواقف الأخرى.

انظر أيضًا قسم استخدام الذاكرة.

--memlimit-decompress=limit
يُعيّن حدًا لاستخدام الذاكرة لعملية فك الضغط. يؤثر هذا أيضًا على وضع --list. إذا كانت العملية غير ممكنة دون تجاوز الحد، فسيعرض xz خطأ وسيفشل فك ضغط الملف. انظر --memlimit-compress=limit لمعرفة الطرق الممكنة لتحديد الحد.

--memlimit-mt-decompress=limit
يُعيّن حدًا لاستخدام الذاكرة لعملية فك الضغط متعددة الخيوط. يمكن أن يؤثر هذا فقط على عدد الخيوط؛ فلن يتسبب ذلك أبدًا في رفض xz لفك ضغط ملف. إذا كان الحد منخفضًا جدًا بحيث لا يسمح بأي تعدد في الخيوط، فسيتم تجاهل الحد وسيستمر xz في الوضع أحادي الخيوط. لاحظ أنه إذا تم استخدام --memlimit-decompress أيضًا، فسيتم تطبيقه دائمًا على كل من الأوضاع أحادية الخيوط ومتعددة الخيوط، لذلك سيكون الحد الفعلي للتعدد في الخيوط أقل دائمًا من الحد المحدد باستخدام --memlimit-decompress.

على عكس خيارات حد استخدام الذاكرة الأخرى، يحتوي --memlimit-mt-decompress=limit على حد افتراضي خاص بالنظام. يمكن استخدام xz --info-memory لمعرفة القيمة الحالية.

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

انظر --memlimit-compress=limit لمعرفة الطرق الممكنة لتحديد الحد. يؤدي تعيين الحد إلى 0 إلى إعادة تعيين الحد إلى القيمة الافتراضية الخاصة بالنظام.

-M limit, --memlimit=limit, --memory=limit
هذا يعادل تحديد --memlimit-compress=limit --memlimit-decompress=limit --memlimit-mt-decompress=limit.

--no-adjust
اعرض خطأ واخرج إذا لم يتمكن من تلبية حد استخدام الذاكرة دون تعديل الإعدادات التي تؤثر على الإخراج المضغوط. أي أن هذا يمنع xz من التبديل من وضع الترميز متعدد الخيوط إلى وضع أحادي الخيوط وتقليل حجم قاموس LZMA2. حتى عند استخدام هذا الخيار، قد يتم تقليل عدد الخيوط لتلبية حد استخدام الذاكرة، لأن ذلك لن يؤثر على الإخراج المضغوط.

يتم تعطيل التعديل التلقائي دائمًا عند إنشاء تدفقات خام (--format=raw).

-T threads, --threads=threads
حدد عدد الخيوط العاملة المراد استخدامها. يؤدي تعيين قيمة خاصة للخيوط، وهي 0، إلى جعل xz تستخدم أكبر عدد ممكن من الخيوط التي يدعمها المعالج (المعالجات) على النظام. قد يكون العدد الفعلي للخيوط أقل من قيمة "threads" إذا لم يكن ملف الإدخال كبيرًا بما يكفي لتقسيم العمل بين الخيوط بالإعدادات المعطاة، أو إذا كان استخدام المزيد من الخيوط سيتجاوز حد استخدام الذاكرة.

ينتج كل من الضغط أحادي الخيوط ومتعدد الخيوط إخراجًا مختلفًا. ينتج الضغط أحادي الخيوط أصغر حجم ملف، ولكن يمكن فقط فك ضغط الإخراج من الضغط متعدد الخيوط باستخدام خيوط متعددة. يؤدي تعيين قيمة "threads" إلى 1 إلى استخدام وضع الضغط أحادي الخيوط. يؤدي تعيين قيمة "threads" إلى أي قيمة أخرى، بما في ذلك 0، إلى استخدام الضغط متعدد الخيوط، حتى إذا كان النظام يدعم خيطًا واحدًا فقط. (في الإصدار 2.x من xz، تم استخدام الوضع أحادي الخيوط في هذه الحالة.)

لاستخدام الوضع متعدد الخيوط مع خيط واحد فقط، قم بتعيين قيمة "threads" إلى +1. لا يكون للبادئة "+" أي تأثير مع القيم الأخرى غير 1. لا يزال بإمكان حد استخدام الذاكرة أن يجعل xz ينتقل إلى الوضع أحادي الخيوط ما لم يتم استخدام الخيار "--no-adjust". تمت إضافة دعم البادئة "+" في الإصدار 5.4.0 من xz.

إذا تم طلب عدد تلقائي من الخيوط ولم يتم تحديد حد لاستخدام الذاكرة، فسيتم استخدام حد افتراضي محدد للنظام لتقليل عدد الخيوط. إنه حد افتراضي بمعنى أنه يتم تجاهله إذا أصبح عدد الخيوط واحدًا، وبالتالي لن يمنع الحد الافتراضي أبدًا xz من الضغط أو فك الضغط. لن يؤدي هذا الحد الافتراضي إلى انتقال xz من الوضع متعدد الخيوط إلى الوضع أحادي الخيوط. يمكن عرض الحدود النشطة باستخدام الأمر "xz --info-memory".

الطريقة الوحيدة المتاحة حاليًا لتقسيم العمل بين الخيوط هي تقسيم الإدخال إلى كتل وضغطها بشكل مستقل عن بعضها البعض. يعتمد حجم الكتلة الافتراضي على مستوى الضغط ويمكن تغييره باستخدام الخيار "--block-size=size".

يعمل فك الضغط متعدد الخيوط فقط على الملفات التي تحتوي على كتل متعددة بمعلومات الحجم في ترويسات الكتل. تستوفي جميع الملفات الكبيرة بما يكفي التي تم ضغطها في الوضع متعدد الخيوط هذا الشرط، ولكن الملفات التي تم ضغطها في الوضع أحادي الخيوط لا تستوفي هذا الشرط، حتى إذا تم استخدام الخيار "--block-size=size".

القيمة الافتراضية لـ "threads" هي 0. في الإصدار 5.4.x والإصدارات الأقدم من xz، القيمة الافتراضية هي 1.

سلاسل مرشحات الضغط المخصصة

تسمح سلسلة مرشحات مخصصة بتحديد إعدادات الضغط بالتفصيل بدلاً من الاعتماد على الإعدادات المرتبطة بالإعدادات المسبقة. عند تحديد سلسلة مرشحات مخصصة، يتم تجاهل خيارات الإعداد المسبق (-0 ... -9 و --extreme) التي تم تحديدها سابقًا في سطر الأوامر. إذا تم تحديد خيار إعداد مسبق بعد خيارات سلسلة مرشحات مخصصة، فسيدخل الإعداد المسبق الجديد حيز التنفيذ وسيتم تجاهل خيارات سلسلة مرشحات مخصصة تم تحديدها سابقًا.

تُشبه سلسلة المرشحات (filter chain) استخدام الأنابيب في سطر الأوامر. عند الضغط، يتم تمرير المدخلات غير المضغوطة إلى المرشح الأول، ويتم تمرير مخرجاته إلى المرشح التالي (إذا وجد). يتم كتابة مخرجات المرشح الأخير في الملف المضغوط. الحد الأقصى لعدد المرشحات في السلسلة هو أربعة، ولكن عادةً ما تحتوي سلسلة المرشحات على مرشح واحد أو مرشحين فقط.

توجد قيود على موضع بعض المرشحات في سلسلة المرشحات: يمكن لبعض المرشحات العمل فقط كمرشح أخير في السلسلة، ويمكن لبعضها العمل فقط كمرشح غير أخير، ويمكن لبعضها العمل في أي موضع في السلسلة. اعتمادًا على المرشح، قد يكون هذا القيد متأصلاً في تصميم المرشح أو موجودًا لمنع مشكلات أمنية.

يمكن تحديد سلسلة مرشحات مخصصة بطريقتين مختلفتين. تسمح الخيارات `--filters=filters` و `--filters1=filters ... --filters9=filters` بتحديد سلسلة المرشحات بأكملها في خيار واحد باستخدام صيغة سلسلة المرشحات الخاصة بـ liblzma. بدلاً من ذلك، يمكن تحديد سلسلة المرشحات باستخدام خيار أو أكثر من الخيارات الفردية للمرشحات بالترتيب المطلوب في سلسلة المرشحات. أي أن ترتيب الخيارات الفردية للمرشحات مهم! عند فك ترميز التدفقات الأولية (`--format=raw`)، يجب تحديد سلسلة المرشحات بنفس الترتيب الذي تم تحديده به عند الضغط. سيتم تجاهل أي خيارات مرشح أو إعدادات مسبقة فردية تم تحديدها قبل خيار السلسلة الكاملة (`--filters=filters`). ستؤدي الخيارات الفردية للمرشحات التي تم تحديدها بعد خيار السلسلة الكاملة إلى إعادة تعيين سلسلة المرشحات.

يأخذ كل من الخيار الكامل وخيارات المرشحات الفردية خيارات خاصة بالمرشح كقائمة مفصولة بفواصل. يتم تجاهل الفواصل الزائدة في الخيارات. يحتوي كل خيار على قيمة افتراضية، لذا حدد القيم التي تريد تغييرها فقط.

لمعرفة سلسلة المرشحات والخيارات بأكملها، استخدم `xz -vv` (أي استخدم `--verbose` مرتين). هذا يعمل أيضًا لعرض خيارات سلسلة المرشحات المستخدمة بواسطة الإعدادات المسبقة.

`--filters=filters`
يحدد سلسلة المرشحات الكاملة أو الإعداد المسبق في خيار واحد. يمكن فصل كل مرشح بالمسافات أو بشرطتين (`--`). قد تحتاج `filters` إلى اقتباس على سطر أوامر shell بحيث يتم تحليلها كخيار واحد. لتحديد الخيارات، استخدم `:` أو `=`. يمكن أن يسبق الإعداد المسبق شرطة (`-`) متبوعة بصفر أو أكثر من العلامات. العلامة الوحيدة المدعومة هي `e` لتطبيق نفس الخيارات الموجودة في `--extreme`.

`--filters1=filters ... --filters9=filters`
حدد ما يصل إلى تسع سلاسل مرشحات إضافية يمكن استخدامها مع `--block-list`.

على سبيل المثال، عند ضغط أرشيف يحتوي على ملفات قابلة للتنفيذ متبوعة بملفات نصية، يمكن أن تستخدم الجزء القابل للتنفيذ سلسلة مرشحات مع مرشح BCJ، بينما يستخدم الجزء النصي مرشح LZMA2 فقط.

--filters-help
عرض رسالة تعليمات تصف كيفية تحديد الإعدادات المسبقة وسلاسل المرشحات المخصصة في خيارات --filters و --filters1=filters ... --filters9=filters، ثم الخروج بنجاح.

--lzma1[=options]
--lzma2[=options]
أضف مرشح LZMA1 أو LZMA2 إلى سلسلة المرشحات. لا يمكن استخدام هذه المرشحات إلا كآخر مرشح في السلسلة.

LZMA1 هو مرشح قديم، وهو مدعوم في الغالب بسبب تنسيق الملف القديم .lzma، الذي يدعم LZMA1 فقط. LZMA2 هو إصدار محدث من LZMA1 لإصلاح بعض المشكلات العملية في LZMA1. يستخدم تنسيق .xz LZMA2 ولا يدعم LZMA1 على الإطلاق. سرعة الضغط ونسب LZMA1 و LZMA2 متماثلة تقريبًا.

يشترك LZMA1 و LZMA2 في مجموعة الخيارات نفسها:

preset=preset
إعادة تعيين جميع خيارات LZMA1 أو LZMA2 إلى الإعداد المسبق. يتكون الإعداد المسبق من عدد صحيح، والذي يمكن أن يتبعه معدِّل إعداد مسبق بحرف واحد. يمكن أن يكون العدد الصحيح من 0 إلى 9، مطابقًا لخـيارات سطر الأوامر -0 ... -9. المعدِّل الوحيد المدعوم هو "e"، والذي يطابق --extreme. إذا لم يتم تحديد إعداد مسبق، يتم أخذ القيم الافتراضية لخيارات LZMA1 أو LZMA2 من الإعداد المسبق 6.

dict=size
يشير حجم القاموس (مخزن السجل) إلى عدد البايتات من البيانات غير المضغوطة التي تمت معالجتها مؤخرًا والتي يتم الاحتفاظ بها في الذاكرة. تحاول الخوارزمية العثور على تسلسلات بايت متكررة (مطابقات) في البيانات غير المضغوطة، واستبدالها بإشارات إلى البيانات الموجودة حاليًا في القاموس. كلما كان حجم القاموس أكبر، زادت فرصة العثور على تطابق. وبالتالي، فإن زيادة حجم القاموس غالبًا ما تحسن نسبة الضغط، ولكن القاموس الأكبر من الملف غير المضغوط هو إهدار للذاكرة.

عادةً ما يكون حجم القاموس من 64 كيلو بايت إلى 64 ميغا بايت. الحد الأدنى هو 4 كيلو بايت. الحد الأقصى للضغط هو حاليًا 1.5 جيجابايت (1536 ميجابايت). يدعم برنامج فك الضغط بالفعل القواميس التي تقل بمقدار بايت واحد عن 4 جيجابايت، وهو الحد الأقصى لتنسيقات تدفق LZMA1 و LZMA2.

يحدد حجم القاموس ومحدد المطابقات (mf) معًا استخدام الذاكرة لمشفر LZMA1 أو LZMA2. مطلوب نفس حجم القاموس (أو أكبر) لفك الضغط كما هو الحال عند الضغط، وبالتالي يتم تحديد استخدام الذاكرة لبرنامج فك الضغط عن طريق حجم القاموس المستخدم عند الضغط. تخزن رؤوس .xz حجم القاموس إما كـ 2^n أو 2^n + 2^(n-1)، لذلك هذه الأحجام مفضلة للضغط. سيتم تقريب الأحجام الأخرى عند تخزينها في رؤوس .xz.

lc=lc حدد عدد بتات سياق الأحرف. الحد الأدنى هو 0 والحد الأقصى هو 4؛ القيمة الافتراضية هي 3. بالإضافة إلى ذلك، يجب ألا يتجاوز مجموع lc و lp 4.

يتم ترميز جميع البايتات التي لا يمكن ترميزها كمطابقات كأحرف. أي أن الأحرف هي ببساطة بايتات 8 بت يتم ترميزها واحدًا تلو الآخر.

يفترض ترميز الأحرف أن أعلى lc بت من البايت غير المضغوط السابق يرتبط بالبايت التالي. على سبيل المثال، في النص الإنجليزي النموذجي، غالبًا ما يتبع حرف كبير حرف صغير، وعادة ما يتبع الحرف الصغير حرف صغير آخر. في مجموعة أحرف US-ASCII، تكون أعلى ثلاث بتات هي 010 للأحرف الكبيرة و 011 للأحرف الصغيرة. عندما تكون lc على الأقل 3، يمكن لترميز الأحرف الاستفادة من هذه الخاصية في البيانات غير المضغوطة.

القيمة الافتراضية (3) عادةً ما تكون جيدة. إذا كنت تريد أقصى قدر من الضغط، اختبر lc=4. في بعض الأحيان يساعد هذا قليلاً، وفي أحيان أخرى يجعل الضغط أسوأ. إذا جعل الأمر أسوأ، اختبر lc=2 أيضًا.

lp=lp حدد عدد بتات موضع الأحرف. الحد الأدنى هو 0 والحد الأقصى هو 4، والقيمة الافتراضية هي 0.

يؤثر Lp على نوع المحاذاة المفترض في البيانات غير المضغوطة عند ترميز الأحرف. انظر pb أدناه للحصول على مزيد من المعلومات حول المحاذاة.

pb=pb حدد عدد بتات الموضع. الحد الأدنى هو 0 والحد الأقصى هو 4؛ والقيمة الافتراضية هي 2.

يؤثر Pb على نوع المحاذاة المفترض في البيانات غير المضغوطة بشكل عام. تعني القيمة الافتراضية محاذاة بأربعة بايت (2^pb=2^2=4)، وهو خيار جيد غالبًا عندما لا يكون هناك تخمين أفضل.

عندما تكون المحاذاة معروفة، قد يؤدي تعيين pb وفقًا لذلك إلى تقليل حجم الملف قليلاً. على سبيل المثال، بالنسبة لملفات النصوص ذات المحاذاة ذات البايت الواحد (US-ASCII، ISO-8859-*، UTF-8)، يمكن أن يؤدي تعيين pb=0 إلى تحسين الضغط قليلاً. بالنسبة لنصوص UTF-16، فإن pb=1 هو خيار جيد. إذا كانت المحاذاة عددًا فرديًا مثل 3 بايت، فقد يكون pb=0 هو الخيار الأفضل.

على الرغم من أنه يمكن تعديل المحاذاة المفترضة باستخدام pb و lp، إلا أن LZMA1 و LZMA2 يفضلان محاذاة 16 بايت إلى حد ما. قد يكون من المفيد أخذ ذلك في الاعتبار عند تصميم تنسيقات الملفات التي من المحتمل أن يتم ضغطها باستخدام LZMA1 أو LZMA2.

mf=mf يؤثر محدد التطابقات بشكل كبير على سرعة المشفر، واستخدام الذاكرة، ونسبة الضغط. عادةً ما تكون أدوات البحث عن التطابقات ذات السلسلة الهاش أسرع من أدوات البحث عن التطابقات ذات الشجرة الثنائية.

تعتمد القيمة الافتراضية على الإعداد المسبق: 0 يستخدم hc3، و 1-3 يستخدمان hc4، والباقي يستخدم bt4.

توجد أدوات البحث عن التطابقات التالية. صيغ استخدام الذاكرة أدناه هي تقديرات تقريبية، وهي الأقرب إلى الواقع عندما تكون dict قوة للعدد 2.

hc3 سلسلة الهاش مع تجزئة 2 و 3 بايت

الحد الأدنى للقيمة لـ "nice": 3 استخدام الذاكرة: dict * 7.5 (إذا كان dict <= 16 ميجابايت)؛ dict * 5.5 + 64 ميجابايت (إذا كان dict > 16 ميجابايت)

hc4 سلسلة الهاش مع تجزئة 2 و 3 و 4 بايت

الحد الأدنى للقيمة لـ "nice": 4 استخدام الذاكرة: dict * 7.5 (إذا كان dict <= 32 ميجابايت)؛ dict * 6.5 (إذا كان dict > 32 ميجابايت)

bt2 شجرة ثنائية مع تجزئة 2 بايت

الحد الأدنى للقيمة لـ "nice": 2 استخدام الذاكرة: dict * 9.5

bt3 شجرة ثنائية مع تجزئة 2 و 3 بايت

الحد الأدنى للقيمة لـ "nice": 3 استخدام الذاكرة: dict * 11.5 (إذا كان dict <= 16 ميجابايت)؛ dict * 9.5 + 64 ميجابايت (إذا كان dict > 16 ميجابايت)

bt4 شجرة ثنائية مع تجزئة 2 و 3 و 4 بايت

الحد الأدنى للقيمة لـ "nice": 4 استخدام الذاكرة: dict * 11.5 (إذا كان dict <= 32 ميجابايت)؛ dict * 10.5 (إذا كان dict > 32 ميجابايت)


mode=mode

يحدد وضع الضغط الطريقة التي يتم بها تحليل البيانات التي ينتجها محدد التطابقات. الأوضاع المدعومة هي سريع وعادي. الوضع الافتراضي هو سريع للإعدادات المسبقة من 0 إلى 3 وعادي للإعدادات المسبقة من 4 إلى 9.

عادةً ما يتم استخدام الوضع السريع مع محددات التطابقات ذات السلسلة الهاش، والوضع العادي مع محددات التطابقات ذات الشجرة الثنائية. وهذا ما تفعله الإعدادات المسبقة أيضًا.

nice=nice

حدد ما يعتبر طولًا "جيدًا" للتطابق. بمجرد العثور على تطابق لا يقل عن عدد "nice" من البايتات، يتوقف الخوارزمية عن البحث عن تطابقات أفضل.

يمكن أن يكون "nice" بين 2 و 273 بايت. القيم الأعلى تميل إلى إعطاء نسبة ضغط أفضل على حساب السرعة. يعتمد الافتراضي على الإعداد المسبق.

depth=depth

حدد أقصى عمق للبحث في محدد التطابقات. القيمة الافتراضية هي القيمة الخاصة 0، مما يجعل برنامج الضغط يحدد عمقًا معقولًا من mf و nice.

العمق المعقول لسلاسل الهاش هو 4-100 و 16-1000 للأشجار الثنائية. يمكن أن يجعل استخدام قيم عالية جدًا للعمق برنامج التشفير بطيئًا للغاية مع بعض الملفات. تجنب تعيين العمق بأكثر من 1000 إلا إذا كنت مستعدًا لإيقاف الضغط في حالة استغرقه وقتًا طويلاً.

عند فك ترميز التدفقات الأولية (--format=raw)، يحتاج LZMA2 فقط إلى حجم القاموس. يحتاج LZMA1 أيضًا إلى lc و lp و pb.

--x86[=options]
--arm[=options]
--armthumb[=options]
--arm64[=options]
--powerpc[=options]
--ia64[=options]
--sparc[=options]
--riscv[=options]

أضف مرشح فرع/استدعاء/قفز (BCJ) إلى سلسلة المرشحات. يمكن استخدام هذه المرشحات فقط كمرشح غير أخير في سلسلة المرشحات.

يقوم مرشح BCJ بتحويل العناوين النسبية في التعليمات البرمجية إلى نظيراتها المطلقة. هذا لا يغير حجم البيانات ولكنه يزيد من التكرار، مما قد يساعد LZMA2 في إنتاج ملف .xz أصغر بنسبة 0-15٪. مرشحات BCJ قابلة للعكس دائمًا، لذلك فإن استخدام مرشح BCJ لنوع خاطئ من البيانات لا يتسبب في أي فقدان للبيانات، على الرغم من أنه قد يجعل نسبة الضغط أسوأ قليلاً. مرشحات BCJ سريعة جدًا وتستخدم كمية ضئيلة من الذاكرة.

تحتوي مرشحات BCJ هذه على مشاكل معروفة تتعلق بنسبة الضغط:

تحتوي بعض أنواع الملفات التي تحتوي على تعليمات برمجية قابلة للتنفيذ (على سبيل المثال، ملفات الكائنات والمكتبات الثابتة ووحدات نواة Linux) على العناوين في التعليمات مملوءة بقيم حشو. ستستمر هذه المرشحات BCJ في إجراء تحويل العناوين، مما سيؤدي إلى جعل الضغط أسوأ مع هذه الملفات.

إذا تم تطبيق مرشح BCJ على أرشيف، فمن المحتمل أن يجعل نسبة الضغط أسوأ من عدم استخدام مرشح BCJ. على سبيل المثال، إذا كانت هناك ملفات تنفيذية مماثلة أو متطابقة، فمن المحتمل أن يؤدي التصفية إلى جعل الملفات أقل تشابهًا وبالتالي يصبح الضغط أسوأ. يمكن أن تؤثر محتويات الملفات غير القابلة للتنفيذ في نفس الأرشيف أيضًا. في الممارسة العملية، يجب تجربة استخدام مرشح BCJ وعدم استخدامه لمعرفة أيهما أفضل في كل حالة.

تتمتع مجموعات التعليمات المختلفة بمحاذاة مختلفة: يجب محاذاة الملف القابل للتنفيذ إلى مضاعف من هذه القيمة في بيانات الإدخال لجعل المرشح يعمل.


الفلتر المحاذاة ملاحظات
x86 1 32 بت أو 64 بت x86
ARM 4
ARM-Thumb 2
ARM64 4 يُفضل محاذاة 4096 بايت
PowerPC 4 نظام ترتيب البايت الكبير فقط
IA-64 16 Itanium
SPARC 4
RISC-V 2

نظرًا لأن البيانات التي تم تصفيتها بواسطة BCJ يتم ضغطها عادةً باستخدام LZMA2، فقد يتم تحسين نسبة الضغط قليلاً إذا تم تعيين خيارات LZMA2 لتتوافق مع محاذاة الفلتر BCJ المحدد. أمثلة:

  • الفلتر IA-64 لديه محاذاة 16 بايت، لذلك pb=4، lp=4، lc=0 جيد مع LZMA2 (2^4=16).
  • يحتوي كود RISC-V على محاذاة 2 بايت أو 4 بايت اعتمادًا على ما إذا كانت الملف يحتوي على تعليمات مضغوطة 16 بت (امتداد C). عند استخدام تعليمات 16 بت، فإن pb=2، lp=1، lc=3 أو pb=1، lp=1، lc=3 هو الخيار الأمثل. عندما لا تكون هناك تعليمات 16 بت، فإن pb=2، lp=2، lc=2 هو الخيار الأفضل. يمكن استخدام readelf -h للتحقق مما إذا كانت كلمة "RVC" تظهر في سطر "Flags".
  • يتم محاذاة ARM64 دائمًا بـ 4 بايت، لذلك pb=2، lp=2، lc=2 هو الخيار الأمثل.

الفلتر x86 هو استثناء. عادةً ما يكون من الجيد الالتزام بالإعدادات الافتراضية لـ LZMA2 (pb=2، lp=0، lc=3) عند ضغط الملفات التنفيذية x86.

تدعم جميع فلاتر BCJ الخيارات التالية:

start=offset

حدد الإزاحة الأولية التي يتم استخدامها عند التحويل بين العناوين النسبية والمطلقة. يجب أن يكون الإزاحة مضاعفًا لمحاذاة الفلتر (راجع الجدول أعلاه). الإعداد الافتراضي هو صفر. في الممارسة العملية، يكون الإعداد الافتراضي جيدًا؛ تحديد إزاحة مخصصة ليس مفيدًا تقريبًا.

--delta[=options]

أضف فلتر Delta إلى سلسلة الفلاتر. يمكن استخدام فلتر Delta فقط كفلتر غير أخير في سلسلة الفلاتر.

يتم دعم حساب دلتا بسيط على مستوى البايت فقط. يمكن أن يكون مفيدًا عند ضغط الصور النقطية غير المضغوطة أو الصوت PCM غير المضغوط. ومع ذلك، قد تعطي الخوارزميات ذات الأغراض الخاصة نتائج أفضل بكثير من Delta + LZMA2. هذا صحيح بشكل خاص مع الصوت، الذي يضغط بشكل أسرع وأفضل، على سبيل المثال، باستخدام flac(1).

الخيارات المدعومة:

dist=distance

حدد مسافة حساب دلتا بالبايت. يجب أن تكون المسافة بين 1 و 256. الإعداد الافتراضي هو 1.

على سبيل المثال، مع dist=2 وثمانية بايت من المدخلات A1 B1 A2 B3 A3 B5 A4 B7، سيكون الإخراج A1 B1 01 02 01 02 01 02.

خيارات أخرى

-q, --quiet

قم بإخفاء التحذيرات والإشعارات. حدد هذا الخيار مرتين لإخفاء الأخطاء أيضًا. هذا الخيار ليس له أي تأثير على حالة الخروج. أي أن حالة الخروج التي تشير إلى وجود تحذير لا تزال مستخدمة، حتى إذا تم إخفاء التحذير.

-v, --verbose

كن مفصلاً. إذا كان الخطأ القياسي متصلاً بمحطة طرفية، فستعرض xz مؤشر تقدم. سيؤدي تحديد --verbose مرتين إلى إخراج أكثر تفصيلاً.

يعرض مؤشر التقدم المعلومات التالية:

يتم عرض النسبة المئوية للإكمال إذا كان حجم ملف الإدخال معروفًا. أي أن النسبة المئوية لا يمكن عرضها في مسارات الأنابيب.


كمية البيانات المضغوطة التي تم إنتاجها (أثناء الضغط) أو استهلاكها (أثناء فك الضغط).

كمية البيانات غير المضغوطة التي تم استهلاكها (أثناء الضغط) أو إنتاجها (أثناء فك الضغط).

نسبة الضغط، والتي يتم حسابها عن طريق قسمة كمية البيانات المضغوطة التي تمت معالجتها حتى الآن على كمية البيانات غير المضغوطة التي تمت معالجتها حتى الآن.

سرعة الضغط أو فك الضغط. يتم قياس ذلك على أنه كمية البيانات غير المضغوطة التي يتم استهلاكها (أثناء الضغط) أو إنتاجها (أثناء فك الضغط) في الثانية. يتم عرض ذلك بعد مرور بضع ثوانٍ منذ بدء تشغيل xz في معالجة الملف.

الوقت المنقضي بالتنسيق M:SS أو H:MM:SS.

يتم عرض الوقت المتبقي المقدر فقط عندما يكون حجم ملف الإدخال معروفًا وقد مرت بضع ثوانٍ بالفعل منذ بدء تشغيل xz في معالجة الملف. يتم عرض الوقت بتنسيق أقل دقة لا يحتوي على أي علامات نقطتين، على سبيل المثال، 2 دقيقة و 30 ثانية.

عندما لا يكون الخطأ القياسي عبارة عن طرفية، سيؤدي الخيار --verbose إلى قيام xz بطباعة اسم الملف والحجم المضغوط والحجم غير المضغوط ونسبة الضغط، وربما أيضًا السرعة والوقت المنقضي في سطر واحد إلى الخطأ القياسي بعد ضغط أو فك ضغط الملف. يتم تضمين السرعة والوقت المنقضي فقط عندما استغرقت العملية بضع ثوانٍ على الأقل. إذا لم تكتمل العملية، على سبيل المثال، بسبب مقاطعة المستخدم، فسيتم أيضًا طباعة نسبة الإكمال إذا كان حجم ملف الإدخال معروفًا.

-Q، --no-warn
لا تقم بتعيين حالة الخروج إلى 2 حتى إذا تم اكتشاف شرط يستحق التحذير. لا يؤثر هذا الخيار على مستوى الإسهاب، وبالتالي يجب استخدام كل من `--quiet` و `--no-warn` لعدم عرض التحذيرات وعدم تغيير حالة الخروج.

--robot
اطبع الرسائل بتنسيق قابل للتحليل آليًا. يهدف هذا إلى تسهيل كتابة الواجهات الأمامية التي تريد استخدام xz بدلاً من liblzma، والتي قد تكون هي الحالة مع البرامج النصية المختلفة. يجب أن يكون الإخراج مع تمكين هذا الخيار مستقرًا عبر إصدارات xz. راجع قسم ROBOT MODE للحصول على التفاصيل.

--info-memory
اعرض، بتنسيق يمكن قراءته بواسطة الإنسان، مقدار الذاكرة الفعلية (RAM) وعدد سلاسل المعالجات التي يعتقد xz أن النظام لديه وقيود استخدام الذاكرة للضغط وفك الضغط، واخرج بنجاح.

-h، --help
اعرض رسالة مساعدة تصف الخيارات الأكثر استخدامًا، واخرج بنجاح.

-H، --long-help
اعرض رسالة مساعدة تصف جميع ميزات xz، واخرج بنجاح

-V، --version
اعرض رقم إصدار xz و liblzma بتنسيق يمكن قراءته بواسطة الإنسان. للحصول على إخراج قابل للتحليل آليًا، حدد `--robot` قبل `--version`.

وضع الروبوت

يتم تنشيط وضع الروبوت باستخدام الخيار --robot. يجعل هذا إخراج xz أسهل في التحليل بواسطة برامج أخرى. حاليًا، يتم دعم --robot فقط جنبًا إلى جنب مع --list و --filters-help و --info-memory و --version. سيتم دعمه للضغط وفك الضغط في المستقبل.

وضع القائمة

يستخدم xz --robot --list إخراجًا مفصولًا بعلامات تبويب. يحتوي العمود الأول من كل سطر على سلسلة تشير إلى نوع المعلومات الموجودة في هذا السطر:


name   هذا هو السطر الأول دائمًا عند البدء في سرد ملف. العمود الثاني في السطر هو اسم الملف.

file   يحتوي هذا السطر على معلومات عامة حول ملف .xz. يتم طباعة هذا السطر دائمًا بعد سطر الاسم.

stream يتم استخدام هذا النوع من الأسطر فقط عند تحديد الخيار ‎--verbose. يوجد العديد من أسطر البث مثل عدد البثوث في ملف .xz.

block يتم استخدام هذا النوع من الأسطر فقط عند تحديد الخيار ‎--verbose. يوجد العديد من أسطر الكتلة مثل عدد الكتل في ملف .xz. تظهر أسطر الكتلة بعد جميع أسطر البث؛ لا يتم خلط أنواع الأسطر المختلفة.

summary يتم استخدام هذا النوع من الأسطر فقط عند تحديد الخيار ‎--verbose مرتين. تتم طباعة هذا السطر بعد جميع أسطر الكتلة. مثل سطر الملف، يحتوي سطر الملخص على معلومات عامة حول ملف .xz.

totals هذا هو السطر الأخير دائمًا في ناتج السرد. يعرض العدد والإحجام الإجمالية.

أعمدة أسطر الملف: ### عدد البثوث في الملف ### العدد الإجمالي للكتل في البث (البثوث) ### الحجم المضغوط للملف ### الحجم غير المضغوط للملف ### نسبة الضغط، على سبيل المثال، 0.123. إذا كانت النسبة أكبر من 9.999، يتم عرض ثلاثة شرطات (---) بدلاً من النسبة. ### قائمة مفصولة بفواصل بأسماء فحوصات السلامة. يتم استخدام السلاسل التالية لأنواع الفحص المعروفة: لا يوجد، CRC32، CRC64، و SHA-256. بالنسبة لأنواع الفحص غير المعروفة، يتم استخدام السلسلة "غير معروف-N"، حيث N هو معرف الفحص كرقم عشري (رقم واحد أو رقمين). ### الحجم الإجمالي للحشو في البث (البثوث)

أعمدة أسطر البث: ### رقم البث (البث الأول هو 1) ### عدد الكتل في البث ### الإزاحة البادئة المضغوطة ### الإزاحة البادئة غير المضغوطة ### الحجم المضغوط (لا يتضمن حشو البث) ### الحجم غير المضغوط ### نسبة الضغط ### اسم فحص السلامة حجم حشو البث

أعمدة أسطر الكتلة: ### رقم البث الذي يحتوي على هذه الكتلة ### رقم الكتلة بالنسبة لبداية البث (الكتلة الأولى هي 1) ### رقم الكتلة بالنسبة لبداية الملف ### الإزاحة البادئة المضغوطة بالنسبة لبداية الملف ### الإزاحة البادئة غير المضغوطة بالنسبة لبداية الملف ### الحجم المضغوط الإجمالي للكتلة (يتضمن الرؤوس) ### الحجم غير المضغوط ### نسبة الضغط اسم فحص السلامة

إذا تم تحديد الخيار ‎--verbose مرتين، يتم تضمين أعمدة إضافية في أسطر الكتلة. لا يتم عرض هذه الأعمدة باستخدام الخيار ‎--verbose واحد، لأن الحصول على هذه المعلومات يتطلب العديد من عمليات البحث ويمكن أن يكون بطيئًا: قيمة فحص السلامة بتنسيق ست عشري حجم رأس الكتلة علامات الكتلة: يشير "c" إلى أن الحجم المضغوط موجود، ويشير "u" إلى أن الحجم غير المضغوط موجود. إذا لم يتم تعيين العلامة، يتم عرض شرطة (-) للحفاظ على طول السلسلة ثابتًا. قد تتم إضافة علامات جديدة إلى نهاية السلسلة في المستقبل. حجم البيانات المضغوطة الفعلية في الكتلة (باستثناء رأس الكتلة وحشو الكتلة وحقول الفحص) كمية الذاكرة (بالبايت) المطلوبة لفك ضغط هذه الكتلة باستخدام هذا الإصدار من xz سلسلة المرشح. لاحظ أن معظم الخيارات المستخدمة في وقت الضغط لا يمكن معرفتها، لأنه يتم تخزين الخيارات التي تشتد الحاجة إليها لفك الضغط فقط في رؤوس .xz.


أعمدة أسطر الملخص: ### مقدار الذاكرة (بالبايت) المطلوبة لفك ضغط هذا الملف باستخدام هذا الإصدار من xz نعم أو لا للإشارة إلى ما إذا كانت جميع رؤوس الكتل تحتوي على كل من حجم البيانات المضغوطة وحجم البيانات غير المضغوطة. ابتداءً من xz 5.1.2alpha: ### الحد الأدنى لإصدار xz المطلوب لفك ضغط الملف.

أعمدة أسطر الإجماليات: ### عدد التدفقات. ### عدد الكتل. ### الحجم المضغوط. ### الحجم غير المضغوط. ### متوسط نسبة الضغط. ### قائمة مفصولة بفواصل بأسماء فحوصات التكامل الموجودة في الملفات. ### حجم حشو التدفق. ### عدد الملفات. هذا موجود هنا للحفاظ على ترتيب الأعمدة السابقة كما هو في أسطر الملفات.

إذا تم تحديد الخيار --verbose مرتين، فسيتم تضمين أعمدة إضافية في أسطر الإجماليات: أقصى قدر من الذاكرة (بالبايت) المطلوبة لفك ضغط الملفات باستخدام هذا الإصدار من xz. نعم أو لا للإشارة إلى ما إذا كانت جميع رؤوس الكتل تحتوي على كل من حجم البيانات المضغوطة وحجم البيانات غير المضغوطة. ابتداءً من xz 5.1.2alpha: الحد الأدنى لإصدار xz المطلوب لفك ضغط الملف.

قد تضيف الإصدارات المستقبلية أنواعًا جديدة من الأسطر ويمكن إضافة أعمدة جديدة إلى أنواع الأسطر الموجودة، ولكن لن يتم تغيير الأعمدة الموجودة.

معلومات حول المرشحات

يطبع الأمر `xz --robot --filters-help` المرشحات المدعومة بالتنسيق التالي:

filter:option=<value>,option=<value>...

filter اسم المرشح.

option اسم خيار محدد للمرشح.

value تظهر القيم الرقمية في نطاقات كـ `<min-max>`. يتم عرض خيارات القيمة النصية داخل `<>` ويفصل بينها الرمز `|`.

يتم طباعة كل مرشح في سطر منفصل.

###          معلومات حول حد الذاكرة
يطبع الأمر `xz --robot --info-memory` سطرًا واحدًا مع أعمدة متعددة مفصولة بعلامات تبويب:

###          إجمالي مقدار الذاكرة الفعلية (ذاكرة الوصول العشوائي) بالبايت.

###          حد استخدام الذاكرة للضغط بالبايت (`--memlimit-compress`). تشير قيمة خاصة تساوي 0 إلى الإعداد الافتراضي، وهو في الوضع أحادي الترابط هو نفسه عدم وجود حد.

###          حد استخدام الذاكرة لفك الضغط بالبايت (`--memlimit-decompress`). تشير قيمة خاصة تساوي 0 إلى الإعداد الافتراضي، وهو في الوضع أحادي الترابط هو نفسه عدم وجود حد.

###          ابتداءً من xz 5.3.4alpha: استخدام الذاكرة لفك الضغط متعدد الخيوط بالبايت (`--memlimit-mt-decompress`). هذا ليس صفرًا أبدًا لأنه يتم استخدام قيمة افتراضية خاصة بالنظام في العمود 5 إذا لم يتم تحديد حد بشكل صريح. هذا أيضًا ليس أكبر من القيمة في العمود 3 حتى لو تم تحديد قيمة أكبر باستخدام الخيار `--memlimit-mt-decompress`.

###          منذ xz 5.3.4alpha: حد افتراضي خاص بالنظام لاستخدام الذاكرة، يُستخدم للحد من عدد سلاسل العمليات عند الضغط باستخدام عدد تلقائي من سلاسل العمليات (--threads=0) ولم يتم تحديد حد لاستخدام الذاكرة (--memlimit-compress). يُستخدم هذا أيضًا كقيمة افتراضية لـ --memlimit-mt-decompress.

###          منذ xz 5.3.4alpha: عدد سلاسل العمليات المتاحة.

في المستقبل، قد يحتوي إخراج الأمر xz --robot --info-memory على المزيد من الأعمدة، ولكن لن يتجاوز سطرًا واحدًا.

الإصدار

يطبع الأمر xz --robot --version رقم إصدار xz و liblzma بالتنسيق التالي:

XZ_VERSION=XYYYZZZS
LIBLZMA_VERSION=XYYYZZZS

X      الإصدار الرئيسي.

YYY    الإصدار الثانوي. الأرقام الزوجية هي إصدارات مستقرة. الأرقام الفردية هي إصدارات ألفا أو بيتا.

ZZZ    مستوى التصحيح للإصدارات المستقرة أو مجرد عداد للإصدارات التجريبية.

S      الاستقرار. 0 هو ألفا، و 1 هو بيتا، و 2 هو مستقر. يجب أن تكون قيمة S دائمًا 2 عندما تكون YYY زوجية.

تكون قيم XYYYZZZS متطابقة في كلا السطرين إذا كان كل من xz و liblzma من نفس إصدار XZ Utils.

أمثلة: 4.999.9beta هو 49990091 و 5.0.0 هو 50000002.

حالة الخروج

0     كل شيء على ما يرام.

1     حدث خطأ.

2     حدث شيء يستحق التحذير، ولكن لم تحدث أي أخطاء فعلية.

الملاحظات (وليست تحذيرات أو أخطاء) المطبوعة على الخطأ القياسي لا تؤثر على حالة الخروج.

البيئة

يقوم xz بتحليل قوائم مفصولة بمسافات من الخيارات من متغيرات البيئة XZ_DEFAULTS و XZ_OPT، بهذا الترتيب، قبل تحليل الخيارات من سطر الأوامر. لاحظ أنه يتم تحليل الخيارات فقط من متغيرات البيئة؛ يتم تجاهل جميع العناصر غير الخيارات بصمت. يتم التحليل باستخدام getopt_long(3) والذي يستخدم أيضًا لحجج سطر الأوامر.

تحذير: من خلال تعيين هذه المتغيرات البيئية، يتم فعليًا تعديل البرامج والنصوص التي تقوم بتشغيل xz. في معظم الحالات، يكون من الآمن تعيين حدود استخدام الذاكرة وعدد سلاسل العمليات وخيارات الضغط من خلال متغيرات البيئة. ومع ذلك، يمكن لبعض الخيارات أن تتسبب في حدوث أعطال في البرامج النصية. مثال واضح هو --help الذي يجعل xz يعرض نص المساعدة بدلاً من ضغط أو فك ضغط ملف. أمثلة أكثر دقة هي --quiet و --verbose. في كثير من الحالات، يعمل تمكين مؤشر التقدم باستخدام --verbose بشكل جيد، ولكن في بعض المواقف، تتسبب الرسائل الإضافية في حدوث مشاكل. يؤثر مستوى الإسهاب أيضًا على سلوك --list.

XZ_DEFAULTS
خيارات افتراضية خاصة بالمستخدم أو على مستوى النظام. عادةً ما يتم تعيين هذا في برنامج تهيئة shell لتمكين مُحدِّد استخدام ذاكرة xz افتراضيًا أو لتعيين عدد سلاسل العمليات الافتراضي. باستثناء برامج تهيئة shell والحالات الخاصة المماثلة، لا ينبغي للبرامج النصية أبدًا تعيين أو إلغاء تعيين XZ_DEFAULTS.

XZ_OPT هذا مخصص لتمرير الخيارات إلى xz عندما لا يكون من الممكن تعيين الخيارات مباشرةً على سطر أوامر xz. هذه هي الحالة عندما يتم تشغيل xz بواسطة برنامج نصي أو أداة، على سبيل المثال، GNU [tar]({filename}../../tar)(1).

XZ_OPT=-2v tar caf foo.tar.xz foo

يمكن للبرامج النصية استخدام XZ_OPT، على سبيل المثال، لتعيين خيارات الضغط الافتراضية الخاصة بالبرنامج النصي. لا يزال من المستحسن السماح للمستخدمين بتجاوز XZ_OPT إذا كان ذلك معقولاً. على سبيل المثال، في البرامج النصية sh(1) يمكن استخدام شيء مثل هذا:

XZ_OPT=${XZ_OPT-"-7e"}
export XZ_OPT

توافق أدوات LZMA

بنية سطر الأوامر الخاصة بـ xz هي في الأساس مجموعة فائقة من lzma و unlzma و lzcat كما هو موجود في LZMA Utils 4.32.x. في معظم الحالات، من الممكن استبدال LZMA Utils بـ XZ Utils دون تعطيل البرامج النصية الموجودة. ومع ذلك، هناك بعض أوجه عدم التوافق التي قد تسبب أحيانًا مشاكل.

مستويات الضغط المسبقة

إن ترقيم مستويات الضغط المسبق ليس متطابقًا في xz و LZMA Utils. الفرق الأكثر أهمية هو كيفية تعيين أحجام القواميس لمستويات مختلفة. حجم القاموس قريب من استخدام ذاكرة وحدة فك الضغط.

المستوى xz LZMA Utils -0 256 كيلو بايت غير متوفر -1 1 ميجابايت 64 كيلو بايت -2 2 ميجابايت 1 ميجابايت -3 4 ميجابايت 512 كيلو بايت -4 4 ميجابايت 1 ميجابايت -5 8 ميجابايت 2 ميجابايت -6 8 ميجابايت 4 ميجابايت -7 16 ميجابايت 8 ميجابايت -8 32 ميجابايت 16 ميجابايت -9 64 ميجابايت 32 ميجابايت

تؤثر اختلافات حجم القاموس أيضًا على استخدام ذاكرة الضغط، ولكن هناك بعض الاختلافات الأخرى بين LZMA Utils و XZ Utils، مما يجعل الفرق أكبر:

المستوى xz LZMA Utils 4.32.x -0 3 ميجابايت غير متوفر -1 9 ميجابايت 2 ميجابايت -2 17 ميجابايت 12 ميجابايت -3 32 ميجابايت 12 ميجابايت -4 48 ميجابايت 16 ميجابايت -5 94 ميجابايت 26 ميجابايت -6 94 ميجابايت 45 ميجابايت -7 186 ميجابايت 83 ميجابايت -8 370 ميجابايت 159 ميجابايت -9 674 ميجابايت 311 ميجابايت

مستوى الضغط الافتراضي في LZMA Utils هو -7 بينما في XZ Utils هو -6، لذلك كلاهما يستخدم قاموسًا بحجم 8 ميجابايت افتراضيًا.

ملفات .lzma المتدفقة وغير المتدفقة

يمكن تخزين حجم الملف غير المضغوط في رأس ملف .lzma. تستخدم LZMA Utils ذلك عند ضغط الملفات العادية. البديل هو الإشارة إلى أن حجم الملف غير المضغوط غير معروف واستخدام علامة نهاية الحمولة للإشارة إلى مكان توقف وحدة فك الضغط. تستخدم LZMA Utils هذه الطريقة عندما يكون حجم الملف غير المضغوط غير معروف، كما هو الحال، على سبيل المثال، في خطوط الأنابيب.

تدعم `xz` فك ضغط ملفات .lzma مع أو بدون علامة نهاية الحمولة، ولكن جميع ملفات .lzma
التي تم إنشاؤها بواسطة `xz` ستستخدم علامة نهاية الحمولة وسيتم وضع علامة على حجم الملف غير المضغوط على أنه غير معروف في
رأس .lzma. قد تكون هذه مشكلة في بعض الحالات غير الشائعة. على سبيل المثال، قد تعمل وحدة فك ضغط .lzma في جهاز مضمن فقط مع الملفات التي يكون حجمها غير المضغوط معروفًا. إذا
واجهت هذه المشكلة، فستحتاج إلى استخدام LZMA Utils أو LZMA SDK لإنشاء ملفات .lzma ذات حجم غير مضغوط معروف.

ملفات .lzma غير مدعومة

تسمح صيغة .lzma بقيم lc تصل إلى 8، وقيم lp تصل إلى 4. يمكن لأدوات LZMA فك ضغط الملفات بأي قيم lc و lp، ولكنها دائمًا ما تنشئ ملفات بقيم lc=3 و lp=0. يمكن إنشاء ملفات بقيم lc و lp أخرى باستخدام xz و LZMA SDK.

يتطلب تطبيق مرشح LZMA1 في liblzma أن يكون مجموع lc و lp أقل من أو يساوي 4. وبالتالي، لا يمكن فك ضغط ملفات .lzma التي تتجاوز هذا الحد باستخدام xz.

تقوم أدوات LZMA بإنشاء ملفات .lzma فقط التي تحتوي على حجم قاموس يساوي 2^n (قوة للعدد 2)، ولكنها تقبل الملفات بأي حجم قاموس. تقبل liblzma فقط ملفات .lzma التي تحتوي على حجم قاموس يساوي 2^n أو 2^n + 2^(n-1). هذا لتقليل النتائج الإيجابية الكاذبة عند اكتشاف ملفات .lzma.

لا ينبغي أن تكون هذه القيود مشكلة في الممارسة العملية، حيث يتم ضغط جميع ملفات .lzma تقريبًا بإعدادات تقبلها liblzma.

بيانات زائدة في النهاية

عند فك الضغط، تتجاهل أدوات LZMA بصمت أي شيء بعد تدفق .lzma الأول. في معظم الحالات، هذا خطأ. وهذا يعني أيضًا أن أدوات LZMA لا تدعم فك ضغط ملفات .lzma المتسلسلة.

إذا كانت هناك بيانات متبقية بعد تدفق .lzma الأول، فإن xz يعتبر الملف تالفًا ما لم يتم استخدام الخيار --single-stream. قد يؤدي ذلك إلى تعطيل البرامج النصية الغامضة التي افترضت أنه يتم تجاهل البيانات الزائدة في النهاية.

ملاحظات

قد يختلف الإخراج المضغوط

قد يختلف الإخراج المضغوط الدقيق الذي تم إنشاؤه من نفس ملف الإدخال غير المضغوط بين إصدارات XZ Utils حتى لو كانت خيارات الضغط متطابقة. وذلك لأن المحسن يمكن تحسينه (أسرع أو ضغط أفضل) دون التأثير على تنسيق الملف. يمكن أن يختلف الإخراج حتى بين الإصدارات المختلفة من نفس إصدار XZ Utils، إذا تم استخدام خيارات بناء مختلفة.

يعني ما سبق أنه بمجرد تنفيذ الخيار --rsyncable، قد لا تكون الملفات الناتجة قابلة للمزامنة باستخدام rsync ما لم يتم ضغط كل من الملفات القديمة والجديدة باستخدام نفس إصدار xz. يمكن إصلاح هذه المشكلة إذا تم تجميد جزء من تطبيق المحسن للحفاظ على استقرار الإخراج القابل للمزامنة عبر إصدارات xz.

مُفكّات ضغط .xz المضمنة

لا تدعم تطبيقات مُفكّات ضغط .xz المضمنة مثل XZ Embedded بالضرورة الملفات التي تم إنشاؤها بأنواع فحص تكامل بخلاف none و crc32. نظرًا لأن الإعداد الافتراضي هو --check=crc64، يجب استخدام --check=none أو --check=crc32 عند إنشاء ملفات للأنظمة المضمنة.

خارج الأنظمة المضمنة، تدعم جميع مُفكّات ضغط تنسيق .xz أنواع الفحص، أو على الأقل يمكنها فك ضغط الملف دون التحقق من فحص التكامل إذا لم يتم دعم الفحص المحدد.

يدعم XZ Embedded مرشحات BCJ، ولكن فقط مع إزاحة البداية الافتراضية.

أمثلة

أساسيات

ضغط الملف foo إلى foo.xz باستخدام مستوى الضغط الافتراضي (-6)، وإزالة foo إذا نجح الضغط:

xz foo

فك ضغط bar.xz إلى bar وعدم إزالة bar.xz حتى إذا نجح فك الضغط:


xz -dk bar.xz

يمكن إنشاء ملف baz.tar.xz باستخدام الإعداد المسبق -4e (أو -4 --extreme)، وهو أبطأ من الإعداد الافتراضي -6، ولكنه يتطلب ذاكرة أقل للضغط وفك الضغط (48 ميجابايت و 5 ميجابايت على التوالي):

tar cf - baz | xz -4e > baz.tar.xz

يمكن فك ضغط مجموعة من الملفات المضغوطة وغير المضغوطة إلى الإخراج القياسي باستخدام أمر واحد:

xz -dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt

الضغط المتوازي للعديد من الملفات

على أنظمة GNU و BSD، يمكن استخدام find ({filename}../../find)(1) و xargs(1) لتسريع عملية ضغط العديد من الملفات:

find . -type f \! -name '*.xz' -print0 \
| xargs -0r -P4 -n16 xz -T1

يحدد الخيار -P في xargs(1) عدد عمليات xz المتوازية. تعتمد أفضل قيمة للخيار -n على عدد الملفات المراد ضغطها. إذا كان هناك بضعة ملفات فقط، فيجب أن تكون القيمة 1 على الأرجح؛ ومع عشرات الآلاف من الملفات، قد يكون 100 أو أكثر مناسبًا لتقليل عدد عمليات xz التي سيقوم xargs(1) بإنشائها في النهاية.

الخيار `-T1` لـ `xz` موجود لإجباره على العمل في وضع أحادي الخيوط، لأن `xargs`(1) يُستخدم للتحكم في مقدار التوازي.

الوضع الآلي

احسب عدد البايتات التي تم توفيرها بعد ضغط العديد من الملفات:

xz --robot --list *.xz | awk '/^totals/{print $5-$4}'

قد يحتاج البرنامج النصي إلى معرفة ما إذا كان يستخدم نسخة حديثة بما فيه الكفاية من xz. يتحقق البرنامج النصي sh(1) التالي من أن رقم إصدار أداة xz هو 5.0.0 على الأقل. هذه الطريقة متوافقة مع الإصدارات التجريبية القديمة، والتي لم تكن تدعم الخيار --robot:

if ! eval "$(xz --robot --version 2> /dev/null)" ||
[ "$XZ_VERSION" -lt 50000002 ]; then
echo "Your xz is too old."
fi
unset XZ_VERSION LIBLZMA_VERSION

حدد حدًا لاستخدام الذاكرة لفك الضغط باستخدام `XZ_OPT`، ولكن إذا تم تعيين حد بالفعل، فلا تقم بزيادته:

NEWLIM=$((123 << 20))  # 123 MiB
OLDLIM=$(xz --robot --info-memory | cut -f3)
if [ $OLDLIM -eq 0 -o $OLDLIM -gt $NEWLIM ]; then
XZ_OPT="$XZ_OPT --memlimit-decompress=$NEWLIM"
export XZ_OPT
fi

سلاسل فلاتر الضغط المخصصة

أبسط استخدام لسلاسل الفلاتر المخصصة هو تخصيص إعداد LZMA2 مسبقًا. يمكن أن يكون هذا مفيدًا، لأن الإعدادات المسبقة تغطي مجموعة فرعية فقط من التركيبات المحتملة لإعدادات الضغط.

تُعد أعمدة `CompCPU` في الجداول من أوصاف الخيارات `-0 ... -9` و `--extreme` مفيدة عند تخصيص إعدادات LZMA2 المسبقة. فيما يلي الأجزاء ذات الصلة المجمعة من هذين الجدولين:

Preset CompCPU -0 0 -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 -5e 7 -6e 8

إذا كنت تعلم أن ملفًا معينًا يتطلب قاموسًا كبيرًا نسبيًا (على سبيل المثال، 32 ميجابايت) لكي يتم ضغطه بشكل جيد، ولكنك تريد ضغطه بشكل أسرع مما يفعله `xz -8`، فيمكن تعديل إعداد مسبق بقيمة `CompCPU` منخفضة (على سبيل المثال، 1) لاستخدام قاموس أكبر:

xz --lzma2=preset=1,dict=32MiB foo.tar

با بعض الملفات، قد يكون الأمر أعلاه أسرع من xz -6 مع توفير ضغط أفضل بشكل كبير. ومع ذلك، يجب التأكيد على أن بعض الملفات فقط هي التي تستفيد من القاموس الكبير مع الحفاظ على قيمة CompCPU منخفضة. الحالة الأكثر وضوحًا، حيث يمكن أن يساعد القاموس الكبير كثيرًا، هي الأرشيف الذي يحتوي على ملفات متشابهة جدًا بحجم عدة ميغابايت على الأقل. يجب أن يكون حجم القاموس أكبر بكثير من أي ملف فردي للسماح لـ LZMA2 بالاستفادة الكاملة من أوجه التشابه بين الملفات المتتالية.

إذا كان استخدام ذاكرة عالية جدًا للضاغط والمفكوك أمرًا جيدًا، وكان الملف الذي يتم ضغطه على الأقل عدة مئات من الميجابايت، فقد يكون من المفيد استخدام قاموس أكبر حتى من 64 ميجابايت الذي يستخدمه xz -9:

xz -vv --lzma2=dict=192MiB big_foo.tar

يمكن أن يكون استخدام -vv (--verbose --verbose) كما في المثال أعلاه مفيدًا لرؤية متطلبات الذاكرة للضاغط والمفكوك. تذكر أن استخدام قاموس أكبر من حجم الملف غير المضغوط هو إهدار للذاكرة، لذلك الأمر أعلاه غير مفيد للملفات الصغيرة.

في بعض الأحيان، لا يهم وقت الضغط، ولكن يجب الحفاظ على استخدام ذاكرة المفكوك منخفضًا، على سبيل المثال، لتسهيل إمكانية فك ضغط الملف على نظام مضمن. يستخدم الأمر التالي -6e (-6 --extreme) كأساس ويحدد القاموس على 64 كيلوبايت فقط. يمكن فك ضغط الملف الناتج باستخدام XZ Embedded (وهذا هو سبب وجود --check=crc32) باستخدام حوالي 100 كيلوبايت من الذاكرة.

xz --check=crc32 --lzma2=preset=6e,dict=64KiB foo

إذا كنت تريد الحصول على أكبر عدد ممكن من البايتات، فإن تعديل عدد بتات السياق الحرفي (lc) وعدد بتات الموضع (pb) يمكن أن يساعد في بعض الأحيان. قد يساعد تعديل عدد بتات الموضع الحرفي (lp) أيضًا، ولكن عادةً ما يكون lc و pb أكثر أهمية. على سبيل المثال، يحتوي أرشيف التعليمات البرمجية المصدر في الغالب على نص ASCII، لذلك قد يعطي شيء مثل ما يلي ملفًا أصغر قليلاً (حوالي 0.1٪) من xz -6e (جرب أيضًا بدون lc=4):

xz --lzma2=preset=6e,pb=0,lc=4 source_code.tar

يمكن أن يؤدي استخدام عامل تصفية آخر مع LZMA2 إلى تحسين الضغط لأنواع معينة من الملفات. على سبيل المثال، لضغط مكتبة مشتركة x86-32 أو x86-64 باستخدام عامل تصفية x86 BCJ:

xz --x86 --lzma2 libfoo.so

لاحظ أن ترتيب خيارات عامل التصفية مهم. إذا تم تحديد --x86 بعد --lzma2، فسيعطي xz خطأ، لأنه لا يمكن أن يكون هناك أي عامل تصفية بعد LZMA2، وأيضًا لأنه لا يمكن استخدام عامل تصفية x86 BCJ كآخر عامل تصفية في السلسلة.

يمكن أن يعطي عامل تصفية Delta مع LZMA2 نتائج جيدة مع صور نقطية. يجب أن يتفوق عادةً على PNG، الذي يحتوي على عدد قليل من عوامل التصفية الأكثر تقدمًا ولكنه يستخدم Deflate للضغط الفعلي.

يجب حفظ الصورة بتنسيق غير مضغوط، على سبيل المثال، كـ TIFF غير مضغوط. يتم تعيين معلمة المسافة الخاصة بعامل تصفية Delta لتطابق عدد البايتات لكل بكسل في الصورة. على سبيل المثال، تحتاج الصورة النقطية RGB ذات 24 بت إلى dist=3، ومن الجيد أيضًا تمرير pb=0 إلى LZMA2 لاستيعاب المحاذاة ذات الثلاثة بايت:


xz --delta=dist=3 --lzma2=pb=0 foo.tiff

إذا تم وضع صور متعددة في أرشيف واحد (على سبيل المثال، .tar)، فسيعمل مرشح Delta أيضًا، طالما أن جميع الصور لها نفس عدد البايتات لكل بكسل.

انظر أيضًا

xzdec(1)، xzdiff(1)، xzgrep(1)، xzless(1)، xzmore(1)، gzip(1)، bzip2(1)، 7z(1)

أدوات XZ: [https://tukaani.org/xz/]
XZ Embedded: [https://tukaani.org/xz/embedded.html]
LZMA SDK: [https://7-zip.org/sdk.html]