كيفية ضغط الملفات وفك ضغطها باستخدام Gzip على نظام Linux
نشرت: 2022-06-28 هناك العديد من الأدوات المساعدة لضغط الملفات ، ولكن الأداة التي تضمن العثور عليها في كل توزيعة Linux هي gzip
. إذا تعلمت استخدام أداة ضغط واحدة فقط ، فيجب أن تكون gzip
.
ذات صلة: كيف يعمل ضغط الملفات؟
الخوارزميات والأشجار
تمت كتابة أداة ضغط بيانات gzip
في أوائل التسعينيات ، ولا تزال موجودة في كل توزيعات Linux. هناك أدوات ضغط أخرى متاحة ، ولكن بغض النظر عن كمبيوتر Linux الذي تجد نفسك بحاجة إلى العمل عليه ، ستجد gzip
عليه. لذلك إذا كنت تعرف كيفية استخدام gzip
، فأنت على ما يرام دون الحاجة إلى تثبيت أي شيء.
gzip
هو تطبيق لخوارزمية DEFLATE التي اخترعها - وحصل على براءة اختراع - بواسطة Phil Katz من شهرة PKZIP. تم تحسين خوارزمية DEFLATE على خوارزميات الضغط السابقة والتي تعمل جميعها على أشكال مختلفة من الموضوع. يتم فحص البيانات المراد ضغطها ، ويتم تحديد سلاسل فريدة وإضافتها إلى شجرة ثنائية.
يتم تخصيص رمز معرف فريد للسلاسل الفريدة بحكم موقعها في الشجرة . تُستخدم الرموز المميزة لاستبدال السلاسل في البيانات ، ونظرًا لأن الرموز المميزة أصغر من البيانات التي تم استبدالها ، يتم ضغط الملف. يؤدي استبدال الرموز المميزة للسلاسل الأصلية إلى إعادة تضخيم البيانات إلى حالتها غير المضغوطة.
أضافت خوارزمية DEFLATE تطورًا مفاده أن السلاسل الأكثر تكرارًا تم تخصيصها لأصغر الرموز المميزة والسلاسل الأقل تكرارًا تم تخصيصها بسلاسل أكبر. تضمنت خوارزمية DEFLATE أيضًا أفكارًا من طريقتين للضغط سابقتين ، وهما ترميز Huffman وضغط LZ77.
في وقت كتابة هذا التقرير ، كان عمر خوارزمية DEFLATE ما يقرب من ثلاثة عقود. قبل ثلاثة عقود ، كانت تكاليف تخزين البيانات عالية وكانت سرعات الإرسال بطيئة. كان ضغط البيانات مهمًا للغاية.
تخزين البيانات أرخص بكثير اليوم ، وسرعات النقل أسرع بكثير. لكن لدينا الكثير من البيانات التي يجب تخزينها ، وفي جميع أنحاء العالم يصل الناس إلى خدمات التخزين السحابي والبث المباشر. لا يزال ضغط البيانات مهمًا للغاية ، حتى لو كان كل ما تفعله هو تقليص شيء ما تحتاج إلى تحميله أو نقله ، أو كنت تحاول استعادة بعض المساحة على محرك أقراص ثابت محلي.
أمر 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
قد حذف ملف الأرشيف بعد استخراج الملف الأصلي. للاحتفاظ بملف الأرشيف ، نحتاج إلى استخدام الخيار -k
(keep) مرة أخرى ، وكذلك الخيار -d
(فك الضغط).
ls ورقة الكلس. *
gzip -d calc-sheet.ods.gz
ls ورقة الكلس. *
هذه المرة ، لا يحذف gzip ملف الأرشيف.
ذات صلة: لماذا يمكن استرداد الملفات المحذوفة ، وكيف يمكنك منع ذلك
فك الضغط والكتابة
إذا حاولت استخراج ملف في دليل يوجد به الملف الأصلي - أو ملف مختلف بنفس الشيء - ، سيطالبك gzip
باختيار التخلي عن الاستخراج أو الكتابة فوق الملف الحالي.
gzip -d نصي file.txt.gz
إذا كنت تعلم مسبقًا أنك سعيد بأن الملف في الدليل قد تم استبداله بالملف الموجود في الأرشيف ، فاستخدم الخيار -f (فرض).
gzip -df نصي file.txt.gz
يتم الكتابة فوق الملف ويتم إرجاعك بصمت إلى سطر الأوامر.
ضغط أشجار الدليل
يؤدي الخيار -r
(العودي) إلى ضغط gzip
للملفات في شجرة الدليل بالكامل. لكن النتيجة قد لا تكون كما تتوقع.
ها هي شجرة الدليل التي سنستخدمها في هذا المثال. يحتوي كل دليل على ملف نصي.
مستوى الشجرة 1
دعنا نستخدم gzip
في شجرة الدليل ونرى ما سيحدث.
gzip -r المستوى 1 /
مستوى الشجرة 1
والنتيجة هي أن 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
يمكنك التحقق من سلامة ملف الأرشيف باستخدام الخيار -t
(اختبار).
gzip -t level1.tar.gz
إذا كان كل شيء على ما يرام ، يتم إرجاعك بصمت إلى سطر الأوامر. لا أخبار أخبار جيدة.
إذا كان الأرشيف تالفًا أو ليس أرشيفًا يتم إخبارك به.
gzip -t not-an-archive.gz
السرعة مقابل الضغط
يمكنك اختيار إعطاء الأولوية لسرعة إنشاء الأرشيف أو درجة الضغط. يمكنك القيام بذلك عن طريق توفير رقم كخيار ، من -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
مع ملف صغير مثل هذا ، لم نلاحظ أي اختلاف كبير في سرعة التنفيذ ، ولكن كان هناك اختلاف بسيط في الضغط.
ومن المثير للاهتمام ، أنه لا يوجد فرق بين استخدام ضغط المستوى 9 وضغط المستوى 6. يمكنك فقط الضغط على أي ملف معين ، وفي هذه الحالة ، تم الوصول إلى هذا الحد مع ضغط المستوى 6. رفعه إلى 9 لم يؤدي إلى مزيد من التخفيض في حجم الملف. مع الملفات الكبيرة ، سيكون الفرق بين المستوى 6 والمستوى 9 أكثر وضوحًا.
مضغوط ، غير محمي
لا تخطئ في الضغط على أنه تشفير أو أي شكل من أشكال الحماية. لا يمنح ضغط الملف أي أمان أو خصوصية محسّنة. يمكن لأي شخص لديه حق الوصول إلى ملفك استخدام gzip
لفك ضغطه.
ذات صلة: قم بإدراج أكبر 10 ملفات أو أدلة على نظام Linux