~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_backups3.2 بکآپ کاربران مشخص
/usr/local/directadmin/directadmin admin-backup --destination=/home/admin/admin_backups --user=testuser1 --user=testuser23.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.44. اسکریپت نمونه برای 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.queue5. بررسی فضای دیسک قبل از بکآپ
اسکریپت زیر از اجرای بکآپ در صورت پر بودن دیسک جلوگیری میکند:
#!/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.sh6. بکآپگیری از /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.shWritten & researched by Dr. Shahin Siami