النقاط الرئيسية
- تُستخدم ملفات ZIP على نطاق واسع على أنظمة Windows وmacOS وLinux، مما يجعلها الشكل الأكثر شيوعًا للأرشيف المضغوط.
- لضغط الملفات (أو المجلدات) على Linux، قم بتشغيل:
zip اسم الملف zipname الملفات المراد ضغطها - لاستخراج الملفات من ملف ZIP، قم بتشغيل:
فك ضغط اسم الملف المضغوط
ملفات ZIP عبارة عن أرشيف عالمي يستخدم بشكل شائع في أنظمة Windows وmacOS وحتى Linux. يمكنك إنشاء أرشيف مضغوط أو فك ضغط الملفات منه باستخدام بعض أوامر محطة طرفية Linux الشائعة.
تنسيق ملف الأرشيف المضغوط ZIP
بفضل هيمنة تنسيق ZIP في عالم Windows، ربما تكون ملفات ZIP هي الشكل الأكثر شيوعًا للأرشيف المضغوط في العالم.
على الرغم من أن ملفات .tar.gz وtar.bz2 شائعة الاستخدام على Linux، فمن المحتمل أن يرسل إليك مستخدمو Windows أرشيفًا بتنسيق ZIP. وإذا كنت ترغب في أرشفة بعض الملفات وإرسالها إلى مستخدم Windows، فسيكون تنسيق ZIP هو الحل الأسهل والأكثر توافقًا للجميع.
الضغط وفك الضغط والأدوات المساعدة الأخرى
ربما تعلم بالفعل أن أنظمة التشغيل Linux وأنظمة التشغيل الشبيهة بـUnix مثل macOS تحتوي على أدوات تسمح لك بإنشاء ملفات ZIP واستخراج الملفات منها، والتي تسمى zip
و unzip
ولكن هناك عائلة كاملة من الأدوات ذات الصلة مثل zipcloak
, zipdetails
, zipsplit
، و zipinfo
.
لقد قمنا بفحص بعض توزيعات لينكس لمعرفة ما إذا كانت تتضمن هذه الأدوات المساعدة في التثبيت القياسي. كانت جميع الأدوات المساعدة موجودة في Ubuntu 23.04 و19.04 و18.10 و18.04. وكانت موجودة أيضًا في Manjaro 18.04. تضمنت Fedora 29 zip
و unzip
، ولكن لا يوجد أي من الأدوات المساعدة الأخرى، وكانت هذه هي الحال أيضًا بالنسبة لـ CentOS.
لتثبيت العناصر المفقودة على Fedora 29، استخدم الأمر التالي:
sudo dnf install perl-IO-Compress
لتثبيت العناصر المفقودة على CentOS 7، استخدم الأمر التالي:
sudo yum install perl-IO-Compress
إذا كانت أي من أدوات zip مفقودة من توزيع Linux غير المذكور أعلاه، فاستخدم أداة إدارة الحزم الخاصة بتوزيع Linux هذا لتثبيت الحزمة المطلوبة.
كيفية إنشاء ملف ZIP باستخدام الأمر zip
لإنشاء ملف ZIP، تحتاج إلى إخبار zip
اسم ملف الأرشيف والملفات التي يجب تضمينها فيه. لست بحاجة إلى إضافة امتداد “.zip” إلى اسم الأرشيف، ولكن لا ضرر من ذلك إذا فعلت ذلك.
لإنشاء ملف يسمى source_code.zip
تحتوي على جميع ملفات التعليمات البرمجية المصدرية C وملفات الرأس في الدليل الحالي، يمكنك استخدام هذا الأمر:
zip source_code *.c *.h
يتم إدراج كل ملف عند إضافته. ويظهر اسم الملف ومقدار الضغط الذي تم تحقيقه على هذا الملف.
إذا نظرت إلى أرشيف ZIP الجديد، يمكنك أن ترى أن امتداد الملف “.zip” قد تمت إضافته تلقائيًا بواسطة zip
.
ls -l source_code.zip
إذا كنت لا تريد رؤية الناتج من zip
عند إنشاء ملف ZIP، استخدم -q
خيار (هادئ).
zip -q source_code *.c *.h
تضمين الدلائل في ملفات ZIP
لتضمين الدلائل الفرعية في ملف ZIP، استخدم -r
(خيار متكرر) وقم بتضمين اسم الدليل الفرعي على سطر الأوامر. لإنشاء ملف ZIP كما في السابق وتضمين الدليل الفرعي للأرشيف أيضًا، استخدم هذا الأمر.
zip -r -q source_code archive/ *.c *.h
من باب مراعاة الشخص الذي سيقوم باستخراج الملفات من ملف ZIP الذي تقوم بإنشائه، فمن المهذب غالبًا إنشاء ملفات 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) هو 4 كيلو بايت فقط.
قد لا يبدو هذا الأمر كبيراً، ولكن بالنسبة للأرشيفات التي تحتوي على مئات أو حتى آلاف الملفات، فإن كمية صغيرة من الضغط الإضافي لكل ملف من شأنها أن تضيف إلى المساحة المتوفرة.
إضافة كلمات مرور إلى ملفات ZIP
إن إضافة كلمات مرور إلى ملفات ZIP أمر سهل. استخدم -e
قم باختيار خيار (تشفير) وسيُطلب منك إدخال كلمة المرور الخاصة بك وإعادة إدخالها للتحقق.
zip -e -r -q source_code work/
كيفية فك ضغط ملف ZIP باستخدام الأمر unzip
لاستخراج الملفات من ملف ZIP، استخدم الأمر unzip، ثم أدخل اسم ملف ZIP. لاحظ أنك تحتاج إلى إدخال الامتداد “.zip”.
unzip source_code.zip
عندما يتم استخراج الملفات، سيتم إدراجها في نافذة المحطة الطرفية.
لا تحمل ملفات ZIP تفاصيل ملكية الملف. يتم تعيين المالك لكل الملفات المستخرجة للمستخدم الذي يقوم باستخراجها.
تماما مثل zip
, unzip
لديه -q
خيار (هادئ)، بحيث لا تحتاج إلى رؤية قائمة الملفات أثناء استخراج الملفات.
unzip -q source_code.zip
لاستخراج الملفات في دليل معين، استخدم -d
خيار (الدليل)، وقم بتوفير المسار إلى الدليل الذي ترغب في استخراج الأرشيف إليه.
unzip -q source_code.zip -d ./development
إذا تم إنشاء ملف ZIP بكلمة مرور، unzip
سيطلب منك كلمة المرور. إذا لم تقدم كلمة المرور الصحيحة، unzip
لن يتم استخراج الملفات.
unzip -q source_code.zip
إذا كنت لا تهتم برؤية الآخرين لكلمة مرورك أو تخزينها في سجل الأوامر الخاص بك، فيمكنك تقديم كلمة المرور على سطر الأوامر باستخدام -P
خيار (كلمة المرور). (يجب استخدام حرف “P” كبير.)
unzip -P fifty.treacle.cutlass -q source_code.zip
استبعاد الملفات
إذا كنت لا تريد استخراج ملف معين أو مجموعة من الملفات، استخدم -x
خيار (استبعاد). في هذا المثال، نريد استخراج كافة الملفات باستثناء تلك التي تنتهي بامتداد “.h”.
unzip -q source_code.zip -x *.h
الكتابة فوق الملفات
افترض أنك قمت باستخراج أرشيف ولكنك قمت بحذف بعض الملفات المستخرجة عن طريق الخطأ.
الحل السريع لذلك هو استخراج الملفات مرة أخرى. ولكن إذا حاولت استخراج ملف ZIP في نفس الدليل كما في السابق، unzip
سيطالبك باتخاذ قرار بشأن الكتابة فوق الملفات. وسيتوقع أحد الاستجابات التالية.
بصرف النظر عن r
(إعادة تسمية) الاستجابة، هذه الاستجابات حساسة لحالة الأحرف.
- ي: نعم، قم باستبدال هذا الملف
- ن: لا، لا تقم باستبدال هذا الملف
- أ: الكل، الكتابة فوق كافة الملفات
- ن: لا شيء، لا تستبدل أيًا من الملفات
- ر: أعد تسمية هذا الملف، ثم استخرجه، لكن أعطه اسمًا جديدًا. سيُطلب منك إدخال اسم جديد.
لإجبار unzip
لاستبدال أي ملفات موجودة استخدم -o
خيار (الكتابة فوق).
unzip -o -q source_code.zip
الطريقة الأكثر فعالية لاستبدال الملفات المفقودة هي أن يكون لديك unzip
استخرج فقط أي ملفات في الأرشيف غير الموجودة في الدليل المستهدف. للقيام بذلك، استخدم -n
(الخيار (لا يمكن الكتابة فوقه أبدًا)).
unzip -n source_code.zip
النظر داخل ملف ZIP
غالبًا ما يكون من المفيد والمفيد رؤية قائمة بالملفات الموجودة داخل ملف ZIP قبل استخراجه. يمكنك القيام بذلك باستخدام -l
خيار (أرشيف القائمة). يتم توصيله عبر less
لجعل الناتج قابلا للإدارة.
unzip -l source_code.zip | less
يعرض الإخراج الدلائل والملفات الموجودة داخل ملف ZIP وطولها والوقت والتاريخ اللذين تم إضافتهما إلى الأرشيف. اضغط على “q” للخروج من less
.
هناك طرق أخرى لإلقاء نظرة داخل ملف ZIP والتي تعطي أنواعًا مختلفة من المعلومات، كما سنرى.
إضافة كلمة مرور باستخدام الأمر zipcloak
إذا قمت بإنشاء ملف ZIP ولكنك نسيت إضافة كلمة مرور، فماذا يمكنك أن تفعل؟ يمكنك إضافة كلمة مرور بسرعة إلى ملف ZIP باستخدام zipcloak
الأمر. مرر اسم ملف ZIP على سطر الأوامر. سيُطلب منك إدخال كلمة مرور. يجب عليك التحقق من كلمة المرور عن طريق إدخالها مرة ثانية.
zipcloak source_code.zip
عرض تفاصيل الملف باستخدام الأمر zipdetails
ال zipdetails
سيعرض لك الأمر الكثير من المعلومات المتعلقة بملف ZIP. الطريقة المعقولة الوحيدة للتعامل مع كمية الإخراج التي يمكن أن يقدمها هذا الأمر هي توجيهه عبر less
.
zipdetails source_code.zip | less
لاحظ أن المعلومات ستتضمن أسماء الملفات حتى لو كان ملف 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 | less
من اليسار إلى اليمين يظهر الناتج:
- أذونات الملف
- إصدار الأداة المستخدمة لإنشاء ملف ZIP
- حجم الملف الأصلي
- موصوف الملف (موضح أدناه)
- طريقة الضغط (الانكماش في هذه الحالة)
- البيانات وختم الوقت
- اسم الملف وأي دليل
يتكون موصوف الملف من حرفين. الحرف الأول سيكون “t” أو “b” للإشارة إلى ملف نصي أو ثنائي. إذا كان حرفًا كبيرًا، فسيتم تشفير الملف. قد يكون الحرف الثاني واحدًا من أربعة أحرف. يمثل هذا الحرف نوع البيانات الوصفية المضمنة لهذا الملف: لا شيء، أو رأس محلي ممتد، أو “حقل إضافي”، أو كليهما.
- -: إذا لم يكن أي منهما موجودًا، فسيكون الحرف عبارة عن شرطة
- ل: إذا كان هناك رأس محلي ممتد ولكن لا يوجد حقل إضافي
- س: إذا لم يكن هناك رأس محلي ممتد ولكن يوجد حقل إضافي
- س: إذا كان هناك رأس محلي ممتد وكان هناك حقل إضافي
تقسيم الملف باستخدام الأمر zipsplit
إذا كنت بحاجة إلى إرسال ملف ZIP إلى شخص آخر ولكن هناك قيود على الحجم أو مشكلات في نقل الملف، فيمكنك استخدام zipsplit
أمر لتقسيم ملف ZIP الأصلي إلى مجموعة من ملفات ZIP الأصغر.
ال -n
يتيح لك خيار (الحجم) تعيين الحد الأقصى لحجم كل ملف ZIP جديد. في هذا المثال، نقوم بتقسيم source_code.zip
الملف. لا نريد أن يكون حجم أي من ملفات ZIP الجديدة أكبر من 100 كيلوبايت (102400 بايت).
zipsplit -n 102400 source_code.zip
لا يمكن أن يكون الحجم الذي تختاره أصغر من حجم أي من الملفات الموجودة في ملف ZIP.
باستخدام هذه الأوامر، يمكنك إنشاء ملفات ZIP الخاصة بك، وفك ضغط ملفات ZIP التي تتلقاها، وإجراء عمليات أخرى مختلفة عليها دون الحاجة إلى مغادرة محطة Linux على الإطلاق.