نظرة عامة
تُعد أداة zip إحدى الركائز الأساسية التي يعتمد عليها مسؤولو الأنظمة ومطورو البرمجيات في بيئات لينكس لتقليص أحجام البيانات وتسهيل مشاركتها ونقلها بأمان. يستعرض هذا الدليل التطبيقي الممارسات الفعلية لاستخدام حزمتي zip وunzip عبر الطرفية؛ بدءاً من التثبيت الأولي وضغط الملفات الفردية والمتعددة، مروراً بالأرشفة المتكررة للمجلدات وضبط مستويات الضغط، وصولاً إلى استخراج البيانات وتطبيق قواعد استبعاد الملفات والتشفير خطوة بخطوة.
تثبيت أدوات zip وunzip والتعامل مع الملفات الأساسية
للتحضير للعمليات التطبيقية داخل نظام Ubuntu، يتم تحديث فهارس المستودعات وتثبيت حزمتي الضغط وفك الضغط بتنفيذ الأمر apt-get update -qq && apt-get install -y zip unzip:

تفادياً لتداخل الملفات وضمان بيئة معزولة للتجارب، نقوم بإنشاء مجلد عمل جديد والانتقال إليه مباشرة عبر mkdir -p ~/zip_demo && cd ~/zip_demo:

نقوم بإنشاء ملف نصي اختباري أول لاستخدامه في تجربة الحزم بواسطة echo "Sample text file 1" > file1.txt:

وبالمثل، يتم توليد ملف نصي تجريبي ثانٍ لإدراجه ضمن الأرشيف المشترك عبر echo "Sample text file 2" > file2.txt:

تقوم أداة zip بتجميع ملفات ومجلدات متعددة وحفظها ضمن ملف أرشيف واحد بصيغة .zip.
نقوم هنا بدمج الملفين file1.txt وfile2.txt في حزمة واحدة باسم archive.zip.
⚙️ [أهم الخيارات التشغيلية]
-r : إدراج المجلدات الفرعية ومحتوياتها الداخلية بالكامل بطريقة عودية (تكرارية).-e : تعيين كلمة مرور للأرشيف لتعزيز الحماية التشفيرية للبيانات.-u : تحديث الأرشيف بحصر الإضافة على الملفات المعدلة حديثاً أو الجديدة كلياً.-m : حذف الملفات المصدرية تلقائياً بمجرد اكتمال حزمها داخل الأرشيف.-d : إزالة ملفات معينة من داخل الأرشيف دون الحاجة لفكه بالكامل.-q : تشغيل الأداة في الوضع الصامت وتجاوز طباعة رسائل التقدم على الشاشة.-0 ~ -9 : التحكم في كثافة الضغط بين 0 (تخزين دون ضغط) و9 (أقصى تقليص متاح للحجم).

لمعاينة تفاصيل الملف المضغوط الجديد والتأكد من حجمه ومطابقته على القرص، نستخدم الأمر ls -lh archive.zip:

أرشفة المجلدات عودياً (-r) والتحكم بمعدل الضغط الأقصى (-9)
للشروع في ضغط البنى الشجرية للمجلدات، نؤكد وجودنا داخل مسار الاختبار ~/zip_demo:

نقوم بتجهيز مسار هرمي يحاكي بيئة مشروع برمجي بإنشاء المجلدين project/src وproject/logs:

ننشئ نموذجاً لملف شيفرة مصدرية تحت المسار project/src/app.js:

نضيف ملف سجلات تجريبي لمحاكاة نشاط الخادم عبر المسار project/logs/app.log:

بتطبيق الخيار -r مع الأمر zip، يتم شمل دليل project مع كافة تفرعاته وملفاته الداخلية لإنشاء الأرشيف الشامل project.zip.
تُظهر مخرجات الطرفية حزم جميع المسارات الفرعية بكامل محتوياتها دون استثناء.

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

لإجراء مقارنة بصرية بين حجم الحزمة الاعتيادية project.zip وحجم الحزمة فائقة الضغط project_max.zip، نستعرض الملفات عبر ls -lh project*.zip:

استعراض محتويات الأرشيف (-l) وتوجيه الاستخراج لمسار محدد (-d)
ننتقل إلى بيئة العمل ~/zip_demo لبدء خطوات التحقق وفك المحتويات المضغوطة:

يوفر الخيار -l مع أداة unzip وسيلة سريعة لفحص البنية الداخلية لملف project.zip وجرد أسماء الملفات وأحجامها وتواريخ إنشائها دون الحاجة لاستخراجها فعلياً على القرص:

لتجنب انتشار الملفات في مسار العمل الحالي، نقوم بتجهيز مجلد مستقل لاستقبال المحتويات المستخرجة بتنفيذ mkdir -p ~/zip_demo/extracted:

بإسناد المسار الهدف عبر المعامل -d إلى الأمر unzip، يتم تفريغ محتويات project.zip داخل المجلد ~/zip_demo/extracted بصورة آمنة ومنظمة.
يؤكد الناتج بناء الهيكل الشجري للمشروع داخل الوجهة المحددة بدقة.

للتحقق من اكتمال استخراج جميع المجلدات الفرعية والملفات المنتمية إليها داخل المسار المحدد، نستعرض الشجرة كاملة عبر ls -R ~/zip_demo/extracted:

تقنيات استثناء الملفات (-x) والتأمين بالتشفير
لمواصلة التدريب على استبعاد العناصر غير المرغوبة وتأمين الأرشيف، نتوجه إلى مجلد العمل ~/zip_demo:

عند تجهيز حزم برمجية، غالباً ما يتطلب الأمر استبعاد السجلات المؤقتة؛ نستخدم الخيار -x محددين النمط ("*.log") لتجاهل ملفات السجلات أثناء الضغط التكراري لمجلد project داخل project_no_logs.zip:
تؤكد النتائج نجاح حزم ملفات الشيفرة المصدرية مع استثناء كافة ملفات .log تلقائياً.

نقوم بمعاينة محتويات project_no_logs.zip بواسطة الخيار -l للتأكد من فاعلية التصفية:
يظهر الفحص بوضوح خلو الأرشيف من ملف app.log وتطابق النتيجة مع قاعدة الاستبعاد المحددة.

لحماية البيانات الحساسة من الاطلاع غير المصرح به، يتيح المعامل -P إدراج كلمة مرور مباشرة أثناء الضغط، حيث نقوم بتطبيقه مع -r على مسار project/src لإنتاج الأرشيف المشفر project_encrypted.zip:
توضح المخرجات إتمام حزم وتشفير الشيفرة المصدرية بكفاءة عالية.

لإجراء نظرة شاملة على جميع الحزم المتولدة ومقارنة أحجامها وخصائصها، ننفذ الأمر ls -lh project_*.zip:

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