انتقل إلى المحتوى الرئيسي

المختبر 3.3 - البحث عن الملفات والروابط

الأهداف​

في نهاية هذا المختبر، ستكون قادرًا على:

  • البحث عن الملفات باستخدام find و locate
  • إنشاء روابط رمزية
  • إنشاء روابط ثابتة
  • فهم الفروقات بين أنواع الروابط
  • استخدام الروابط في سيناريوهات عملية

المتطلبات الأساسية​

  • تثبيت Ubuntu 24.04
  • فتح الطرفية
  • وصول مستخدم عادي

التمرين 1: البحث باستخدام find​

الخطوة 1: البحث الأساسي​

# إنشاء ملفات اختبار
mkdir -p ~/test-search/{docs,scripts,data}
touch ~/test-search/docs/{file1.txt,file2.txt}
touch ~/test-search/scripts/{script1.sh,script2.sh}
touch ~/test-search/data/{data1.csv,data2.csv}

# البحث بالاسم
find ~/test-search -name "file1.txt"

# البحث باستخدام wildcards
find ~/test-search -name "*.txt"

# البحث بالنوع
find ~/test-search -type f # ملفات فقط
find ~/test-search -type d # مجلدات فقط

الخطوة 2: البحث المتقدم​

# حسب الحجم
find ~/test-search -size +1M # أكثر من 1MB
find ~/test-search -size -1k # أقل من 1KB

# حسب تاريخ التعديل
find ~/test-search -mtime -1 # تم تعديلها خلال 24 ساعة
find ~/test-search -mtime +7 # تم تعديلها منذ أكثر من 7 أيام

# حسب الأذونات
find ~/test-search -perm 755

# التوليفات
find ~/test-search -name "*.txt" -mtime -1

الخطوة 3: تنفيذ الأوامر​

# العثور على وحذف (احذر!)
find ~/test-search -name "*.tmp" -delete

# العثور على وعرض
find ~/test-search -name "*.txt" -exec ls -lh {} \;

# العثور على وعد
find ~/test-search -type f | wc -l

التمرين 2: locate​

الخطوة 1: التثبيت والتكوين​

# تثبيت locate
sudo apt update
sudo apt install mlocate

# تحديث قاعدة البيانات
sudo updatedb

# البحث
locate file1.txt

# البحث غير الحساس لحالة الأحرف
locate -i file

الخطوة 2: تحديد النتائج​

# تحديد عدد النتائج
locate file | head -10

# العد
locate file | wc -l

التمرين 3: الروابط الرمزية​

الخطوة 1: إنشاء روابط رمزية​

# إنشاء ملف
echo "محتوى أصلي" > ~/original.txt

# إنشاء رابط رمزي
ln -s ~/original.txt ~/lien-symbolique.txt

# عرض الرابط
ls -l ~/lien-symbolique.txt
# لاحظ السهم: lien-symbolique.txt -> /home/user/original.txt

# القراءة عبر الرابط
cat ~/lien-symbolique.txt

الخطوة 2: الروابط الرمزية إلى المجلدات​

# إنشاء رابط إلى مجلد
ln -s ~/test-search ~/lien-repertoire

# استخدام الرابط
ls ~/lien-repertoire
cd ~/lien-repertoire

الخطوة 3: الروابط الرمزية المطلقة مقابل النسبية​

cd ~/test-search

# رابط مطلق
ln -s /home/$USER/original.txt lien-absolu.txt

# رابط نسبي
ln -s ../original.txt lien-relatif.txt

# رؤية الفرق
ls -l lien-*.txt

التمرين 4: الروابط الثابتة​

الخطوة 1: إنشاء روابط ثابتة​

# إنشاء ملف
echo "محتوى" > ~/fichier-original.txt

# إنشاء رابط ثابت
ln ~/fichier-original.txt ~/lien-dur.txt

# عرض الملفين
ls -li ~/fichier-original.txt ~/lien-dur.txt
# لاحظ: نفس inode (الرقم الأول)

الخطوة 2: خصائص الروابط الثابتة​

# التعديل عبر الرابط الثابت
echo "محتوى جديد" >> ~/lien-dur.txt

# عرض الملف الأصلي
cat ~/fichier-original.txt # تم تعديل المحتوى!

# عد الروابط
ls -l ~/fichier-original.txt
# الرقم بعد الأذونات = عدد الروابط الثابتة

الخطوة 3: حذف رابط ثابت​

# حذف الملف "الأصلي"
rm ~/fichier-original.txt

# الرابط الثابت لا يزال موجودًا!
cat ~/lien-dur.txt # المحتوى لا يزال هناك

# التحقق من inodes
ls -li ~/lien-dur.txt

التمرين 5: مقارنة الروابط الرمزية مقابل الثابتة​

الخطوة 1: اختبار الحذف​

# إنشاء ملف، رابط رمزي ورابط ثابت
echo "اختبار" > test.txt
ln -s test.txt lien-sym.txt
ln test.txt lien-dur.txt

# حذف الملف الأصلي
rm test.txt

# اختبار الرابط الرمزي
cat lien-sym.txt # ❌ خطأ: الملف غير موجود

# اختبار الرابط الثابت
cat lien-dur.txt # ✅ لا يزال يعمل!

الخطوة 2: قيود الروابط الثابتة​

# الروابط الثابتة لا تعمل لـ:
# 1. المجلدات
# ln dir1 dir2 # ❌ خطأ

# 2. أنظمة الملفات المختلفة
# ln /mnt/external/file.txt ~/lien.txt # ❌ خطأ إذا كان FS مختلفًا

# 3. الروابط الرمزية يمكنها عبور FS
ln -s /mnt/external/file.txt ~/lien-sym.txt # ✅ يعمل

التمرين 6: حالات استخدام عملية​

الخطوة 1: السكربتات في PATH​

# إنشاء سكربت
cat > ~/mon-script.sh << 'EOF'
#!/bin/bash
echo "تم تنفيذ السكربت!"
EOF

chmod +x ~/mon-script.sh

# إنشاء رابط في مجلد PATH
sudo ln -s ~/mon-script.sh /usr/local/bin/mon-script

# الاستخدام من أي مكان
mon-script

الخطوة 2: إصدارات البرامج​

# محاكاة الإصدارات
mkdir -p ~/app/{v1.0,v2.0}
echo "الإصدار 1.0" > ~/app/v1.0/app.txt
echo "الإصدار 2.0" > ~/app/v2.0/app.txt

# رابط إلى الإصدار الحالي
ln -s ~/app/v2.0 ~/app/current

# الاستخدام
cat ~/app/current/app.txt

# تغيير الإصدار بسهولة
rm ~/app/current
ln -s ~/app/v1.0 ~/app/current

الخطوة 3: التكوين​

# ملف التكوين في home
echo "config=value" > ~/.myapp-config

# رابط من /etc
sudo ln -s ~/.myapp-config /etc/myapp-config

# الاستخدام
cat /etc/myapp-config

التحقق​

قائمة التحقق​

تحقق من أنك تستطيع:

  • البحث عن الملفات باستخدام find
  • استخدام locate للبحث السريع
  • إنشاء روابط رمزية (ln -s)
  • إنشاء روابط ثابتة (ln)
  • فهم الفروقات بين النوعين
  • استخدام الروابط في سيناريوهات عملية

أسئلة للتفكير​

  1. متى تستخدم رابط رمزي مقابل رابط ثابت؟

    • رمزي: المجلدات، الملفات على FS مختلفة، الإصدارات
    • ثابت: نفس FS، النسخ الاحتياطي الآمن
  2. لماذا تشترك الروابط الثابتة في نفس inode؟

    • تشير إلى نفس البيانات على القرص
    • لا يتم حذف الملف إلا عند حذف جميع الروابط
  3. ما الفرق بين find و locate؟

    • find: بحث في الوقت الحقيقي، أكثر مرونة
    • locate: قاعدة بيانات مفهرسة مسبقًا، أسرع ولكن قد تكون قديمة

الخطوات التالية​

  • المختبر 3.4: ممارسة كاملة
  • الفصل 3.6: البحث عن الملفات
  • الفصل 3.7: الروابط الرمزية والثابتة

تم إنشاء المختبر في: ديسمبر 2024 - تم اختباره على Ubuntu 24.04