تنسيق أرشيف GZIP
GZIP هو تنسيق ملف شائع وتطبيق برمجي يستخدم لضغط الملفات وإلغاء ضغطها. تم تطويرها كخوارزمية ضغط مجانية ومفتوحة المصدر بواسطة جان لوب جيلي ومارك أدلر في أوائل التسعينيات. الاسم “GZIP” يرمز إلى GNU ZIP، مما يشير إلى ارتباطه بمشروع GNU.
يعمل ضغط GZIP عن طريق تقليل حجم الملفات، مما يسهل نقلها عبر الشبكات أو تخزينها على القرص. فهو يحقق الضغط عن طريق استبدال سلاسل البيانات المتكررة بالمراجع، وبالتالي تقليل التكرار وحجم الملف الإجمالي. يُعد GZIP فعالًا بشكل خاص في ضغط الملفات النصية مثل HTML وCSS وJavaScript وXML وJSON، ولكن يمكن استخدامه أيضًا لضغط أنواع أخرى من الملفات.
حول معلومات أرشيف GZIP
تشير معلومات أرشيف GZIP إلى البيانات التعريفية والبيانات الموجودة داخل ملف مضغوط باستخدام خوارزمية ضغط GZIP. تتضمن أرشيفات GZIP عادةً معلومات مثل سمات الملف والطوابع الزمنية وطريقة الضغط والبيانات الأخرى ذات الصلة اللازمة لإلغاء الضغط واستعادة الملف. تعتبر هذه البيانات التعريفية ضرورية لتحديد الملفات المضغوطة ومعالجتها بشكل صحيح.
بالإضافة إلى ذلك، قد تتضمن معلومات أرشيف GZIP أيضًا تفاصيل حول عملية الضغط نفسها، مثل مستوى الضغط والمجاميع الاختبارية وأي علامات أو خيارات إضافية تستخدم أثناء الضغط. تعتبر هذه المعلومات ضرورية لضمان سلامة وصحة البيانات المضغوطة عند فك ضغطها. بشكل عام، يعد فهم معلومات أرشيف GZIP أمرًا حيويًا لإدارة الملفات المضغوطة والعمل معها بشكل فعال، سواء لتخزين البيانات أو النقل عبر الشبكات أو لأغراض الأرشفة.
تطور تنسيق أرشيف GZIP
تعود جذور تنسيق أرشيف GZIP إلى أواخر الثمانينيات عندما قام جان لوب جيلي ومارك أدلر بتطوير خوارزمية ضغط GZIP كجزء من مشروع GNU. GZIP يرمز إلى GNU ZIP، مما يعكس أصوله داخل مشروع GNU. كان الهدف هو إنشاء أداة ضغط يمكنها تقليل حجم الملفات بكفاءة مع الحفاظ على التوافق عبر أنظمة الكمبيوتر المختلفة.
قام جان لوب جيلي ومارك أدلر بتطوير البرنامج كبديل مجاني لأداة الضغط الموجودة في أنظمة يونكس المبكرة. لقد تم تصميمه ليكون جزءًا من مشروع GNU، ومن هنا جاء الحرف “g” في gzip. أصبح الإصدار الأولي، الإصدار 0.1، متاحًا للجمهور في 31 أكتوبر 1992، وتلاه الإصدار 1.0 في فبراير 1993.
هيكل جي زيب
يستخدم GZIP خوارزمية DEFLATE، التي تدمج تقنيات الترميز LZ77 وHuffman. تم تطوير DEFLATE ليحل محل LZW وخوارزميات الضغط الأخرى المثقلة ببراءات الاختراع، مما قيد فعالية الضغط وأدوات الأرشفة المماثلة السائدة في ذلك الوقت. يتبع تنسيق ملف GZIP بنية محددة جيدًا تتكون من ثلاثة أجزاء رئيسية:
- الرأس (10 بايت): يقدم هذا القسم معلومات أساسية عن الأرشيف ومحتوياته. وفيما يلي تفصيل لبيانات الرأس
- الرقم السحري (4 بايت): يحدد هذا الملف باعتباره أرشيف GZIP. لها قيمة سداسية عشرية محددة (1f 8b) تتعرف عليها أدوات إلغاء الضغط.
- طريقة الضغط (1 بايت): يحمل هذا البايت عادةً القيمة 8، مما يشير إلى خوارزمية الضغط DEFLATE التي يستخدمها GZIP.
- علامات الرؤوس (1 بايت): تتحكم هذه العلامات في جوانب محددة من عملية إلغاء الضغط، مثل تشفير اسم الملف أو وجود تعليق.
- وقت الإنشاء (4 بايت): يخزن هذا القسم طابعًا زمنيًا لنظام Unix يشير إلى وقت إنشاء الأرشيف.
- CRC-32 (4 بايت): يتم استخدام قيمة التحقق من التكرار الدوري لاكتشاف الأخطاء أثناء إلغاء الضغط. يتم حسابه بناءً على البيانات غير المضغوطة ويسمح لبرنامج فك الضغط بالتحقق من سلامة الملفات المستخرجة.
فوائد هذا التنسيق
- الضغط بدون فقدان البيانات: يقوم GZIP بضغط البيانات دون فقدان أي معلومات. على عكس بعض تقنيات الضغط، يمكن إعادة بناء الملفات الأصلية بشكل مثالي بعد فك الضغط. يعد هذا أمرًا بالغ الأهمية بالنسبة للمستندات أو الصور أو التعليمات البرمجية المهمة حيث يكون الحفاظ على سلامة البيانات أمرًا ضروريًا.
- توافق واسع النطاق: إحدى أكبر نقاط قوة GZIP هي اعتماده على نطاق واسع. وهو مدعوم من قبل معظم أنظمة التشغيل وأدوات الأرشفة المساعدة (WinRAR و7-Zip) وخوادم الويب. وهذا يضمن أنه يمكنك بسهولة فتح ملفات GZIP على منصات مختلفة دون الحاجة إلى برامج محددة. كما يتم دعم GZIP على نطاق واسع عبر أنظمة التشغيل المختلفة، بما في ذلك الأنظمة المستندة إلى Unix وLinux وWindows وmacOS. يضمن هذا التوافق عبر الأنظمة الأساسية إمكانية إنشاء الملفات المضغوطة باستخدام GZIP وفك ضغطها بسلاسة عبر بيئات مختلفة.
- الضغط القابل للتدفق: يدعم GZIP ضغط التدفق، مما يسمح بضغط الملفات أو فك ضغطها بسرعة دون الحاجة إلى الانتظار حتى تتم معالجة الملف بأكمله. وهذا يجعلها مناسبة للسيناريوهات التي يتم فيها إنشاء البيانات أو نقلها بشكل مستمر، مثل اتصالات الشبكة وعمليات النسخ الاحتياطي للبيانات.
- المعيار المفتوح: يعد GZIP معيارًا مفتوحًا ومعتمدًا على نطاق واسع لضغط الملفات، وتتوفر مواصفاته للعامة. يشجع هذا الانفتاح قابلية التشغيل البيني والتوافق بين تطبيقات وأنظمة البرامج المختلفة، مما يعزز النظام البيئي النابض بالحياة من الأدوات والمكتبات للعمل مع الملفات المضغوطة بـ GZIP. يعد استخدام GZIP أمرًا بسيطًا بشكل عام. تقوم العديد من الأدوات والبرامج تلقائيًا بضغط الملفات بهذا التنسيق أو فك ضغطها. بالإضافة إلى ذلك، فإن عملية إلغاء الضغط تتسم بالكفاءة وتتطلب الحد الأدنى من الموارد.
أرشيف GZIP العمليات المدعومة
Aspose.ZIP يسمح للمستخدم باستخراج إما إدخال معين أو أرشيف كامل. بالنسبة إلى Aspose.ZIP for .NET، يمكنك استخدام GzipArchiveClass لفتح ملف .gz ثم تكرار إدخالاته واستخراجها إلى الموقع المطلوب. بالنسبة إلى Aspose.ZIP for Java، هناك طريقة مماثلة باستخدام GzipArchive لفتح ملف .gz واستخراج الإدخالات.
ملف GZIP - البنية الداخلية
يشبه أرشيف GZIP حزمة ملفوفة بدقة. يبدأ برأس 10 بايت يقدم التنسيق وطريقة الضغط. يكمن القلب في قسم البيانات المضغوطة، والتي تم تقليصها باستخدام خوارزميات ذكية. وأخيرًا، يتحقق التذييل ذو 8 بايت من سلامة البيانات من خلال المجاميع الاختبارية، مما يضمن وصول ملفاتك بأمان بعد فك الضغط.
هيكل الأرشيف الداخلي
- بيانات تعريف الملف - على غرار أرشيف tar، يقوم كل ملف بتخزين المعلومات الأساسية مثل وقت التعديل والأذونات. ومع ذلك، فإن هذا القسم مرن ويسمح بحذف أو تضمين تفاصيل إضافية مثل قوائم التحكم في الوصول (ACLs) أو السمات الموسعة (EAs) بناءً على احتياجاتك. يوصى بتضمين وظيفة تجزئة قوية (مثل SHA1) للملفات العادية لضمان سلامة البيانات.
- تدفقات محتوى متعددة - على عكس الأرشيفات التقليدية، يمكن أن تحتوي الملفات على أكثر من تدفق بيانات واحد داخل ملف البيانات الداخلي. يعد هذا مفيدًا لتخزين السمات الموسعة أو تشعبات الموارد المرتبطة بالملف.
- الرؤوس - يحتوي ملف الفهرس الداخلي على رؤوس الملفات، مما يعكس تلك المنتشرة في ملف البيانات الداخلي. ولكن، عند تخزينها بشكل منفصل، يجب أن تشير رؤوس الفهرس إلى موضع البداية للبيانات المقابلة لها داخل ملف البيانات. بالإضافة إلى ذلك، تسرد إدخالات الدليل في الفهرس ملفاتها المضمنة والإزاحات المقابلة لها داخل فهرس الملفات الداخلي.
- الأساس المنطقي لتكرار البيانات الوصفية - يضمن اختيار التصميم هذا تدفق/فك تشفير البيانات بشكل فعال والوصول العشوائي إلى الملفات. بالإضافة إلى ذلك، يتم ضغط بيانات التعريف بشكل جيد، مما يؤدي إلى الحد الأدنى من الحمل الزائد للتخزين. تظهر الاختبارات أن البيانات الوصفية تشغل عادة أقل من 0.3% من مساحة التخزين، مما يجعل المقايضة جديرة بالاهتمام.
- رؤوس الكتل - تحتوي رؤوس الكتل، المشابهة للملف الخارجي، على معلومات حجم الكتلة وتسلسل معرف فريد.
أمثلة على استخدام GZIP
يتيح Aspose.ZIP API استخراج الأرشيفات في تطبيقاتك دون الحاجة إلى أي تطبيقات أخرى تابعة لجهات خارجية. يوفر Aspose.ZIP API فئة GzipArchive للعمل مع أرشيفات GZIP.
GZIP with compress only single source via C#
Such archives like GZIP, LZ, BZIP2, XZ, Z do not support entries and can compress only single source. See samples with such a compression.
using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (GzipArchive archive = new GzipArchive())
{
archive.SetSource(source);
archive.Save(«archive.gz”);
}
}
معلومات إضافية حول أرشيفات GZIP
لقد كان الناس يسألون
1. ما هو جي زيب؟
يعد GZIP (أرشيف GNU المضغوط) أحد تنسيقات الملفات الشائعة التي تعمل على تقليص حجم الملفات لتسهيل تخزينها ونقلها.
2. كيف يمكن مقارنة ضغط GZIP بالتنسيقات الأخرى مثل ZIP؟
يقدم GZIP عادة نسب ضغط أعلى مقارنة بـ ZIP، خاصة عند ضغط الملفات النصية. ومع ذلك، غالبًا ما تتضمن أرشيفات ZIP دعمًا لملفات وأدلة متعددة، مما يجعلها أكثر تنوعًا لتعبئة ملفات متعددة معًا.
3. هل يمكن لـ GZIP ضغط ملفات متعددة في أرشيف واحد؟
تم تصميم GZIP لضغط ملف واحد، وليس عدة ملفات أو أدلة. ومع ذلك، فمن الشائع استخدام أدوات مثل tar مع GZIP لإنشاء ملف tarball tar archive ثم ضغطه باستخدام GZIP لإنشاء ملف مضغوط واحد ملف.