كيفية ضغط أو فك ضغط الملفات من Linux Terminal

ملفات ZIP هي أرشيف عالمي شائع الاستخدام على أنظمة Windows و macOS وحتى Linux. يمكنك إنشاء أرشيف مضغوط أو فك ضغط الملفات من ملف باستخدام بعض أوامر Linux الطرفية الشائعة.

تنسيق ملف أرشيف مضغوط بتنسيق ZIP

بفضل هيمنة تنسيق ZIP في مجال Windows ، ربما تكون ملفات ZIP هي الشكل الأكثر شيوعًا للأرشيف المضغوط في العالم.

في حين أن ملفات .tar.gz و tar.bz2 شائعة على نظام Linux ، فمن المحتمل أن يرسل مستخدمو Windows أرشيفًا بتنسيق ZIP. وإذا كنت تريد أرشفة بعض الملفات وإرسالها إلى مستخدم Windows ، فسيكون تنسيق ZIP هو الحل الأسهل والأكثر توافقًا للجميع.

ذات صلة: كيفية استخراج الملفات من ملف .tar.gz أو .tar.bz2 على نظام Linux

zip و unzip وأدوات مساعدة أخرى

ربما تعلم بالفعل أن أنظمة التشغيل Linux و Unix مثل macOS بها أدوات تسمح لك بإنشاء ملفات ZIP واستخراج الملفات منها ، تسمى zipو unzip. ولكن هناك عائلة كاملة من المرافق ذات الصلة مثل zipcloak، zipdetails، zipsplit، و zipinfo.

قمنا بفحص بعض توزيعات Linux لمعرفة ما إذا كانت تتضمن هذه الأدوات المساعدة في التثبيت القياسي. كانت جميع المرافق موجودة في Ubuntu 19.04 و 18.10 و 18.04. كانوا موجودين أيضًا في Manjaro 18.04. فيدورا 29 وشملت zipو unzip، ولكن لم يكن أي من المرافق الأخرى والتي أيضا الحال بالنسبة سينت أو إس.

لتثبيت العناصر المفقودة في Fedora 29 ، استخدم الأمر التالي:

تثبيت sudo dnf perl-IO-Compress

لتثبيت العناصر المفقودة في CentOS 7 ، استخدم الأمر التالي:

sudo yum install perl-IO-Compress

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

كيفية إنشاء ملف مضغوط باستخدام الأمر zip

لإنشاء ملف ZIP ، تحتاج إلى معرفة zipاسم ملف الأرشيف والملفات المراد تضمينها فيه. لا تحتاج إلى إضافة الامتداد “.zip” إلى اسم الأرشيف ، ولكن لا يضر ذلك إذا قمت بذلك.

لإنشاء ملف يسمى source_code.zipيحتوي على جميع ملفات التعليمات البرمجية المصدر وملفات الرأس في الدليل الحالي ، يمكنك استخدام هذا الأمر:

zip source_code * .c * .h

يتم سرد كل ملف عند إضافته. يظهر اسم الملف ومقدار الضغط الذي تم تحقيقه على هذا الملف.

إذا نظرت إلى أرشيف ZIP الجديد ، يمكنك أن ترى أنه تمت إضافة امتداد الملف ".zip" تلقائيًا بواسطة zip.

ls -l source_code.zip

إذا كنت لا تريد رؤية الإخراج من zipأثناء إنشاء ملف ZIP ، فاستخدم -qالخيار (صامت).

zip -q source_code * .c * .h

بما في ذلك الدلائل في ملفات مضغوطة

لتضمين الدلائل الفرعية في ملف ZIP ، استخدم الخيار -r(العودي) وقم بتضمين اسم الدليل الفرعي في سطر الأوامر. لإنشاء ملف ZIP كما كان من قبل وتضمين دليل الأرشيف الفرعي أيضًا ، استخدم هذا الأمر.

أرشيف zip -r -q source_code / * .c * .h

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

في الأمر التالي ، سنقوم بأرشفة workالدليل وجميع الأدلة الفرعية. لاحظ أن هذا الأمر يصدر من الدليل الأصل من workمجلد.

zip -r -q source_code work /

ضبط مستوى الضغط

يمكنك تعيين مقدار الضغط المطبق على الملفات عند إضافتها إلى أرشيف ZIP. النطاق من 0 إلى 9 ، مع عدم وجود ضغط على الإطلاق في 0. كلما زاد الضغط ، كلما استغرق إنشاء ملف ZIP وقتًا أطول. بالنسبة لملفات ZIP ذات الحجم المتواضع ، فإن فارق التوقيت ليس عقوبة كبيرة. ولكن بعد ذلك ، بالنسبة لملفات ZIP ذات الحجم المتواضع ، من المحتمل أن يكون الضغط الافتراضي (المستوى 6) جيدًا بما يكفي على أي حال.

للحصول zipعلى استخدام مستوى معين من الضغط، لتمرير عدد كخيار على سطر الأوامر، مع "-"، مثل هذا:

zip -0 -r -q source_code work /

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

zip -r -q source_code work /

الحد الأقصى لمستوى الضغط هو المستوى 9.

zip -9 -r -q source_code work /

مع تحديد الملفات والدلائل التي يتم أرشفتها هنا ، يكون الفرق بين عدم الضغط (المستوى 0) والضغط الافتراضي (المستوى 6) هو 400 كيلو. الفرق بين الضغط الافتراضي وأعلى مستوى من الضغط (المستوى 9) هو 4K فقط.

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

إضافة كلمات مرور إلى ملفات مضغوطة

من السهل إضافة كلمات مرور إلى ملفات ZIP. استخدم -eخيار (تشفير) وسيُطلب منك إدخال كلمة مرورك وإعادة إدخالها للتحقق.

zip -e -r -q source_code work /

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

لاستخراج الملفات من ملف ZIP ، استخدم الأمر unzip ، وقم بتوفير اسم ملف ZIP. ملاحظة أنك تفعل الحاجة لتوفير "الرمز البريدي" التمديد.

قم بفك ضغط source_code.zip

عند استخراج الملفات ، يتم إدراجها في نافذة المحطة الطرفية.

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

تمامًا مثل zip، unzip لديه -qخيار (هادئ) ، بحيث لا تحتاج إلى رؤية قائمة الملفات حيث يتم استخراج الملفات.

unzip -q source_code.zip

استخراج الملفات إلى الدليل الهدف

لاستخراج الملفات في دليل معين ، استخدم -dخيار (الدليل) ، وقم بتوفير المسار إلى الدليل الذي ترغب في استخراج الأرشيف إليه.

unzip -q source_code.zip -d ./development

استخراج ملفات ZIP المحمية بكلمة مرور

إذا تم إنشاء ملف ZIP بكلمة مرور ، unzipفسوف يطلب منك كلمة المرور. إذا لم تقدم كلمة المرور الصحيحة ،  unzipفلن يتم استخراج الملفات.

unzip -q source_code.zip

إذا كنت لا تهتم بأن يرى الآخرون كلمة مرورك - ولا أن يتم تخزينها في محفوظات الأوامر - فيمكنك توفير كلمة المرور في سطر الأوامر باستخدام -Pخيار (كلمة المرور). (يجب استخدام حرف "P." كبير)

قم بفك ضغط -P 50.treacle.cutlass -q source_code.zip

باستثناء الملفات

إذا كنت لا تريد استخراج ملف معين أو مجموعة ملفات معينة ، فاستخدم -xخيار (استبعاد). في هذا المثال ، نريد استخراج جميع الملفات باستثناء تلك المنتهية بامتداد ".h".

قم بفك ضغط -q source_code.zip -x * .h

الكتابة فوق الملفات

لنفترض أنك قمت باستخراج أرشيف ولكنك حذفت بعض الملفات المستخرجة عن طريق الخطأ.

سيكون الحل السريع لذلك هو استخراج الملفات مرة أخرى. ولكن إذا حاولت استخراج ملف ZIP في نفس الدليل كما كان من قبل ، unzipفسيطالبك باتخاذ قرار بشأن الكتابة فوق الملفات. سيتوقع أحد الردود التالية.

بصرف النظر عن rاستجابة (إعادة التسمية) ، فإن هذه الردود حساسة لحالة الأحرف.

  • y: نعم ، اكتب هذا الملف
  • n: لا ، لا تكتب فوق هذا الملف
  • ج: الكل ، الكتابة فوق جميع الملفات
  • N: لا شيء ، الكتابة فوق أي من الملفات
  • r: إعادة تسمية واستخراج هذا الملف ولكن إعطائه اسما جديدا. سيُطلب منك اسم جديد.

لفرض unzipالكتابة فوق أي ملفات موجودة ، استخدم -oخيار (الكتابة فوق).

قم بفك ضغط -o -q source_code.zip

الطريقة الأكثر فاعلية لاستبدال الملفات المفقودة هي unzipاستخراج أي ملفات في الأرشيف غير موجودة في الدليل الهدف. للقيام بذلك ، استخدم خيار -n(عدم الكتابة أبدًا).

فك ضغط n source_code.zip

النظر داخل ملف مضغوط

غالبًا ما يكون من المفيد والمفيد رؤية قائمة بالملفات داخل ملف ZIP قبل استخراجه. يمكنك القيام بذلك باستخدام خيار -l(أرشيف القائمة). يتم تمريره من خلال الأنابيب lessلتسهيل التحكم في الإخراج.

فك ضغط -l source_code.zip | أقل

يعرض الإخراج الدلائل والملفات داخل ملف ZIP وطولها ووقت وتاريخ إضافتها إلى الأرشيف. اضغط على "q" للخروج من less.

هناك طرق أخرى لإلقاء نظرة خاطفة داخل ملف ZIP والتي تقدم أنواعًا مختلفة من المعلومات ، كما سنرى.

أضف كلمة مرور باستخدام الأمر zipcloak

إذا قمت بإنشاء ملف ZIP ولكنك نسيت إضافة كلمة مرور ، فماذا يمكنك أن تفعل؟ يمكنك إضافة كلمة مرور بسرعة إلى ملف ZIP باستخدام zipcloakالأمر. قم بتمرير اسم ملف ZIP في سطر الأوامر. ستتم مطالبتك بكلمة مرور. تحتاج إلى التحقق من كلمة المرور عن طريق إدخالها مرة أخرى.

zipcloak source_code.zip

عرض تفاصيل الملف باستخدام الأمر zipdetails

و zipdetailsسوف القيادة تظهر لك الكثير من المعلومات عن ملف ZIP. الطريقة الوحيدة المعقولة للتعامل مع مقدار الإخراج الذي يمكن أن يقدمه هذا الأمر هو تمريره less.

تفاصيل zipdetails source_code.zip | أقل

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

ابحث داخل الملف باستخدام الأمر zipgrep

و zipgrepقيادة يسمح لك للبحث في الملفات في ملف ZIP. في المثال التالي ، نريد أن نعرف الملفات الموجودة في ملف ZIP التي تحتوي على النص “keyval.h” فيها.

zipgrep keyval.h source_code.zip

يمكننا أن نرى أن الملفات slang.cو getval.cتحتوي على "keyval.h" السلسلة. يمكننا أن نرى أيضا أن هناك نسختين من كل من هذه الملفات في دلائل مختلفة في ملف ZIP.

عرض المعلومات باستخدام الأمر zipinfo

و zipinfoالقيادة يتيح لك طريقة أخرى للنظر داخل ملف ZIP. كما كان من قبل ، نقوم بتوجيه الإخراج less.

zipinfo source_code.zip | أقل

من اليسار إلى اليمين يظهر الإخراج:

  • أذونات الملف
  • إصدار الأداة المستخدمة لإنشاء ملف ZIP
  • حجم الملف الأصلي
  • واصف ملف (موضح أدناه)
  • طريقة الانضغاط (الانكماش في هذه الحالة)
  • البيانات والطابع الزمني
  • اسم الملف وأي دليل

يتكون واصف الملف من حرفين. سيكون الحرف الأول "t" أو "b" للإشارة إلى نص أو ملف ثنائي. إذا كان حرفًا كبيرًا ، فسيتم تشفير الملف. قد يكون الحرف الثاني واحدًا من أربعة أحرف. يمثل هذا الحرف نوع البيانات الوصفية المضمنة في هذا الملف: لا شيء ، أو رأس محلي موسع ، أو "حقل إضافي" ، أو كليهما.

  • -: إذا لم يكن أي منهما موجودًا ، فسيكون الحرف واصلة
  • l: إذا كان هناك رأس محلي ممتد ولكن لا يوجد حقل إضافي
  • x: إذا لم يكن هناك رأس محلي ممتد ولكن هناك حقل إضافي
  • X: إذا كان هناك رأس محلي موسع وكان هناك حقل إضافي

قم بتقسيم الملف باستخدام الأمر zipsplit

إذا كنت بحاجة إلى إرسال ملف ZIP إلى شخص آخر ولكن هناك قيود على الحجم أو مشاكل في نقل الملف ، فيمكنك استخدام zipsplitالأمر لتقسيم ملف ZIP الأصلي إلى مجموعة من ملفات ZIP الأصغر.

و -nالخيار (حجم) يسمح لك بتحديد حجم أقصى لكل من ملفات ZIP الجديدة. في هذا المثال ، نقوم بتقسيم source_code.zipالملف. لا نريد أن يزيد حجم أي من ملفات ZIP الجديدة عن 100 كيلوبايت (102400 بايت).

zipsplit -n 102400 source_code.zip

لا يمكن أن يكون الحجم الذي تختاره أصغر من حجم أي من الملفات الموجودة في ملف ZIP.

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