آموزش ایجاد اسکریپت بکاپ‌گیری برای فایلهای مهم در لینوکس

اسکریپت بکاپ‌گیری

در یک سیستم لینوکس، داشتن بکاپ‌گیری منظم برای محافظت از داده‌ها، ایمن نگه داشتن آنها و آسان‌تر کردن بازیابی در صورت بروز مشکل بسیار مهم است. چه برای مدیریت فایل‌های شخصی باشد یا اجرای یک برنامه راه‌اندازی توسعه یا مدیریت سرور، نقش یک برنامه بکاپ‌گیری قوی بسیار حیاتی و پر اهمیت است .

یکی از ساده‌ترین و انعطاف‌پذیرترین راه‌ها برای مدیریت بکاپ‌گیری، نوشتن یک اسکریپت سفارشی است که به شما امکان می‌دهد دقیقا تصمیم بگیرید از چه چیزی، چه زمانی و کجا بکاپ گرفته شود تا در زمان صرفه‌جویی کرده و خطر از دست دادن داده‌ها را کاهش بدهد.

در این مطلب، یاد خواهید گرفت که چگونه یک شِل اسکریپت ساده ایجاد کنید که به طور خودکار از فایل‌های مهم بکاپ‌ بگیرد.

چرا از اسکریپت بکاپ‌گیری استفاده کنیم؟

استفاده از اسکریپت بکاپ‌گیری در لینوکس، کنترل و انعطاف‌پذیری بیشتری را در مورد محافظت از داده‌های مهم به مدیران سیستم می‌دهد.

به همین دلیل است که این یک حرکت هوشمندانه است:

  • بکاپ‌گیری خودکار: می‌توانید اسکریپت را طوری برنامه‌ریزی کنید که با استفاده از ابزارهایی مانند cron به تنهایی اجرا شود، بنابراین لازم نیست  پیگیر بکاپ‌گیری دستی باشید.
  • کنترل کامل: شما تصمیم می‌گیرید که از چه چیزی، کجا و چند وقت یکبار بکاپ گرفته شود. می‌تواند کپی‌های روزانه از etc/، اسنپ‌شات‌های هفتگی از دایرکتوری‌های home یا دایرکتوری‌های انتخابی باشد.

ایجاد یک اسکریپت بکاپ‌گیری برای فایل‌های مهم

ترمینال خود را باز نموده و به دایرکتوری که می‌خواهید اسکریپت را در آن ذخیره کنید بروید( مثلا دایرکتوری home/ یا /usr/local/bin/ برای دسترسی در کل سیستم)

فایل اسکریپت را با استفاده از یک ویرایشگر متن مانند nano یا vim ایجاد کنید:

nano backup_script.sh

در زیر یک اسکریپت ساده وجود دارد که فایل‌ها را در یک دایرکتوری مشخص بکاپ‌گیری می‌کند.

#!/bin/bash

# Define source and destination directories
SOURCE_DIR="/home/user/Parsdev" # Source directory to back up
BACKUP_DIR="/home/user/backups" # Destination directory for backups

# Create a timestamp for the backup folder
TIMESTAMP=$(date +'%Y%m%d%H%M%S')

# Create a new backup folder with the timestamp
BACKUP_FOLDER="$BACKUP_DIR/backup_$TIMESTAMP"
mkdir -p "$BACKUP_FOLDER"

# Copy files to the backup folder
cp -r "$SOURCE_DIR"/* "$BACKUP_FOLDER"

# Log the completion of the backup
echo "Backup completed at $TIMESTAMP" >> "$BACKUP_DIR/backup_log.txt"

# Optional: Remove backups older than 30 days
find "$BACKUP_DIR" -type d -name "backup_*" -mtime +30 -exec rm -rf {} \;

توضیح اسکریپت:

  • SOURCE_DIR: دایرکتوری حاوی فایل‌هایی که می‌خواهید از آنها بکاپ بگیرید، مانند home/user/Parsdev/
  • BACKUP_DIR: دایرکتوری که بکاپ‌ها در آن ذخیره می‌شوند، مانند home/user/backups/
  • TIMESTAMP: متغیری که تاریخ و زمان فعلی را برای شناسایی منحصر به فرد هر پوشه بکاپ ذخیره می‌کند.
  • mkdir -p: پوشه بکاپ را با برچسب زمانی ایجاد می‌کند.
  • cp -r: تمام فایل‌ها و زیرشاخه‌ها را از پوشه منبع به پوشه بکاپ کپی می‌کند.
  • دستور echo تکمیل بکاپ را ثبت و یک برچسب زمانی به فایل لاگ اضافه می‌کند.
  • دستور find بکاپ‌های قدیمی‌تر از ۳۰ روز را حذف و از پر شدن پوشه بکاپ شما با فایل‌های قدیمی جلوگیری می‌کند.

اسکریپت را ذخیره کرده و ویرایشگر متن را ببندید.
حالا که اسکریپت نوشته شده است، باید آن را قابل اجرا کنید.

chmod +x backup_script.sh

اکنون می‌توانید اسکریپت را با اجرای دستور زیر به صورت دستی اجرا کنید:

./backup_script.sh

اگر همه چیز به درستی تنظیم شده باشد، باید یک نسخه بکاپ از فایل‌های شما در پوشه بکاپ مشخص شده ایجاد کند.

خرید VPS لینوکس با دسترسی کامل SSH و منابع اختصاصی، مناسب برای برنامه‌نویسان، توسعه‌دهندگان و مدیران سایت در پارسدو فراهم است.

زمان‌بندی اسکریپت بکاپ‌گیری با استفاده از Cron

برای خودکارسازی فرآیند بکاپ، می‌توانید اسکریپت را طوری زمان‌بندی کنید که در فواصل زمانی مشخص با استفاده از cron، اجرا شود.

فایل پیکربندی cron را با تایپ کردن دستور زیر باز کنید:

crontab -e

یک cron job اضافه کنید تا اسکریپت در زمان مشخص اجرا شود. برای مثال، برای اجرای اسکریپت بکاپ هر روز ساعت ۲ بامداد، خط زیر را به فایل cron اضافه کنید:

۰ ۲ * * * /path/to/backup_script.sh

اسکریپت اکنون به طور خودکار در زمان مشخص شده اجرا می‌شود.

برای تایید بکاپ‌گیری، می‌توانید دایرکتوری بکاپ را بررسی کنید تا مطمئن شوید که بکاپ‌ها طبق انتظار ایجاد می‌شوند، یا می‌توانید لاگ‌های cron را هم بررسی کنید تا تایید شود که اسکریپت بکاپ در زمان برنامه‌ریزی شده اجرا می‌شود.

grep CRON /var/log/syslog

افزودن فشرده‌سازی با tar و gzip

به جای کپی کردن مستقیم فایل‌ها، می‌توانید کل بکاپ را در یک فایل .tar.gz فشرده کنید، که باعث صرفه‌جویی در فضا و مرتب نگه داشتن همه چیز می‌شود.

اسکریپت اصلاح شده با فشرده‌سازی:

#!/bin/bash

# Define source and destination directories
SOURCE_DIR="/home/user/Parsdev"
BACKUP_DIR="/home/user/backups"

# Create a timestamp
TIMESTAMP=$(date +'%Y%m%d%H%M%S')

# Define the backup filename
BACKUP_FILE="$BACKUP_DIR/backup_$TIMESTAMP.tar.gz"

# Create the backup directory if it doesn't exist
mkdir -p "$BACKUP_DIR"

# Create a compressed archive of the source directory
tar -czf "$BACKUP_FILE" -C "$SOURCE_DIR" .

# Log the backup completion
echo "Compressed backup created at $TIMESTAMP" >> "$BACKUP_DIR/backup_log.txt"

# Optional: Delete old backups (over 30 days)
find "$BACKUP_DIR" -type f -name "backup_*.tar.gz" -mtime +30 -exec rm -f {} \;

ارسال بکاپ به یک سرور راه ریموت با استفاده از scp

اگر می‌خواهید بکاپ‌های خود را روی یک سرور ریموت مانند یک VPS یا NAS ذخیره کنید، می‌توانید آرشیو را با استفاده از دستور scp آپلود نمائید.

به انتهای اسکریپت موارد زیر را اضافه کنید:

# Define remote server info
REMOTE_USER="your_user"
REMOTE_HOST="your-server-ip"
REMOTE_DIR="/remote/backup/location"

# Send the backup file to the remote server
scp "$BACKUP_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"

احراز هویت کلید SSH را بین دستگاه لوکال خود و سرور ریموت تنظیم کنید تا از وارد کردن دستی رمزهای عبور جلوگیری شود.

جمع‌بندی

ایجاد یک اسکریپت بکاپ‌گیری در لینوکس روشی ساده و کاربردی برای محافظت از داده‌های شما در برابر از دست دادن تصادفی است. با زمان‌بندی اسکریپت با cron، می‌توانید فرآیند بکاپ‌گیری را خودکار کنید تا فایل‌های مهم شما به طور منظم و بدون نیاز به انجام دستی آن ذخیره شوند.

نوشتن نظر

نوشتن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *