فصل ششم: اسکریپت‌نویسی مقدماتی با bash

نوشتن یک اسکریپت ساده‌ی خودکارسازی

ترکیب همه‌ی آموخته‌ها در یک اسکریپت واقعی

در این درس پایانی، همه‌ی مفاهیم این فصل را در یک اسکریپت واقعی برای گرفتن نسخه‌ی پشتیبان از یک پایگاه‌داده ترکیب می‌کنیم:

#!/bin/bash

BACKUP_DIR="/home/ali/backups"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
FILENAME="backup_${DATE}.sql"

if [ ! -d "$BACKUP_DIR" ]; then
    echo "پوشه‌ی بکاپ وجود ندارد؛ در حال ساخت..."
    mkdir -p "$BACKUP_DIR"
fi

echo "در حال گرفتن نسخه‌ی پشتیبان از پایگاه‌داده..."
pg_dump mydb > "$BACKUP_DIR/$FILENAME"

if [ $? -eq 0 ]; then
    echo "بکاپ با موفقیت در $BACKUP_DIR/$FILENAME ذخیره شد"
else
    echo "خطا در گرفتن بکاپ!"
    exit 1
fi

echo "در حال حذف بکاپ‌های قدیمی‌تر از ۷ روز..."
find "$BACKUP_DIR" -name "backup_*.sql" -mtime +7 -delete

echo "پایان عملیات بکاپ‌گیری"

در این اسکریپت، متغیر ویژه‌ی $? بلافاصله بعد از یک دستور، کد خروجی آن دستور را نشان می‌دهد؛ مقدار صفر یعنی موفقیت و هر عدد غیرصفر یعنی خطا. با بررسی این مقدار، اسکریپت می‌تواند تصمیم بگیرد که آیا ادامه دهد یا با پیام خطا متوقف شود. $(date ...) نیز خروجی یک دستور دیگر را در متغیر می‌ریزد. دستور find با فلگ -mtime +7 فایل‌های قدیمی‌تر از هفت روز را پیدا و با -delete حذف می‌کند. در اسکریپت‌های واقعی‌تر، معمولاً از set -e در ابتدای فایل نیز استفاده می‌شود تا با اولین خطای غیرمنتظره، کل اسکریپت بلافاصله متوقف شود.

گام بعدی

چنین اسکریپتی را می‌توان با cron (زمان‌بند خودکار لینوکس) هر شب به‌صورت خودکار اجرا کرد تا بکاپ‌گیری کاملاً بدون دخالت انسانی انجام شود. با تمام آنچه در این دوره آموختید، اکنون پایه‌ی محکمی برای ادامه‌ی مسیر به سمت دوره‌های داکر و دواپس دارید.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.