كيفية ضغط الملفات وفك ضغطها باستخدام Gzip على نظام Linux

نشرت: 2022-06-28
محطة لينكس على خلفية حمراء.
fatmawati achmad zaenuri / Shutterstock.com

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

ذات صلة: كيف يعمل ضغط الملفات؟

الخوارزميات والأشجار

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

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

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

المعيارية: ما هو أفضل تنسيق لضغط الملفات؟
ذات الصلة المعيارية: ما هو أفضل تنسيق لضغط الملفات؟

أضافت خوارزمية DEFLATE تطورًا مفاده أن السلاسل الأكثر تكرارًا تم تخصيصها لأصغر الرموز المميزة والسلاسل الأقل تكرارًا تم تخصيصها بسلاسل أكبر. تضمنت خوارزمية DEFLATE أيضًا أفكارًا من طريقتين للضغط سابقتين ، وهما ترميز Huffman وضغط LZ77.

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

4 طرق لتحرير مساحة القرص على نظام Linux
ذات صلة 4 طرق لتحرير مساحة القرص على لينكس

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

أمر gzip

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

ضغط ملف

لضغط ملف ، كل ما عليك فعله هو تمرير اسم الملف إلى الأمر gzip . سنتحقق من الحجم الأصلي للملف ، ونضغطه ، ثم نتحقق من حجم الملف المضغوط.

 ls -lh calc-sheet.ods
 gzip calc-sheet.ods
 ls -lh كال- * 

ضغط جدول البيانات

يبلغ حجم الملف الأصلي ، وهو جدول بيانات يسمى "calc-sheet.ods" 11 كيلوبايت ، والملف المضغوط - المعروف أيضًا باسم ملف الأرشيف - 9.3 كيلوبايت. لاحظ أن اسم ملف الأرشيف هو اسم الملف الأصلي مع إلحاق ".gz" به.

يستهدف أول استخدام للأمر ls ملفًا معينًا ، وهو جدول البيانات. يبحث الاستخدام الثاني لـ ls عن جميع الملفات التي تبدأ بـ "calc-" ولكنه يجد فقط الملف المضغوط. هذا لأنه ، بشكل افتراضي ، يقوم gzip بإنشاء ملف الأرشيف وحذف الملف الأصلي.

هذه ليست مشكلة. إذا كنت بحاجة إلى الملف الأصلي ، يمكنك استعادته من ملف الأرشيف. ولكن إذا كنت تفضل الاحتفاظ بالملف الأصلي ، فيمكنك استخدام الخيار -k (الاحتفاظ).

 gzip -k calc-sheet.ods
 ls -lh calc-sheet. * 

ضغط الملف والاحتفاظ بالملف الأصلي

هذه المرة يتم الاحتفاظ بملف ODS الأصلي.

فك ضغط ملف

لفك ضغط ملف أرشيف GZ ، استخدم الخيار -d (فك الضغط). سيؤدي هذا إلى استخراج الملف المضغوط من الأرشيف وفك ضغطه بحيث لا يمكن تمييزه عن الملف الأصلي.

 ls ورقة الكلس. *
 gzip -d calc-sheet.ods.gz
 ls ورقة الكلس. * 

فك ضغط ملف ببرنامج gzip

هذه المرة ، يمكننا أن نرى أن gzip قد حذف ملف الأرشيف بعد استخراج الملف الأصلي. للاحتفاظ بملف الأرشيف ، نحتاج إلى استخدام الخيار -k (keep) مرة أخرى ، وكذلك الخيار -d (فك الضغط).

 ls ورقة الكلس. *
 gzip -d calc-sheet.ods.gz
 ls ورقة الكلس. * 

فك ضغط ملف والاحتفاظ بملف الأرشيف

هذه المرة ، لا يحذف gzip ملف الأرشيف.

ذات صلة: لماذا يمكن استرداد الملفات المحذوفة ، وكيف يمكنك منع ذلك

فك الضغط والكتابة

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

 gzip -d نصي file.txt.gz 

استبدل المطالبة من gzip عندما يكون الملف في الأرشيف موجودًا بالفعل في الدليل

إذا كنت تعلم مسبقًا أنك سعيد بأن الملف في الدليل قد تم استبداله بالملف الموجود في الأرشيف ، فاستخدم الخيار -f (فرض).

 gzip -df نصي file.txt.gz 

فرض الكتابة فوق ملف موجود

يتم الكتابة فوق الملف ويتم إرجاعك بصمت إلى سطر الأوامر.

ضغط أشجار الدليل

يؤدي الخيار -r (العودي) إلى ضغط gzip للملفات في شجرة الدليل بالكامل. لكن النتيجة قد لا تكون كما تتوقع.

ها هي شجرة الدليل التي سنستخدمها في هذا المثال. يحتوي كل دليل على ملف نصي.

 مستوى الشجرة 1 

اختبار هيكل شجرة الدليل

دعنا نستخدم gzip في شجرة الدليل ونرى ما سيحدث.

 gzip -r المستوى 1 /
 مستوى الشجرة 1 

بنية الدليل بعد تشغيل gzip عليه

والنتيجة هي أن gzip قد أنشأ ملف أرشيف لكل ملف نصي في بنية الدليل. لم يقم بإنشاء أرشيف لشجرة الدليل بالكامل. في الواقع ، لا يمكن لـ gzip سوى وضع ملف واحد في أرشيف.

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

 tar -czvf level1.tar.gz level1

خيارات tar هي:

  • ج : إنشاء أرشيف.
  • z : دفع الملفات من خلال gzip .
  • v : وضع Verbose. اطبع في النافذة الطرفية ما يصل tar إليه.
  • f level1.tar.gz : اسم الملف المراد استخدامه لملف الأرشيف.

الناتج من القطران يشق طريقه عبر شجرة الدليل

يؤدي هذا إلى أرشفة بنية شجرة الدليل وجميع الملفات الموجودة داخل شجرة الدليل.

ذات صلة: كيفية ضغط الملفات واستخراجها باستخدام أمر tar على نظام Linux

الحصول على معلومات حول المحفوظات

يوفر الخيار -l (list) بعض المعلومات حول ملف الأرشيف. يعرض لك الأحجام المضغوطة وغير المضغوطة للملف في الأرشيف ، ونسبة الضغط ، واسم الملف.

 gzip -l leve1.tar.gz
 gzip -l text-file.txt.gz 

استخدام خيار القائمة -l لمشاهدة إحصائيات الضغط للأرشيف

يمكنك التحقق من سلامة ملف الأرشيف باستخدام الخيار -t (اختبار).

 gzip -t level1.tar.gz 

اختبار أرشيف بخيار -t

إذا كان كل شيء على ما يرام ، يتم إرجاعك بصمت إلى سطر الأوامر. لا أخبار أخبار جيدة.

إذا كان الأرشيف تالفًا أو ليس أرشيفًا يتم إخبارك به.

 gzip -t not-an-archive.gz 

استخدام الخيار -t لاختبار ملف ليس أرشيفًا

السرعة مقابل الضغط

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

ما لم تقدم أحد هذه الخيارات ، يستخدم gzip -6 .

 gzip -1 احسب الورقة
 ls -lh calc-sheet.ods.gz
 gzip -9 calc-sheet.ods
 ls -lh calc-sheet.ods.gz
 gzip -6 calc-sheet.ods
 ls -lh calc-sheet.ods.gz 

استخدام gzip مع أولويات مختلفة للسرعة والضغط

مع ملف صغير مثل هذا ، لم نلاحظ أي اختلاف كبير في سرعة التنفيذ ، ولكن كان هناك اختلاف بسيط في الضغط.

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

مضغوط ، غير محمي

لا تخطئ في الضغط على أنه تشفير أو أي شكل من أشكال الحماية. لا يمنح ضغط الملف أي أمان أو خصوصية محسّنة. يمكن لأي شخص لديه حق الوصول إلى ملفك استخدام gzip لفك ضغطه.

ذات صلة: قم بإدراج أكبر 10 ملفات أو أدلة على نظام Linux