GZIP(1)

الاسم
gzip, gunzip, zcat - ضغط الملفات أو توسيعها

موجز
gzip [ -acdfhklLnNrtvV19 ] [-S اللاحقة] [ الاسم ... ]
gunzip [ -acfhklLnNrtvV ] [-S اللاحقة] [ الاسم ... ]
zcat [ -fhLV ] [ الاسم ... ]

الوصف
يقلل الأمر gzip حجم الملفات المذكورة باستخدام ترميز ليمبل-زيف (LZ77). تُستبدل كل منها، متى أمكن، بملف يحمل الامتداد .gz، مع الحفاظ على أوضاع الملكية نفسها، وأوقات الوصول والتعديل. (الامتداد المبدئي هو z لأنظمة MSDOS، و OS/2 FAT، و Windows NT FAT و Atari.) إذا لم تُحدد أي ملفات، أو إذا كان اسم الملف "-"، يُضغط الدخل القياسي إلى الخارج القياسي. سيحاول الأمر gzip ضغط الملفات العادية فقط. وسيتجاهل الروابط الرمزية على وجه الخصوص.

إذا كان اسم الملف المضغوط طويلاً جداً بالنسبة لـ نظام الملفات، يقوم gzip ببتره. يحاول الأمر gzip بتر أجزاء اسم الملف التي يتجاوز طولها 3 محارف فقط. (يُفصل الجزء بنقاط.) إذا كان الاسم يتكون من أجزاء صغيرة فقط، تُبتر الأجزاء الأطول. على سبيل المثال، إذا كانت أسماء الملفات محدودة بـ 14 محرفاً، يُضغط gzip.msdos.exe إلى gzi.msd.exe.gz. لا تُبتر الأسماء في الأنظمة التي ليس لديها حد لطول اسم الملف.

يحفظ gzip، بشكل مبدئي، اسم الملف الأصلي والطابع الزمني في الملف المضغوط. وتُستخدم هذه عند فك ضغط الملف باستخدام الخيار -N. يعد هذا مفيداً عند بتر اسم الملف المضغوط أو عند عدم الحفاظ على الطابع الزمني بعد نقل الملف.

يمكن استعادة الملفات المضغوطة إلى شكلها الأصلي باستخدام gzip -d أو gunzip أو zcat. إذا كان الاسم الأصلي المحفوظ في الملف المضغوط غير مناسب لـ نظام الملفات الخاص به، يُنشأ اسم جديد من الاسم الأصلي لجعله صالحاً.

يأخذ gunzip قائمة من الملفات في سطر الأوامر ويستبدل كل ملف ينتهي اسمه بـ .gz أو -gz أو .z أو -z أو _z (مع تجاهل حالة الأحرف) والذي يبدأ بالرقم السحري الصحيح بملف غير مضغوط بدون الامتداد الأصلي. يتعرف gunzip أيضًا على الامتدادات الخاصة .tgz و .taz كاختصارات لـ .tar.gz و .tar.Z على التوالي. عند الضغط، يستخدم gzip امتداد .tgz إذا لزم الأمر بدلاً من بتر ملف بامتداد .tar.

يستطيع gunzip حالياً فك ضغط الملفات التي أُنشئت بواسطة gzip أو zip أو compress أو compress -H أو pack. يُكتشف تنسيق الدخل بشكل آلي. عند استخدام أول تنسيقين، يفحص gunzip رمز CRC من فئة 32 بت. بالنسبة لـ pack و gunzip فإنه يفحص الطول غير المضغوط. لم يُصمم تنسيق compress القياسي للسماح بفحوصات الاتساق. ومع ذلك، يتمكن gunzip أحياناً من اكتشاف ملف .Z تالف. إذا واجهت خطأ عند فك ضغط ملف .Z، فلا تفترض أن ملف .Z سليم لمجرد أن uncompress القياسي لا يشتكي. يعني هذا بشكل عام أن uncompress القياسي لا يفحص دخله، ويولد مخرجات عديمة الفائدة بسعادة. تنسيق SCO compress -H (طريقة ضغط lzh) لا يتضمن CRC ولكنه يسمح أيضًا ببعض فحوصات الاتساق.

يمكن فك ضغط الملفات التي أُنشئت بواسطة zip عن طريق gzip فقط إذا كانت تحتوي على عضو واحد مضغوط بطريقة 'deflation'. الغرض من هذه الميزة فقط هو المساعدة في تحويل ملفات tar.zip إلى تنسيق tar.gz. لاستخراج ملف zip بعضو واحد، استخدم أمراً مثل 'gunzip <foo.zip' أو 'gunzip -S .zip foo.zip'. لاستخراج ملفات zip ذات أعضاء متعددة، استخدم unzip بدلاً من gunzip.

الأمر zcat مطابق لـ gunzip -c. (في بعض الأنظمة، قد يُثبت zcat كـ gzcat للحفاظ على الرابط الأصلي بـ compress.) يفك zcat ضغط إما قائمة من الملفات في سطر الأوامر أو دخلها القياسي ويكتب البيانات غير المضغوطة على الخارج القياسي. سيفك zcat ضغط الملفات التي تملك الرقم السحري الصحيح سواء كانت تحمل لاحقة .gz أم لا.

يستخدم الأمر gzip خوارزمية ليمبل-زيف المستخدمة في zip و PKZIP. تعتمد كمية الضغط الناتجة على حجم الدخل وتوزيع السلاسل الفرعية الشائعة. عادةً، يُقلص النص مثل الكود المصدري أو الإنجليزية بنسبة 60–70%. الضغط بشكل عام أفضل بكثير مما يحققه LZW (المستخدم في compress)، أو ترميز هوفمان (المستخدم في pack)، أو ترميز هوفمان التكيفي (compact).

يُنفذ الضغط دائماً، حتى لو كان الملف المضغوط أكبر قليلاً من الأصلي. أسوأ حالات التوسع هي بضعة بايتات لترويسة ملف gzip، بالإضافة إلى 5 بايتات لكل كتلة بحجم 32 KiB، أو نسبة توسع قدرها 0.015% للملفات الكبيرة. يكاد لا يزداد العدد الفعلي لكتل القرص المستخدمة أبداً.

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

الخيارات

-a --ascii
    وضع نص Ascii: تحويل نهايات السطور باستخدام الاتفاقيات المحلية. هذا الخيار مدعوم فقط في بعض الأنظمة غير التابعة لـ Unix. في MSDOS، يُحول CR LF إلى LF عند الضغط، ويُحول LF إلى CR LF عند فك الضغط.

-c --stdout --to-stdout
    كتابة المخرجات على الخارج القياسي؛ مع إبقاء الملفات الأصلية دون تغيير. إذا وُجدت عدة ملفات دخل، تتكون المخرجات من تسلسل من الأعضاء المضغوطة بشكل مستقل. للحصول على ضغط أفضل، ادمج جميع ملفات الدخل قبل ضغطها.

-d --decompress --uncompress
    فك الضغط.

-f --force
    فرض الضغط أو فك الضغط حتى لو كان للملف روابط متعددة أو كان الملف المقابل موجوداً بالفعل، أو إذا كانت البيانات المضغوطة تُقرأ من محطة طرفية أو تُكتب إليها. إذا لم تكن بيانات الدخل بتنسيق يتعرف عليه gzip، وإذا أُعطي أيضًا الخيار --stdout، تُنسخ بيانات الدخل دون تغيير إلى الخارج القياسي: ليتصرف zcat كأنه cat. إذا لم يُعط -f، وعند عدم التشغيل في الخلفية، يسأل gzip للتحقق مما إذا كان ينبغي الكتابة فوق ملف موجود.

-h --help
    عرض شاشة المساعدة والخروج.

-k --keep
    الاحتفاظ بملفات الدخل (عدم حذفها) أثناء الضغط أو فك الضغط.

-l --list
    لكل ملف مضغوط، ادرج الحقول التالية:

        حجم الملف المضغوط: حجم الملف المضغوط
        الحجم غير المضغوط: حجم الملف غير المضغوط
        النسبة: نسبة الضغط (0.0% إذا كانت غير معروفة)
        الاسم غير المضغوط: اسم الملف غير المضغوط

    يُعطى الحجم غير المضغوط كـ -1 للملفات التي ليست بتنسيق gzip، مثل ملفات .Z المضغوطة. للحصول على الحجم غير المضغوط لمثل هذا الملف، يمكنك استخدام:

        zcat file.Z | wc -c

    بالاقتران مع الخيار --verbose، تُعرض أيضًا الحقول التالية:

        الطريقة: طريقة الضغط
        crc: رمز CRC ذو 32 بت للبيانات غير المضغوطة
        التاريخ والوقت: الطابع الزمني للملف غير المضغوط

    طرق الضغط المدعومة حالياً هي deflate، و compress، و lzh (SCO compress -H) و pack. يُعطى crc كـ ffffffff لملف ليس بتنسيق gzip.

    مع --name، تكون الأسماء والتواريخ والأوقات غير المضغوطة هي تلك المخزنة داخل الملف المضغوط إن وجدت.

    مع --verbose، تُعرض أيضًا إجماليات الحجم ونسبة الضغط لجميع الملفات، ما لم تكن بعض الأحجام غير معروفة. مع --quiet، لا تُعرض أسطر العنوان والإجماليات.

-L --license
    عرض رخصة gzip والخروج.

-n --no-name
    عند الضغط، لا تحفظ اسم الملف الأصلي والطابع الزمني بشكل مبدئي. (يُحفظ الاسم الأصلي دائماً إذا اضطر الأمر لبتر الاسم.) عند فك الضغط، لا تستعد اسم الملف الأصلي إن وجد (أزل لاحقة gzip فقط من اسم الملف المضغوط) ولا تستعد الطابع الزمني الأصلي إن وجد (انسخه من الملف المضغوط). هذا الخيار هو المبدئي عند فك الضغط.

-N --name
    عند الضغط، احفظ دائماً اسم الملف الأصلي، واحفظ جزء الثواني من الطابع الزمني الأصلي للتعديل إذا كان الملف الأصلي ملفاً عادياً وكان طابعه الزمني على الأقل 1 (1970-01-01 00:00:01 UTC) وأقل من 2**32 (2106-02-07 06:28:16 UTC، بافتراض عدم حساب الثواني الكبيسة)؛ وهذا هو المبدئي. عند فك الضغط، استعد من اسم الملف والطابع الزمني المحفوظين إن وجدا. يعد هذا الخيار مفيداً في الأنظمة التي تضع حداً لطول اسم الملف أو عند فقدان الطابع الزمني بعد نقل الملف.

-q --quiet
    كتم جميع التحذيرات.

-r --recursive
    التنقل في بنية الدليل بشكل متكرر. إذا كانت أي من أسماء الملفات المحددة في سطر الأوامر هي أدلة، فسوف ينزل gzip داخل الدليل ويضغط جميع الملفات التي يجدها هناك (أو يفك ضغطها في حالة gunzip).

-S .suf --suffix .suf
    عند الضغط، استخدم اللاحقة .suf بدلاً من .gz. يمكن إعطاء أي لاحقة غير فارغة، ولكن ينبغي تجنب اللاحقات غير .z و .gz لتفادي الالتباس عند نقل الملفات إلى أنظمة أخرى.

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

--synchronous
    استخدام مخرجات متزامنة. مع هذا الخيار، يقل احتمال فقدان gzip للبيانات أثناء تعطل النظام، ولكن يمكن أن يكون أبطأ بشكل ملحوظ.

-t --test
    اختبار. فحص سلامة الملف المضغوط ثم الخروج.

-v --verbose
    إسهاب. عرض الاسم ونسبة التقليص لكل ملف يُضغط أو يُفك ضغطه.

-V --version
    الإصدار. عرض رقم الإصدار وخيارات التجميع ثم الخروج.

-# --fast --best
    تنظيم سرعة الضغط باستخدام الرقم المحدد #, حيث يشير -1 أو --fast إلى أسرع طريقة ضغط (ضغط أقل) ويشير -9 أو --best إلى أبطأ طريقة ضغط (أفضل ضغط). مستوى الضغط المبدئي هو -6 (أي منحاز نحو الضغط العالي على حساب السرعة).

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

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

      gzip -c file1 > foo.gz
      gzip -c file2 >> foo.gz

ثم

      gunzip -c foo

يكافئ

      cat file1 file2

في حالة تلف عضو واحد من ملف .gz، لا يزال من الممكن استعادة الأعضاء الأخرى (إذا أُزيل العضو التالف). ومع ذلك، يمكنك الحصول على ضغط أفضل بضغط جميع الأعضاء دفعة واحدة:

      cat file1 file2 | gzip > foo.gz

يضغط بشكل أفضل من

      gzip -c file1 file2 > foo.gz

إذا أردت إعادة ضغط الملفات المدمجة للحصول على ضغط أفضل، فافعل:

      gzip -cd old.gz | gzip > new.gz

إذا كان ملف مضغوط يتكون من عدة أعضاء، فإن الحجم غير المضغوط و CRC اللذين يبلغ عنهما الخيار --list ينطبقان على العضو الأخير فقط. إذا كنت بحاجة إلى الحجم غير المضغوط لجميع الأعضاء، يمكنك استخدام:

      gzip -cd file.gz | wc -c

إذا كنت ترغب في إنشاء ملف أرشيف واحد بأعضاء متعددة بحيث يمكن استخراج الأعضاء لاحقًا بشكل مستقل، فاستخدم أداة أرشفة مثل tar أو zip. يدعم GNU tar الخيار -z لاستدعاء gzip بشكل شفاف. صُمم gzip ليكون مكملاً لـ tar، وليس بديلاً عنه.

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

يمكنك استخدام اسم مستعار أو سكربت بدلاً من ذلك. على سبيل المثال، إذا كان gzip في الدليل /usr/bin يمكنك إلحاق $HOME/bin بـ PATH الخاص بك وإنشاء سكربت قابل للتنفيذ $HOME/bin/gzip يحتوي على ما يلي:

      #! /bin/sh
      export PATH=/usr/bin
      exec gzip -9 "$@"

انظر أيضًا
znew(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1)

تنسيق ملف gzip محدد في P. Deutsch، مواصفات تنسيق ملف GZIP الإصدار 4.3، <https://www.ietf.org/rfc/rfc1952.txt>، Internet RFC 1952 (مايو 1996). تنسيق deflation لـ zip محدد في P. Deutsch، مواصفات تنسيق البيانات المضغوطة DEFLATE الإصدار 1.3، <https://www.ietf.org/rfc/rfc1951.txt>، Internet RFC 1951 (مايو 1996).

التشخيص
حالة الخروج عادةً هي 0؛ في حال حدوث خطأ، تكون حالة الخروج 1. إذا حدث تحذير، تكون حالة الخروج 2.

الاستخدام: gzip [-cdfhklLnNrtvV19] [-S اللاحقة] [ملف ...]
    حُددت خيارات غير صالحة في سطر الأوامر.

file: ليس بتنسيق gzip
    الملف المحدد لـ gunzip لم يُضغط.

file: دخل تالف.
    استخدم zcat لاستعادة بعض البيانات. الملف المضغوط تعرض للتلف. يمكن استعادة البيانات حتى نقطة الفشل باستخدام

          zcat file > recover

file: ضُغط بـ xx بت، يمكن التعامل مع yy بت فقط
    ضُغط الملف (باستخدام LZW) بواسطة برنامج يمكنه التعامل مع بتات أكثر من كود فك الضغط في هذه الآلة. أعد ضغط الملف باستخدام gzip، الذي يضغط بشكل أفضل ويستخدم ذاكرة أقل.

file: لديه بالفعل لاحقة .gz -- لم يتغير
    يُفترض أن الملف مضغوط بالفعل. أعد تسمية الملف وحاول مرة أخرى.

الملف file موجود بالفعل؛ هل ترغب في الكتابة فوقه (y أو n)؟
    أجب بـ "y" إذا كنت تريد استبدال ملف المخرجات؛ و "n" إذا لم ترد.

gunzip: دخل تالف
    اُكتشف انتهاك SIGSEGV، مما يعني عادةً أن ملف الإدخال قد تعرض للتلف.

xx.x% النسبة المئوية للدخل التي وُفرت بواسطة الضغط.
    (ذو صلة فقط بـ -v و -l.)

-- ليس ملفاً عادياً أو دليلاً: تُجُوهِلَ
    عندما لا يكون ملف الدخل ملفاً عادياً أو دليلاً، (مثل رابط رمزي، أو مقبس، أو FIFO، أو ملف جهاز)، فإنه يُترك دون تغيير.

-- لديه xx روابط أخرى: لم يتغير
    يحتوي ملف الدخل على روابط؛ لُترك دون تغيير. انظر ln(1) لمزيد من المعلومات. استخدم علامة -f لفرض ضغط الملفات ذات الروابط المتعددة.

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

العلل
في بعض الحالات النادرة، يعطي الخيار --best ضغطاً أسوأ من مستوى الضغط المبدئي (-6). في بعض الملفات ذات التكرار العالي، يضغط compress بشكل أفضل من gzip.

التبليغ عن الأخطاء
بلغ عن الأخطاء إلى: bug-gzip@gnu.org
الصفحة الرئيسية لـ GNU gzip: <https://www.gnu.org/software/gzip/>
مساعدة عامة لاستخدام برمجيات جنو: <https://www.gnu.org/gethelp/>

إشعار حقوق النشر
حقوق النشر © 1998–1999، 2001–2002، 2012، 2015–2023 مؤسسة البرمجيات الحرة، المحدودة.
حقوق النشر © 1992، 1993 Jean-loup Gailly

يُمنح الإذن لعمل وتوزيع نسخ حرفية من هذا الدليل بشرط الحفاظ على إشعار حقوق النشر وإشعار الإذن هذا في جميع النسخ.

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

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

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.