المختبر 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)
- فهم الفروقات بين النوعين
- استخدام الروابط في سيناريوهات عملية
أسئلة للتفكير
-
متى تستخدم رابط رمزي مقابل رابط ثابت؟
- رمزي: المجلدات، الملفات على FS مختلفة، الإصدارات
- ثابت: نفس FS، النسخ الاحتياطي الآمن
-
لماذا تشترك الروابط الثابتة في نفس inode؟
- تشير إلى نفس البيانات على القرص
- لا يتم حذف الملف إلا عند حذف جميع الروابط
-
ما الفرق بين find و locate؟
- find: بحث في الوقت الحقيقي، أكثر مرونة
- locate: قاعدة بيانات مفهرسة مسبقًا، أسرع ولكن قد تكون قديمة
الخطوات التالية
- المختبر 3.4: ممارسة كاملة
- الفصل 3.6: البحث عن الملفات
- الفصل 3.7: الروابط الرمزية والثابتة
تم إنشاء المختبر في: ديسمبر 2024 - تم اختباره على Ubuntu 24.04