Du Command

1) ما هو أمر du ولماذا نستخدمه؟

أمر du اختصار لـ Disk Usage
وظيفته: حساب مساحة التخزين التي تستهلكها الملفات والمجلدات.

متى يفيدك؟

  • عندما تمتلئ المساحة وتريد تعرف “أكبر مجلد/ملف”
  • معرفة حجم مشروع أو مجلد قبل نسخه/ضغطه
  • فحص مجلدات مثل Downloads أو log أو node_modules

ملاحظة مهمة للمبتدئ:
du يقيس المساحة المستخدمة فعليًا على القرص (blocks) وليس بالضرورة “حجم الملف المنطقي” فقط.

2) الصيغة العامة (Syntax)
du [OPTIONS] [PATH]
Bash
  • إذا لم تكتب PATH → يحسب للمجلد الحالي.
3) أهم الخيارات التي ستستخدمها دائمًا
-h عرض حجم مقروء (KB/MB/GB)
du -h .
Bash
-s ملخص (Summary) بدل تفصيل كل شيء
du -sh .
Bash

هذا أكثر أمر يستخدم يوميًا: du -sh folder

-c إجمالي نهائي (Grand total)
du -ch *.log
Bash
-d N تحديد عمق العرض (Depth)
du -h -d 1 .
Bash

يعرض حجم كل عنصر داخل المجلد الحالي (مستوى واحد).

-x لا تتجاوز أنظمة ملفات أخرى

مفيد لو عندك mount داخل مجلد:

du -hx -d 1 /
Bash
4) أمثلة عملية واضحة (مع مشروع)
أ) حجم مجلد معيّن (ملخص سريع)
du -sh ~/project
Bash
ب) عرض أحجام العناصر داخل مجلد (level 1)
du -h -d 1 ~/project
Bash

هذا يساعدك تكتشف بسرعة أي مجلد أكبر.

5) إنشاء هيكل تجريبي (Practice) ثم قياسه
cd ~/project
mkdir -p du_demo/subdir1 du_demo/subdir2
dd if=/dev/zero of=du_demo/subdir1/bigfile.bin bs=1M count=5 2>/dev/null
dd if=/dev/zero of=du_demo/subdir2/medium.bin bs=1M count=2 2>/dev/null
touch du_demo/subdir2/small.txt
Bash

الآن جرّب:

du -h -d 1 du_demo
du -sh du_demo
Bash
6) كيف أطلع “أكبر 10 مجلدات/عناصر” بسرعة؟ (مهم جدًا)

هذا من أكثر الاستخدامات الواقعية:

du -h -d 1 ~/project | sort -h
Bash

ولأكبرها في النهاية:

du -h -d 1 ~/project | sort -h | tail
Bash

أو مباشرة أكبر 10:

du -h -d 1 ~/project | sort -h | tail -n 10
Bash

sort -h يفهم أحجام مثل K/M/G.

7) استثناء مجلدات من القياس (Exclude)

مفيد جدًا مع مشاريع فيها مجلدات كبيرة مثل node_modules أو .git.

استثناء مجلد واحد
du -h -d 2 --exclude=node_modules ~/project
Bash
استثناء أكثر من نمط
du -h -d 2 --exclude=node_modules --exclude=.git --exclude="*.log" ~/project
Bash
استثناء باستخدام pattern
du -h -d 2 --exclude="*.cache*" ~/project
Bash
8) فرق مهم: du vs ls -lh
  • ls -lh file يعرض حجم الملف “المنطقي”.
  • du -h file يعرض المساحة المستخدمة على القرص (قد تختلف بسبب block size أو sparse files).

جرّب:

ls -lh du_demo/subdir1/bigfile.bin
du -h  du_demo/subdir1/bigfile.bin
Bash
9) خيارات إضافية مفيدة (اختياري للمبتدئ)
عرض الحجم النهائي “الإجمالي” مع تفاصيل
du -h -d 1 -c ~/project
Bash
عرض الحجم بالميغابايت أو الكيلوبايت بشكل ثابت
du -BM -s ~/project
du -BK -s ~/project
Bash
10) أخطاء/ملاحظات شائعة
أ) لماذا ملفات فارغة تظهر 4.0K؟

لأن أنظمة الملفات تحفظ أقل “وحدة تخصيص” blocks (مثل 4KB).
حتى ملف 0 بايت قد يأخذ block metadata أو يظهر حد أدنى في du.

ب) “Permission denied”

إذا تقيس مسارات نظام مثل /root بدون صلاحية:

  • استخدم sudo لو مناسب:
sudo du -h -d 1 /var
Bash
11) تدريب سريع (Practice)

نفذ التالي:

cd ~/project

# 1) حجم مجلد
du -sh du_demo

# 2) أحجام داخل المجلد (مستوى 1)
du -h -d 1 du_demo

# 3) استبعاد subdir1
du -h -d 1 --exclude=subdir1 du_demo

# 4) أكبر العناصر داخل du_demo
du -h -d 1 du_demo | sort -h
Bash
هل الشرح الأصلي كافي؟

نعم كبداية جيدة، لكن إضافة مهمة للمبتدئ كانت:

  • استخدام du -sh كأفضل أمر يومي
  • كيفية استخراج الأكبر باستخدام sort -h | tail
  • الفرق بين du و ls -lh
  • استخدام -x لمنع عبور file systems
  • أن الاستثناءات مفيدة جدًا في مشاريع حقيقية