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

المختبر 3.4 - ممارسة كاملة نظام الملفات

الأهداف​

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

  • تطبيق جميع المهارات المكتسبة
  • إدارة هيكل ملفات معقد
  • تنظيم المشاريع مع الأذونات المناسبة
  • أتمتة مهام إدارة الملفات

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

  • تثبيت أوبونتو 24.04
  • فتح الطرفية
  • معرفة المختبرات السابقة (3.1، 3.2، 3.3)

السيناريو: إدارة مشروع ويب​

يجب عليك إنشاء وتنظيم هيكل مشروع ويب مع:

  • سكربتات قابلة للتنفيذ
  • توثيق للقراءة فقط
  • سجلات مع التدوير
  • نسخ احتياطية تلقائية
  • تكوين آمن

الجزء 1: هيكل المشروع​

الخطوة 1: إنشاء الشجرة​

# إنشاء الهيكل الكامل
mkdir -p ~/projet-web/{bin,src/{scripts,config},docs,logs,backup,www/{html,css,js}}

# عرض الهيكل
tree ~/projet-web
# إذا لم يكن tree مثبتًا: sudo apt install tree

الخطوة 2: إنشاء الملفات​

cd ~/projet-web

# السكربتات
cat > src/scripts/deploy.sh << 'EOF'
#!/bin/bash
echo "Déploiement à $(date)" >> ../logs/deploy.log
EOF

cat > src/scripts/backup.sh << 'EOF'
#!/bin/bash
tar -czf ../backup/backup-$(date +%Y%m%d).tar.gz ../www
EOF

# التكوين
cat > src/config/app.conf << 'EOF'
# Configuration Application
APP_NAME=MonApp
APP_VERSION=1.0
DEBUG=false
EOF

# التوثيق
cat > docs/README.md << 'EOF'
# Projet Web
Documentation du projet
EOF

# ملفات الويب
echo "<html><body>Hello World</body></html>" > www/html/index.html
echo "body { color: blue; }" > www/css/style.css
echo "console.log('Hello');" > www/js/app.js

الجزء 2: الأذونات المناسبة​

الخطوة 1: أذونات السكربتات​

# سكربتات قابلة للتنفيذ للمالك والمجموعة
chmod 750 src/scripts/*.sh

# التحقق
ls -l src/scripts/

الخطوة 2: أذونات التوثيق​

# التوثيق للقراءة فقط للجميع
chmod 644 docs/*

# التحقق
ls -l docs/

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

# التكوين الحساس: للمالك فقط
chmod 600 src/config/app.conf

# التحقق
ls -l src/config/

الخطوة 4: أذونات الويب​

# ملفات الويب: للقراءة للجميع
chmod 644 www/html/* www/css/* www/js/*

# مجلدات الويب: قابلة للتنفيذ للتنقل
chmod 755 www www/html www/css www/js

الجزء 3: التنظيم مع الروابط​

الخطوة 1: الروابط الرمزية المفيدة​

# رابط إلى التكوين من bin
ln -s ../src/config/app.conf bin/config

# رابط إلى السجلات من bin
ln -s ../logs bin/logs

# رابط إلى النسخة الحالية
ln -s www www/current

# التحقق
ls -l bin/

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

# إنشاء رابط إلى سكربت النشر
sudo ln -s ~/projet-web/src/scripts/deploy.sh /usr/local/bin/web-deploy

# الاختبار
web-deploy
cat ~/projet-web/logs/deploy.log

الجزء 4: البحث والصيانة​

الخطوة 1: سكربت البحث​

# إنشاء سكربت البحث
cat > bin/search.sh << 'EOF'
#!/bin/bash
echo "Recherche dans le projet..."
find . -name "$1" -type f
EOF

chmod +x bin/search.sh

# الاستخدام
cd ~/projet-web
./bin/search.sh "*.sh"

الخطوة 2: التنظيف التلقائي​

# سكربت التنظيف
cat > src/scripts/cleanup.sh << 'EOF'
#!/bin/bash
# حذف السجلات > 30 يوم
find ../logs -name "*.log" -mtime +30 -delete
# حذف النسخ الاحتياطية > 90 يوم
find ../backup -name "*.tar.gz" -mtime +90 -delete
echo "Nettoyage effectué: $(date)"
EOF

chmod +x src/scripts/cleanup.sh

الجزء 5: المراقبة والتحقق​

الخطوة 1: سكربت التحقق​

# سكربت التحقق
cat > bin/check-project.sh << 'EOF'
#!/bin/bash
echo "=== Vérification Projet ==="
echo
echo "Structure:"
tree -L 2
echo
echo "Permissions scripts:"
ls -l src/scripts/
echo
echo "Espace disque:"
du -sh .
echo
echo "Fichiers récents:"
find . -type f -mtime -1
EOF

chmod +x bin/check-project.sh

# التنفيذ
cd ~/projet-web
./bin/check-project.sh

الخطوة 2: الإحصائيات​

# عد الملفات
find ~/projet-web -type f | wc -l

# حسب النوع
find ~/projet-web -name "*.sh" | wc -l
find ~/projet-web -name "*.html" | wc -l
find ~/projet-web -name "*.log" | wc -l

الجزء 6: الأمان​

الخطوة 1: التحقق من الأذونات​

# العثور على الملفات ذات الأذونات الواسعة
find ~/projet-web -type f -perm 777
find ~/projet-web -type f -perm -o+w # قابلة للكتابة للعالم

# التصحيح إذا لزم الأمر
find ~/projet-web -type f -perm 777 -exec chmod 755 {} \;

الخطوة 2: الملفات الحساسة​

# تحديد ملفات التكوين
find ~/projet-web -name "*.conf" -o -name "*.config"

# التحقق من أذوناتها
find ~/projet-web -name "*.conf" -exec ls -l {} \;

# التأكد من حمايتها
find ~/projet-web -name "*.conf" -exec chmod 600 {} \;

الجزء 7: الأتمتة​

الخطوة 1: سكربت النشر الكامل​

# سكربت النشر
cat > src/scripts/full-deploy.sh << 'EOF'
#!/bin/bash
set -e

PROJECT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
LOG="$PROJECT_DIR/logs/deploy-$(date +%Y%m%d).log"

{
echo "=== Déploiement $(date) ==="

# النسخ الاحتياطي
echo "Création backup..."
$PROJECT_DIR/src/scripts/backup.sh

# التحقق
echo "Vérification structure..."
$PROJECT_DIR/bin/check-project.sh

# النشر (محاكاة)
echo "Déploiement fichiers..."
# cp -r $PROJECT_DIR/www/* /var/www/html/

echo "Déploiement terminé"
} >> "$LOG" 2>&1

echo "Déploiement terminé. Log: $LOG"
EOF

chmod +x src/scripts/full-deploy.sh

التحقق النهائي​

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

تحقق من أن:

  • تم إنشاء هيكل المشروع وتنظيمه
  • الأذونات المناسبة لكل نوع من الملفات
  • الروابط الرمزية تم تكوينها بشكل صحيح
  • السكربتات وظيفية وقابلة للتنفيذ
  • التوثيق متاح
  • السجلات والنسخ الاحتياطية تم تكوينها
  • تم التحقق من الأمان (لا توجد أذونات 777)
  • السكربتات الأتمتة وظيفية

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

  1. لماذا تنظيم مشروع بهذه الهيكلية؟

    • فصل واضح للمسؤوليات
    • سهولة الصيانة
    • تحسين الأمان
  2. ما أهمية الأذونات في المشروع؟

    • حماية البيانات الحساسة
    • التحكم في الوصول
    • منع الأخطاء
  3. كيف تحسن الروابط الرمزية التنظيم؟

    • تبسيط الوصول
    • إدارة الإصدارات
    • تقليل التكرار

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

  • الوحدة 4: إدارة العمليات
  • الوحدة 5: المستخدمون والأذونات
  • الوحدة 6: سكربتات الشيل

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