إتقان الأمر du بأمثلة عملية وخيارات متقدمة

نظرة عامة

يُمثّل الامتلاء المفاجئ لسعة التخزين أحد أبرز التحديات التي تواجه مسؤولي خوادم لينكس، حيث يصبح التعرف الفوري على المجلدات والملفات الأكثر استهلاكاً للمساحة أمراً حاسماً لاستقرار النظام. بدلاً من الغوص في التفاصيل النظرية لصفحات التوثيق (man pages)، يقدّم هذا الدليل شرحاً عملياً وتطبيقياً يغطي الاستخدامات الأساسية لأداة du وصولاً إلى الحيل المتقدمة الأكثر فاعلية في بيئات الإنتاج الفعلية.

1. تجهيز بيئة الاختبار واستكشاف السلوك الافتراضي للأداة du

سنبدأ بإنشاء هيكل مجلدات تجريبي وملفات باحجام متباينة لاختبار الأداة عبر تنفيذ الأمر التالي: mkdir -p /tmp/du_demo/logs /tmp/du_demo/backup && truncate -s 10M /tmp/du_demo/backup/data.bin && truncate -s 5M /tmp/du_demo/logs/app.log.

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

تتولى أداة du (اختصاراً لـ Disk Usage) حساب الحجم الحقيقي الذي تشغله المجلدات ومحتوياتها الفرعية على وسائط التخزين، وذلك بالاعتماد على كتل البيانات (Blocks - بقيمة افتراضية تبلغ 1024 بايت).
عند استدعاء الأداة دون أي معاملات، فإنها تسرد كل مجلد فرعي متبوعاً بمقدار المساحة المحجوزة كقيمة رقمية مجردة.
⚙️ [الخيارات الجوهرية]

-h : عرض الأحجام بوحدات يسهل على الإنسان قراءتها وفهمها (مثل K وM وG).
-a : تضمين الملفات الفردية ضمن النتائج بجانب المجلدات.
-s : الاكتفاء بتقديم ملخص إجمالي للمساحة دون تفصيل العناصر الفرعية.
-d : تحديد أقصى عمق تفرع مسموح به عند فحص المجلدات الداخلية.
-c : إلحاق سطر ختامي يوضح المجموع الكلي لكافة البيانات المعروضة.
-b : قراءة الحجم الظاهري الفعلي للملفات بالبايت بدلاً من حساب كتل التخزين المحجوزة.

تنفيذ أمر du الافتراضي على مسار الاختبار

يتيح الخيار -h (أو --human-readable) تحويل القياسات الرقمية الخام إلى صيغ مبسطة ومألوفة مثل الكيلوبايت والميجابايت والجيجابايت.
يسهل هذا التنسيق قراءة البيانات واستيعاب حجم كل مسار بسرعة دون الحاجة لإجراء عمليات حسابية يدوية.

استعراض المساحة بصيغة سهلة القراءة باستخدام الخيار -h

2. التحكم في عمق التفرع وعرض الإجمالي التراكمي (-d, -s, -c)

لتوضيح آلية التحكم في عمق الفحص الهيكلي، سنقوم بإنشاء شجرة مجلدات متعددة الطبقات مع ملف اختباري عبر تشغيل: mkdir -p /tmp/du_demo/nested/level1/level2 && truncate -s 2M /tmp/du_demo/nested/level1/level2/dummy.bin.

بناء هيكل مجلدات متعدد المستويات

من خلال تطبيق الخيار -d 1 (أو --max-depth=1)، نلزم الأداة بالوقوف عند المستوى الأول فقط من المجلدات التابعة للمسار المحدد وتجاهل ما هو أعمق من ذلك.
يمنع هذا الإجراء تشتيت المخرجات بمئات المسارات المتشعبة، مما يمنحك نظرة بانورامية سريعة لاستهلاك المجلدات الرئيسية.

حصر فحص المجلدات عند المستوى الأول عبر المعامل -d 1

في حال كنت بحاجة إلى معرفة الحجم الكلي دون الرغبة في رؤية تفاصيل المسارات الفرعية، يوفر الخيار -s (أو --summarize) تقريراً موجزاً يختصر المساحة في سطر واحد فقط.
دمجه مع الخيار -h يمنحك خلاصة سريعة ومباشرة لإجمالي المساحة التي يشغلها المجلد المستهدف.

عرض ملخص مقتضب للمساحة الكلية باستخدام الخيار -sh

عند إضافة المعامل -c (أو --total)، سيقوم النظام باحتساب مجموع القيم المعروضة وطباعة سطر نهائي يحمل التسمية total.
يفيد هذا الأسلوب بشكل كبير عندما تريد مقارنة استهلاك كل فرع بشكل مستقل مع معرفة العبء التراكمي الذي يمثلونه مجتمعين.

إظهار المجموع النهائي التراكمي مع الخيار -c

3. فحص سعة الملفات الفردية واستبعاد أنماط محددة (-a, –exclude)

لتجربة فلترة النتائج وتجاوز ملفات معينة، سنقوم بإنشاء بعض الملفات المؤقتة عبر الأمر: touch /tmp/du_demo/temp1.tmp /tmp/du_demo/temp2.tmp.

توليد ملفات مؤقتة لاختبار الفلترة والاستبعاد

يعمل الخيار -a (أو --all) على توسيع نطاق البحث ليشمل كل ملف على حدة إلى جانب المجلدات الحاضنة له.
بدمج هذا الخيار مع -h، نستطيع تفكيك محتويات مجلد مثل /tmp/du_demo/logs واستعراض سعة كل ملف داخله بدقة وبأرقام واضحة.

فحص تفصيلي للملفات الفردية عبر الخيار -ah

تتيح التعليمة --exclude إسقاط أي ملفات أو مجلدات تتطابق مع نمط نصي معين من حسابات التخزين.
على سبيل المثال، يضمن تمرير --exclude='*.tmp' استثناء كافة الملفات المؤقتة ذات الامتداد (.tmp)، مما يعكس بدقة الحجم الفعلي للبيانات الدائمة فقط.

استثناء الملفات المؤقتة من الحساب باستخدام المعامل –exclude

4. سيناريوهات عملية: ترتيب استهلاك المجلدات واصطياد الملفات الضخمة

لاختبار عمليات الفرز والتقاط الملفات الثقيلة عملياً، سننشئ ملفين إضافيين باحجام كبيرة نسبياً عبر تشغيل: truncate -s 50M /tmp/du_demo/backup/big.tar && truncate -s 20M /tmp/du_demo/logs/access.log.

إنشاء ملفات بيانات كبيرة لاختبار عمليات الفرز والترتيب

عند تمرير مخرجات du -h -d 1 /tmp/du_demo عبر ممر الأوامر (|) إلى الأمر sort -hr، يُعاد ترتيب المجلدات تنازلياً من الأكبر حجماً إلى الأصغر.
تعد هذه الخطوة هي الأسرع على الإطلاق لتحديد المجلد المتسبب في استنزاف التخزين فور حدوث الأزمة.

ترتيب المجلدات تنازلياً حسب المساحة المستهلكة عبر الربط مع sort

لحصر أكبر العناصر المؤثرة على مستوى النظام ككل، نقوم بدمج الأمر du -ah /tmp/du_demo مع sort -hr، ثم نقتطع النتائج باستخدام head -n 5 لعرض أضخم 5 عناصر فقط.
يوفر هذا الدمج وسيلة دقيقة لتعقب وتحديد الملفات العملاقة المسؤولة عن أزمات امتلاء الأقراص ومعالجتها فوراً.

استخراج أضخم 5 ملفات ومجلدات تستهلك المساحة في النظام

بعد اكتمال كافة التجارب التطبيقية، يمكننا تنظيف بيئة العمل وحذف شجرة المجلدات الاختبارية بالكامل عبر تنفيذ: rm -rf /tmp/du_demo.

إزالة مجلد التجارب المؤقت وتنظيف البيئة

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