الدليل الشامل لأمر cpio في لينكس

نظرة عامة وتوطئة تقنية

تعتبر أداة cpio إحدى الركائز الأساسية التي يعتمد عليها نظام لينكس في معالجة حزم ملفات النظام المبدئية (initramfs) وإدارة النسخ الاحتياطي بكفاءة عالية. يهدف هذا الدليل التطبيقي إلى تمكين مديري الأنظمة ومطوري لينكس من التحكم الكامل بالأداة عبر استكشاف أوضاع عملها الثلاثة: الإخراج وإنشاء الأرشيف (-o)، الاستخراج واسترجاع البيانات (-i)، والنسخ المباشر بين المجلدات (-p)، مع استعراض نتائج التنفيذ الفعلي لكل خيار برمجي مستخدم.

1. تثبيت حزمة cpio وتأسيس الأرشيف الأولي (وضع copy-out)

لبدء التطبيق العملي على توزيعة أوبونتو، نحتاج أولاً إلى تحديث فهرس الحزم البرمجية ثم تنصيب حزمة cpio على النظام عبر الأوامر التالية:

تحديث المستودعات وتثبيت حزمة cpio

بعد اكتمال التثبيت، ننشئ مساراً مخصصاً للاختبارات وننتقل إليه، ثم نولد ملفين نصيين لاستخدامهما في تجارب الأرشفة:

إعداد بيئة الاختبار وإنشاء ملفات تجريبية

تتميز أداة cpio بآلية معالجة تعتمد كلياً على قراءة مسارات الملفات عبر مجرى الإدخال القياسي (standard input) لتحويلها إلى كتلة أرشيفية متكاملة أو فكها.
نقوم هنا بتمرير قائمة الملفات المتوفرة في المجلد الحالي عبر الأنبوب (pipeline) لدمجها وحفظها في ملف أرشيف موحد باسم archive.cpio:
⚙️ [الخيارات التشغيلية الجوهرية]

-o (--create) : يضبط الأداة على وضع الإخراج (copy-out) بهدف تكوين أرشيف جديد بناءً على تدفق أسماء الملفات المدخلة.
-i (--extract) : يُفعل وضع الاستخراج (copy-in) المسؤول عن قراءة ملف الأرشيف وتفريغ محتوياته إلى القرص.
-p (--pass-through) : يُشغل وضع النقل المباشر (copy-pass) لنسخ شجرة الملفات بين المجلدات فورياً دون الحاجة لكتابة ملف أرشيف وسيط.
-v (--verbose) : يعرض بيانات مفصلة على الشاشة للملفات التي تتم معالجتها خطوة بخطوة.
-t (--list) : يطبع فهرس الملفات المحفوظة داخل الأرشيف للاطلاع عليها دون استخراجها.
-d (--make-directories) : يتولى إنشاء المجلدات الفرعية الضرورية تلقائياً أثناء عملية الاسترجاع عند عدم وجودها.
-u (--unconditional) : يجبر النظام على استبدال وكتابة الملفات حتى وإن وُجدت نسخ سابقة منها بنفس الاسم.
-H (--format) : يحدد النسق الهيكلي للأرشيف مثل نسق crc و newc أو tar.

توجيه ناتج أمر ls لإنشاء ملف الأرشيف بواسطة cpio

وللتأكد من سلامة العملية وحجم الملف الناتج بصيغة سهلة القراءة، نفحص خصائص الأرشيف archive.cpio:

معاينة حجم وخصائص ملف الأرشيف الجديد

2. فحص المحتويات وتنفيذ استعادة البيانات (وضع copy-in)

قبل الشروع في تفريغ الأرشيف، يُنصح دائماً بالتحقق من هيكلية المحتويات الداخلية والصلاحيات دون استخراجها فعلياً، وذلك بدمج المفتاحين -t و -v.
يتم إرسال محتوى الأرشيف عبر الإدخال القياسي لمعاينته والتأكد من سلامته المسبقة:

عرض قائمة الملفات المخزنة داخل الأرشيف دون فكها

ننتقل بعد ذلك إلى مرحلة الاسترجاع الفعلي؛ ولضمان بيئة عمل معزولة، نقوم بإنشاء مجلد مخصص للاستعادة والانتقال إليه مباشرة:

إنشاء مجلد مخصص لعمليات استرجاع البيانات

نقوم بتشغيل الأمر cpio -idv لقراءة الأرشيف وتفريغ الملفات بالكامل داخل مجلد العمل الحالي.
يتكامل هنا الخيار -d لبناء أي أدلة شجرية ناقصة بصورة آلية مع الخيار -v لمتابعة تدفق الملفات المسترجعة لحظياً:

تنفيذ استخراج ملفات الأرشيف إلى المجلد الحالي

للتحقق النهائي من اكتمال استعادة الملفات ببياناتها الصحيحة، نستعرض تفاصيل المجلد المستهدف:

مراجعة الملفات المفكوكة داخل مسار الاستعادة

3. استنساخ شجرة المجلدات فورياً (وضع copy-pass)

لإجراء تجربة استنساخ المسارات الشجرية مباشرة، نبدأ بإنشاء مجلد فرعي داخل دليل المصدر ونضيف بداخله ملفاً نصياً جديداً:

إضافة تسلسل شجري وملف تجريبي في مجلد المصدر

بعدها نؤسس المجلد الهدف الذي ستُنقل إليه البنية الكاملة:

تأسيس المجلد المستهدف لاستقبال الملفات المنسوخة

بالدخول إلى مجلد المصدر، نعتمد على أداة find لتتبع جميع العناصر وإرسالها عبر مسار تدفق الأوامر لتطبيق وضع النقل الفوري (-p) نحو المجلد الوجهة دون تخزين أرشيف وسيط.
تضمن إضافة المعامل -d إنشاء الأدلة الفرعية ذاتياً، بينما يحافظ المعامل -m على التواريخ الزمنية الأصلية للتعديل، مع إظهار تقرير الإنجاز عبر المعامل -v:

نقل البنية الشجرية بالكامل مباشرة نحو المجلد الهدف عبر find و cpio

للتأكد من مطابقة شجرة الملفات المنقولة في الدليل المستهدف لكافة العناصر المصدرية، نقوم بعمل استعراض عودي شامل:

معاينة الشجرة المنقولة بالكامل داخل المجلد المستهدف

4. إعداد أرشيف بالنسق القياسي (SVR4/CRC) والدمج مع ضغط gzip

في هذه المرحلة، نلجأ إلى الأمر find لتغذية cpio بمسارات الملفات من أجل بناء أرشيف متوافق مع معيار newc (المعتمد في بيئات إقلاع نواة لينكس)، ونربطه مباشرة عبر الأنبوب بأداة gzip بأعلى مستوى للضغط (-9) لإنتاج الحزمة المضغوطة initramfs_sample.cpio.gz:

توليد أرشيف بنسق newc وضغطه بواسطة gzip بأعلى كفاءة

للتحقق من البنية الثنائية والتأكد من مطابقة الملف الناتج لصيغة البيانات المضغوطة عبر gzip، نطبق الأمر file:

فحص هوية وطبيعة الملف المضغوط الناتج

لتجربة استرجاع هذه الحزمة المضغوطة، نؤسس دليلاً جديداً مخصصاً وننتقل إليه:

تهيئة دليل منفصل لاختبار فك الأرشيف المضغوط

باستخدام الأداة zcat لفك ضغط التدفق وبثه مباشرة إلى الإدخال القياسي لأمر الاستعادة في cpio -idv، نسترجع محتويات الحزمة دفعة واحدة دون الحاجة إلى فك الضغط في ملف منفصل على القرص:

فك الضغط والاسترجاع المتزامن عبر تمرير zcat إلى cpio

عقب إتمام معالجة البيانات، نقوم بسرد كامل المحتويات بما يشمل العناصر المخفية للتثبت من دقة استرجاع الملفات الأصلية دون أي فقدان:

التأكد النهائي من وجود كافة الملفات المسترجعة بتفاصيلها

قدّم هذا الدليل استعراضاً عملياً شاملاً للمفاتيح الأساسية لأداة cpio في نظام أوبونتو، مبيناً كيفية دمجها مع أدوات النظام وأنابيب المعالجة لإدارة الأرشيفات والنسخ الاحتياطي بكفاءة وموثوقية متناهية في بيئات العمل الاحترافية.