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

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

🌍
gzip، gunzip، zcat - ضغط أو فك ضغط الملفات

ملخص

gzip [ -acdfhklLnNrtvV19 ] [-S suffix] [ اسم ... ]
gunzip [ -acfhklLnNrtvV ] [-S suffix] [ اسم ... ]
zcat [ -fhLV ] [ اسم ... ]

الوصف

يقوم الأمر gzip بتقليل حجم الملفات المحددة باستخدام ترميز Lempel-Ziv (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 من الطول غير المضغوط. لم يتم تصميم تنسيق الضغط القياسي للسماح بإجراء فحوصات للاتساق. ومع ذلك، يمكن للأمر 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 خوارزمية Lempel-Ziv المستخدمة في zip و PKZIP. تعتمد كمية الضغط التي يتم الحصول عليها على حجم الإدخال وتوزيع السلاسل الفرعية الشائعة. عادةً، يتم تقليل النص مثل التعليمات البرمجية المصدر أو اللغة الإنجليزية بنسبة 60-70٪. الضغط أفضل بكثير بشكل عام من الضغط الذي يتم تحقيقه بواسطة LZW (كما هو مستخدم في compress) أو ترميز Huffman (كما هو مستخدم في pack) أو ترميز Huffman التكيفي (compact).

يتم إجراء الضغط دائمًا، حتى إذا كان الملف المضغوط أكبر قليلاً من الملف الأصلي. في أسوأ الحالات، يتوسع الملف بمقدار بضعة بايت لرأس ملف gzip، بالإضافة إلى 5 بايت لكل كتلة 32 كيلو بايت، أو نسبة توسع تبلغ 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 -H)، و pack. يُعطى رمز CRC كـ ffffffff لملف ليس بتنسيق gzip.

باستخدام --name، يكون اسم الملف غير المضغوط والتاريخ والوقت هما الموجودان داخل الملف المضغوط، إذا كانا موجودين.

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

-L --license
يعرض ترخيص gzip ويخرج.

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

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

-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 إلى مسار التنفيذ الخاص بك وإنشاء برنامج نصي قابل للتنفيذ $HOME/bin/gzip يحتوي على ما يلي:

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

انظر أيضًا

^ new(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1)

يتم تحديد تنسيق ملف gzip في P. Deutsch, GZIP file format specification version 4.3, [https://www.ietf.org/rfc/rfc1952.txt], Internet RFC 1952 (May 1996). يتم تحديد تنسيق ضغط zip في P. Deutsch, DEFLATE Compressed Data Format Specification version 1.3, [https://www.ietf.org/rfc/rfc1951.txt], Internet RFC 1951 (May 1996).

تشخيص الأخطاء

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

Usage: gzip [-cdfhklLnNrtvV19] [-S suffix] [file ...]
Invalid options were specified on the command line.
file: not in gzip format

تم تحديد أن الملف المحدد لـ gunzip لم يتم ضغطه.

file: Corrupt input.

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

zcat file > recover
file: compressed with xx bits, can only handle yy bits

تم ضغط الملف (باستخدام LZW) بواسطة برنامج يمكنه التعامل مع عدد أكبر من البتات من التعليمات البرمجية لفك الضغط على هذا الجهاز. أعد ضغط الملف باستخدام gzip، والذي يضغط بشكل أفضل ويستخدم ذاكرة أقل.

file: already has .gz suffix -- unchanged

يُفترض أن الملف مضغوط بالفعل. أعد تسمية الملف وحاول مرة أخرى.

file already exists; do you wish to overwrite (y or n)?

استجب بـ "y" إذا كنت تريد استبدال ملف الإخراج؛ "n" إذا لم يكن كذلك.

gunzip: corrupt input

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

xx.x%

النسبة المئوية للإدخال التي تم توفيرها عن طريق الضغط. (ذو صلة فقط مع -v و -l.)

-- not a regular file or directory: ignored

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

-- has xx other links: unchanged

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

تحذيرات

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


الأخطاء

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

الإبلاغ عن الأخطاء

أرسل الأخطاء إلى: _ الصفحة الرئيسية لـ GNU gzip: [https://www.gnu.org/software/gzip/] المساعدة العامة في استخدام برامج GNU: [https://www.gnu.org/gethelp/]

إشعار حقوق النشر

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

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

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

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