gzip

gzip هو تنسيق ملفات وبرنامج لضغط الملفات . يستخدم البرنامج خوارزمية Deflate لضغط وفك ضغط ملف واحد باستخدام تنسيق ملف gzip .

أُصدر برنامج gzip عام 1992 كبديل مجاني لبرنامج compress ، وذلك لأن خوارزمية الضغط الخاصة به، LZW ، كانت محمية ببراءات اختراع من شركتي Unisys و IBM ، [ 4 ] والتي لم تنتهِ صلاحيتها حتى عامي 2003 و2004. [ 5 ] صمم جان لوب غايلي تنسيق ملف gzip، [ 6 ] والذي تم تحديده لاحقًا في RFC 1952، [ 7 ] وهو من كتب برنامج gzip في الأصل. أما مارك أدلر فقد كتب جزء فك الضغط. ويتولى مشروع GNU حاليًا تطوير gzip . [ 8 ]

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

تنسيق الملف

يمكن دمج برنامج gzip مع برنامج tar لضغط ملفات متعددة.

يتكون ملف gzip (الموضح في الجدول أدناه) من رأس بحجم 10 بايت ، وحقول رأس إضافية اختيارية، وبيانات مضغوطة باستخدام Deflate ، وذيل بحجم 8 بايت .

على الرغم من إمكانية دمج عدة ملفات (حيث يتم فك ضغط الملفات المضغوطة باستخدام gzip ودمجها كما لو كانت ملفًا واحدًا في الأصل)، [ 10 ] إلا أنه عادةً ما يتم ضغط ملف واحد فقط. [ 11 ] تُنشأ الأرشيفات المضغوطة عادةً بتجميع مجموعات من الملفات في أرشيف tar واحد (يُسمى أيضًا tarball[ 12 ] ثم ضغط هذا الأرشيف باستخدام gzip. عادةً ما يكون للملف المضغوط النهائي الامتداد .tar.gz.tar .tgzأو .gz.tar أو .gzip.tar.

لا ينبغي الخلط بين gzip وصيغة ZIP للأرشيف، التي تستخدم أيضًا DEFLATE . يمكن لصيغة ZIP استيعاب مجموعات من الملفات دون الحاجة إلى برنامج أرشفة خارجي، لكنها أقل كثافة من ملفات tar المضغوطة التي تحتوي على نفس البيانات، لأنها تضغط الملفات بشكل فردي ولا تستفيد من التكرار بين الملفات ( الضغط الصلب ). كما لا ينبغي الخلط بين صيغة ملف gzip وصيغة أداة الضغط، المبنية على LZW، مع الامتداد .gzip .Z؛ ومع ذلك، فإن أداة gunzip قادرة على فك ضغط .Zالملفات. [ 13 ]

بنية الملفات

نظام Endianness هو نظام صغير النهاية . [ 14 ]

الإزاحة (بايت)الحقل [ 15 ]الحجم (بايت)وصف
0ID11رقم سحري . لا بد أن يكون كذلك1F 8B.
1ID21
2سي إم1طريقة الضغط . يجب أن تكون 8  (تفريغ الهواء).
3FLG1الأعلام . يجب أن تكون البتات المحجوزة صفرًا.
  • البت 0 ( LSb ): FTEXT. يتم تعيينه بواسطة برنامج الضغط للإشارة إلى أن ترميز الملف ربما يكون ASCII .
  • الجزء 1 :FHCRC
  • الجزء 2 :FEXTRA
  • الجزء 3 :FNAME
  • الجزء 4 :FCOMMENT
  • البت 5 : محجوز
  • البت 6 : محجوز
  • البت 7 ( MSb ): محجوز
4إم تايم4وقت يونكس عند آخر تعديل للملف . إذا لم تكن البيانات المضغوطة من ملف، MTIMEفهذا هو وقت يونكس عند بدء الضغط . 0 يعني عدم توفر طابع زمني .
8دوري إكس إف إل1أعلام إضافية .
  • علامات خاصة بالتفريغ.
    • 0 : لا شيء ( القيمة الافتراضية )
    • 2 : أفضل ضغط (المستوى 9)
    • 4 : أسرع ضغط (المستوى 1)
9نظام التشغيل1نظام الملفات الذي تم عليه الضغط.
10إكسلين0 أو 2الحقل الإضافي عبارة عن سلسلة من الحقول الفرعية. XLENيُمثل حجم الحقل الإضافي بالبايت. كلاهما موجود إذا تم ضبط علامة FEXTRASI1 SI2 . يبدأ كل حقل فرعي بـ (معرّف ثنائي البايت؛ عادةً حرفان ASCII مع قيمة رمزية ) متبوعًا بقيمة ثنائية البايت LENتُشير إلى عدد البايتات المتبقية في الحقل الفرعي. معرّفات الحقول الفرعية التي تحتوي على SI2 = 0محجوزة للاستخدام المستقبلي.
12حقل إضافيصفر أوXLEN
يختلفاسم الملفصفر أو يختلفاسم الملف المضغوط (منتهي بـ NULL) . يظهر هذا الحقل إذا تم تحديد علامة FNAME . مُشفّر وفقًا لمعيار ISO 8859-1latin-1 . يُحوّل إلى أحرف صغيرة في أنظمة الملفات غير الحساسة لحالة الأحرف . يكون فارغًا إذا لم تكن البيانات المضغوطة من ملف مُسمى.
تعليق الملفصفر أو يختلفتعليق ملف ينتهي بحرف فارغ، مُعدّ للاستخدام البشري. يظهر هذا التعليق إذا تم ضبط علامة FCOMMENTlatin-1 . مُشفّر وفقًا لمعيار ISO 8859-1 . يجب أن تستخدم أسطر جديدة حرف سطر جديد واحد (LF).
CRC160 أو 2أقل بايتين أهمية من قيمة CRC-32 (ISO 3309) لجميع البايتات في ملف gzip حتى هذا الحقل (باستثناء هذا الحقل). يُفعّل هذا الخيار إذا تم ضبط علامة FHCRC .
البيانات المضغوطةيختلفتفريغ التيار .
CRC324CRC-32 (ISO 3309) للبيانات غير المضغوطة .
المقاس4حجم البيانات غير المضغوطة (بالبايت) modulo232{\displaystyle 2^{32}}.

التطبيقات

كُتبت العديد من تطبيقات البرنامج. أشهرها تطبيق مشروع جنو باستخدام ترميز ليمبل-زيف (LZ77). نسخة OpenBSD من gzip هي في الواقع برنامج الضغط ، الذي أُضيفت إليه ميزة دعم صيغة gzip في OpenBSD 3.4. يشير الحرف "g" في هذه النسخة تحديدًا إلى كلمة gratis (مجاني ). [ 16 ] تستخدم أنظمة FreeBSD و DragonFly BSD و NetBSD تطبيقًا مرخصًا بموجب رخصة BSD بدلًا من نسخة جنو؛ وهو في الواقع واجهة سطر أوامر لمكتبة zlib مصممة لتكون متوافقة مع خيارات تطبيقات جنو. [ 17 ] هذه التطبيقات أصلها من NetBSD ، وتدعم فك ضغط bzip2 وصيغة حزمة Unix .

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

pigzبرنامج gzip، الذي كتبه مارك أدلر، متوافق مع gzip ويعمل على تسريع عملية الضغط باستخدام جميع أنوية وخيوط وحدة المعالجة المركزية المتاحة. [ 18 ]

استرداد الأضرار

عادةً ما تكون البيانات الموجودة في الكتل قبل الجزء التالف الأول من الأرشيف قابلة للقراءة بالكامل. أما البيانات الموجودة في الكتل التي لم تتأثر بالتلف والتي تقع بعد ذلك، فقد يكون من الممكن استعادتها من خلال حلول بديلة معقدة. [ 19 ]

المشتقات والاستخدامات الأخرى

تتيح أداة tar المضمنة في معظم توزيعات لينكس استخراج ملفات .tar.gz باستخدام الخيار z ، على سبيل المثال، tar -zxf file.tar.gz ، حيث يشير الخيار z إلى فك الضغط، وz إلى الاستخراج، و z إلى اسم ملف الأرشيف المضغوط المراد استخراج الملفات منه. ويمكن استخدام الخيار ( verbose ) لعرض قائمة بالملفات أثناء استخراجها. [ 20 ]-z-x-f-v

تدعم مكتبة zlib تنسيق ملف gzip. [ 21 ]

يُستخدم تنسيق gzip في ضغط HTTP ، وهي تقنية تُستخدم لتسريع إرسال HTML والمحتوى الآخر على شبكة الإنترنت العالمية . وهو أحد التنسيقات القياسية الثلاثة لضغط HTTP كما هو مُحدد في RFC 2616. يُحدد هذا RFC أيضًا تنسيق zlib (يُسمى "DEFLATE")، وهو مُكافئ لتنسيق gzip باستثناء أن gzip يُضيف أحد عشر بايتًا من البيانات الإضافية على شكل رؤوس وتذييلات. ومع ذلك، يُوصى أحيانًا باستخدام تنسيق gzip بدلًا من zlib لأن متصفح Internet Explorer لا يُطبق المعيار بشكل صحيح ولا يُمكنه التعامل مع تنسيق zlib كما هو مُحدد في RFC 1950. [ 22 ]

منذ أواخر التسعينيات، اكتسب برنامج bzip2 ، وهو أداة لضغط الملفات تعتمد على خوارزمية فرز الكتل، شعبيةً كبديل لبرنامج gzip. ينتج هذا البرنامج ملفات أصغر حجمًا بشكل ملحوظ (خاصةً لشفرة المصدر والنصوص المنظمة الأخرى)، ولكن على حساب الذاكرة ووقت المعالجة (بنسبة تصل إلى أربعة أضعاف). [ 23 ]

يمكن لبرامج AdvanceCOMP و Zopfli و libdeflate و 7-Zip إنتاج ملفات متوافقة مع gzip، باستخدام تطبيق DEFLATE داخلي بنسب ضغط أفضل من gzip نفسه - على حساب وقت معالج أكبر مقارنة بالتطبيق المرجعي.

أظهرت دراسة نُشرت عام ٢٠٢٣ أن تقنيات الضغط البسيطة غير الفاقد للبيانات، مثل gzip، يُمكن دمجها مع مُصنِّف الجوار الأقرب k لإنشاء بديل جذاب للشبكات العصبية العميقة في تصنيف النصوص ضمن معالجة اللغة الطبيعية . وقد ثبت أن هذا النهج يُعادل، بل ويتفوق في بعض الحالات، على الأساليب التقليدية مثل BERT، وذلك بفضل متطلباته المنخفضة من الموارد، مثل عدم الحاجة إلى وحدة معالجة رسومية (GPU ). [ ٢٤ ]

انظر أيضاً

مراجع

  1. جيم مايرينغ (9 أبريل 2025). "إصدار gzip-1.14 [ مستقر ] " . تم الاطلاع عليه بتاريخ 10 أبريل 2025 .
  2. "حول إمكانات ضغط رسائل V2X لشبكات المركبات" . IEEE Access : 14. doi : 10.1109/ACCESS.2020.3041688 رقم المرجع [20] "وثائق GNU: Gzip"{{cite journal}}: CS1 maint: postscript ( link )
  3. "Gzip - مشروع جنو" . مؤرشف من الأصل في 5 مايو 2025. للاطلاع على مصادر التطوير ومعلومات أخرى، يرجى زيارة صفحة مشروع Gzip على savannah.gnu.org.
  4. "Gzip - مشروع جنو" . مؤرشف من الأصل في 5 مايو 2025. قمنا بتطوير هذا البرنامج كبديل لبرنامج compress بسبب براءات اختراع Unisys وIBM التي تغطي خوارزمية LZW المستخدمة بواسطة compress.
  5. "Unisys | LZW Patent and Software Information" . مؤرشف من الأصل في 26 يونيو 2009. انتهت صلاحية براءة اختراع Unisys US LZW رقم 4,558,302 في 20 يونيو 2003، وانتهت صلاحية براءات الاختراع المقابلة في المملكة المتحدة وفرنسا وألمانيا وإيطاليا في 18 يونيو 2004، وانتهت صلاحية براءات الاختراع اليابانية المقابلة في 20 يونيو 2004، وانتهت صلاحية براءة الاختراع الكندية المقابلة في 7 يوليو 2004.
  6. شكر وتقدير . IETF . ص 10. doi : 10.17487/RFC1952 . RFC 1952. قام جان لوب غايلي بتصميم تنسيق gzip و ...  
  7. مواصفات تنسيق ملف GZIP الإصدار 4.3 . IETF . doi : 10.17487/RFC1952 . RFC 1952 .
  8. "Gzip - مشروع جنو" . مؤرشف من الأصل في 5 مايو 2025. برنامج Gzip من جنو هو برنامج ضغط بيانات شائع، كتبه في الأصل جان لوب غايلي لمشروع جنو. كتب مارك أدلر جزء فك الضغط.
  9. أنواع الوسائط 'application/zlib' و'application/gzip' . فريق عمل هندسة الإنترنت. doi : 10.17487/RFC6713 . RFC 6713. تاريخ الاسترجاع: 1 مارس 2014 .
  10. "GNU Gzip: الاستخدام المتقدم" . Gnu.org . مؤرشف من الأصل في 24 ديسمبر 2012. تم الاطلاع عليه في 28 نوفمبر 2012 .
  11. "هل يمكن لبرنامج gzip ضغط عدة ملفات في أرشيف واحد؟" . Gnu.org . مؤرشف من الأصل في 22 يوليو 2010. تم الاطلاع عليه في 27 يناير 2010 .
  12. "tarball, The Jargon File, version 4.4.7" . Catb.org . مؤرشف من الأصل في 20 مارس 2017. تم الاطلاع عليه في 27 يناير 2010 .
  13. "GNU Gzip" . نظام تشغيل جنو وحركة البرمجيات الحرة . 5 فبراير 2023. تاريخ الاطلاع: 3 أبريل 2024. يمكن لبرنامج gunzip حاليًا فك ضغط الملفات التي تم إنشاؤها بواسطة gzip أو zip أو compress أو pack. يتم الكشف عن تنسيق الإدخال تلقائيًا.
  14. الاتفاقيات العامة . IETF . ص 4. doi : 10.17487/RFC1952 . RFC 1952. يتم تخزين جميع الأرقام متعددة البايتات بالتنسيق الموضح هنا مع وضع البايت الأقل أهمية أولاً (في عنوان الذاكرة الأدنى) . 
  15. تنسيق العضو . IETF . ص 5. doi : 10.17487/RFC1952 . RFC 1952 . 
  16. "صفحة دليل استخدام gzip(1) في OpenBSD" . Openbsd.org . OpenBSD . تم الاطلاع عليه بتاريخ 4 فبراير 2018 .
  17. "gzip" . Man.freebsd.org. 9 أكتوبر 2011. مؤرشف من الأصل في 17 ديسمبر 2019. تم الاطلاع عليه في 1 مارس 2014 .
  18. مارك أدلر (2017). "pigz: تطبيق متوازٍ لـ gzip للأجهزة الحديثة متعددة المعالجات والأنوية" . zlib.net . مؤرشف من الأصل في 18 ديسمبر 2018. تم الاطلاع عليه في 23 ديسمبر 2018 .
  19. استعادة ملف .gz تالف – جان لوب غايلي، GZip.org
  20. "كيفية استخراج/فك ضغط ملفات tar.gz من سطر أوامر لينكس" . قاعدة المعرفة من phoenixNAP . ١٤ نوفمبر ٢٠١٩. تم الاطلاع عليه بتاريخ ١٢ يناير ٢٠٢٢ .
  21. "دليل استخدام zlib 1.3.1" . مقدمة. مؤرشف من الأصل بتاريخ 8 فبراير 2024. تم الاطلاع عليه بتاريخ 8 فبراير 2024. تدعم المكتبة أيضًا قراءة وكتابة الملفات بصيغة gzip (.gz) ... 
  22. لورانس، إريك (21 نوفمبر 2014). "ضغط الويب" . مدونات MSDN > IEInternals . مايكروسوفت . مؤرشف من الأصل في 28 أكتوبر 2015. تم الاطلاع عليه في 2 نوفمبر 2015 .
  23. "أداة مقارنة: 7-zip مقابل bzip2 مقابل gzip" . compressionratings.com . مؤرشف من الأصل في 1 نوفمبر 2014. تم الاطلاع عليه في 1 نوفمبر 2014 .
  24. ^ جيانغ، تشي يينغ؛ يانغ ماثيو. تسيرلين، ميخائيل؛ تانغ، رافائيل. داي، يتشين؛ لين جيمي (يوليو 2023). "تصنيف النصوص "ذات الموارد المحدودة": طريقة تصنيف لا تعتمد على المعلمات باستخدام أدوات الضغط . نتائج مؤتمر رابطة اللغويات الحاسوبية: ACL 2023. تورنتو، كندا: رابطة اللغويات الحاسوبية: 6810-6828 . doi : 10.18653/v1/2023.findings-acl.426 . S2CID 260668487 .