SQL با CustomBuild و ابزارهای خط فرمان در DirectAdmin

DirectAdmin امکانات قدرتمندی برای بک‌آپ‌گیری از دیتابیس‌ها، ساخت بک‌آپ کامل از خط فرمان، بازیابی SQL، بررسی فضای دیسک قبل از بک‌آپ و حتی بک‌آپ‌گیری rsync ارائه می‌دهد. این مقاله تمام روش‌های بک‌آپ SQL با CustomBuild، نحوه restore، اسکریپت‌های خودکار، و نکات مهم نسخه‌های MySQL/MariaDB را به‌صورت کامل توضیح می‌دهد.

DirectAdmin SQL BackupCustomBuild MySQLCommand-Line Backup

~2 min read • Updated Feb 27, 2026

1. بک‌آپ‌گیری از فایل‌های SQL با CustomBuild


برای بک‌آپ‌گیری از دیتابیس‌ها خارج از سیستم بک‌آپ معمول DirectAdmin، می‌توانید از قابلیت mysql_backup در CustomBuild استفاده کنید.


1.1 ایجاد بک‌آپ SQL


da build set mysql_backup yes
da build mysql_backup

برای جلوگیری از overwrite شدن بک‌آپ‌ها در دفعات بعد:


mv mysql_backups mysql_backups.`date +%F`

نکته: فایل‌های SQL شامل دستورات DROP DATABASE و CREATE DATABASE هستند و با بک‌آپ‌های معمول DirectAdmin قابل جایگزینی نیستند.


2. بازیابی (Restore) فایل‌های SQL


پس از بالا آمدن MySQL و درست بودن یوزر da_admin:


cd /usr/local/directadmin/custombuild/mysql_backups
wget http://files.directadmin.com/services/mysql/restore_sql_files.sh
chmod 755 restore_sql_files.sh
./restore_sql_files.sh

برای بازیابی جداول mysql.* (در مواقع اضطراری):


./restore_sql_files.sh with_mysql

هشدار: این کار پسورد da_admin را overwrite می‌کند.


2.1 نکته مهم درباره نسخه‌های MySQL


بک‌آپ‌های SQL همیشه بین نسخه‌های مختلف MySQL/MariaDB قابل بازیابی نیستند. مثال:


  • در MySQL 5.7 ستون password به authentication_string تغییر کرده است.

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


3. ساخت بک‌آپ کامل از خط فرمان


3.1 بک‌آپ کامل همه کاربران


/usr/local/directadmin/directadmin admin-backup --destination=/home/admin/admin_backups

3.2 بک‌آپ کاربران مشخص


/usr/local/directadmin/directadmin admin-backup --destination=/home/admin/admin_backups --user=testuser1 --user=testuser2

3.3 بازیابی یک کاربر


echo "action=restore&ip%5Fchoice=file&local%5Fpath=%2Fhome%2Fadmin%2Fadmin%5Fbackups&owner=admin&select%30=user%2Eadmin%2Etestuser%2Etar%2Egz&type=admin&value=multiple&when=now&where=local" >> /usr/local/directadmin/data/task.queue

برای تعیین IP جدید:


ip_choice=select&ip=1.2.3.4

4. اسکریپت نمونه برای restore خودکار


#!/bin/sh
OWNER=admin
LOCAL_PATH=/home/${OWNER}/admin_backups
IP_CHOICE=select
IP=1.2.3.4

echo -n "action=restore&local_path=${LOCAL_PATH}&owner=${OWNER}&when=now&where=local&type=admin";

if [ "${IP_CHOICE}" = "select" ]; then
       echo -n "&ip_choice=select&ip=${IP}";
else
       echo -n "&ip_choice=${IP_CHOICE}";
fi

cd ${LOCAL_PATH}
COUNT=0
for i in `/bin/ls *.gz`; do
{
       echo -n "&select${COUNT}=$i";
       COUNT=$(( $COUNT + 1 ))
};
done;

echo "";
exit 0;

و سپس:


/root/restore_all.sh >> /usr/local/directadmin/data/task.queue

5. بررسی فضای دیسک قبل از بک‌آپ


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


#!/bin/sh
PARTITION=/dev/mapper/VolGroup00-LogVol00
MAXUSED=90

checkfree()
{
        DISKUSED=`df -P $PARTITION | awk '{print $5}' | grep % | cut -d% -f1`
        echo "$DISKUSED < $MAXUSED" | bc
}
if [ `checkfree` -eq 0 ]; then
        echo "$PARTITION disk usage is above $MAXUSED% Aborting backup.";
        exit 1;
fi

exit 0;

فعال‌سازی:


chmod 755 /usr/local/directadmin/scripts/custom/user_backup_pre.sh

6. بک‌آپ‌گیری از /home با rsync


برای بک‌آپ سبک و سریع بدون tar.gz:


#!/bin/sh
BACKUP_SOURCE="/home"
DAY_OF_WEEK=`date +%w`
ZERO_ONE=$(($DAY_OF_WEEK % 2))
BACKUP_DESTINATION="/backup/$ZERO_ONE"

mkdir -p ${BACKUP_DESTINATION}

ionice -c3 nice -n 19 rsync -q -a -W --delete $BACKUP_SOURCE $BACKUP_DESTINATION >/var/log/rsync.log 2>&1

echo `date` > ${BACKUP_DESTINATION}/last_rsync.txt

فعال‌سازی:


chmod 700 /root/rsync.sh

زمان‌بندی:


30 4 * * 2,5 /root/rsync.sh

Written & researched by Dr. Shahin Siami