مدیریت کاربران حجیم و بهینه‌سازی زمان‌بندی بک‌آپ در DirectAdmin

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

DirectAdmin BackupLarge UsersBackup Scheduling

~4 min read • Updated Feb 27, 2026

1. مشکل بک‌آپ‌گیری از کاربران حجیم


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


  • بک‌آپ‌گیری کمتر (مثلاً فقط یک‌بار در هفته)
  • تقسیم کاربران در روزهای مختلف هفته
  • غیرفعال کردن بخش‌هایی از بک‌آپ (مثل IMAP، دیتابیس یا Domains Directory)
  • استفاده از rsync برای انتقال داده‌های حجیم

در نسخه‌های جدید DirectAdmin، در مرحله ۴ بک‌آپ (Step 4: What) می‌توانید دقیقاً انتخاب کنید چه بخش‌هایی بک‌آپ شوند.


2. استفاده از rsync برای کاربران با پوشه‌های حجیم


اگر مسیر /home/username/domains بسیار بزرگ است، می‌توانید گزینه Domains Directory را غیرفعال کنید و سپس با rsync آن را منتقل کنید.


برای داده‌های ایمیل یا سایر مسیرها نیز می‌توانید کل /home/username را rsync کنید.


3. انتقال داده‌های حجیم به مسیرهای اسکیپ‌شده


اگر بخشی از داده‌ها نیاز به بک‌آپ مداوم ندارند (مثل تصاویر ثابت)، می‌توانید آن‌ها را به مسیرهای اسکیپ‌شده منتقل کنید.


مثال:


cd /home/user
mkdir var
chown user:user var
cd var
cp -Rp ../domains/domain.com/public_html/images .

سپس لینک ایجاد کنید:


cd /home/user/domains/domain.com/public_html
mv images images.old
ln -s ../../../var/images .

4. کاهش فشار دیسک با ionice


برخی سیستم‌عامل‌ها از ionice پشتیبانی می‌کنند که می‌تواند سرعت دسترسی دیسک را محدود کند.


DirectAdmin امکان محدود کردن tar با ionice را نیز دارد.


5. انتقال کاربران حجیم در چند مرحله


اگر بک‌آپ یک کاربر بسیار بزرگ است و tar.gz قابل ساخت نیست، می‌توانید بک‌آپ را به چند بخش تقسیم کنید:


  • غیرفعال کردن Domains Directory
  • غیرفعال کردن E-Mail Data
  • غیرفعال کردن Database Data

سپس هر بخش را جداگانه restore کنید و داده‌های حجیم را با rsync منتقل کنید.


6. کنترل لود قبل از ساخت بک‌آپ


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


6.1 اسکریپت کنترل لود


#!/bin/sh
MAXTRIES=20
MAXLOAD=8.00

highload()
{
          LOAD=`cat /proc/loadavg | cut -d\  -f1`
          echo "$LOAD > $MAXLOAD" | bc
}

TRIES=0
while [ `highload` -eq 1 ];
do
          sleep 5;
          if [ "$TRIES" -ge "$MAXTRIES" ]; then
                    echo "system load above $MAXLOAD for $MAXTRIES attempts. Aborting.";
                    exit 1;
          fi
          ((TRIES++))
done;
exit 0;

فعال‌سازی:


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

7. جلوگیری از تداخل بک‌آپ با سیستم quota


در نسخه‌های جدید DirectAdmin مقدار realtime_quotas=2 به‌صورت پیش‌فرض فعال است و مشکل تداخل بک‌آپ با شمارش quota را حل می‌کند.


اگر realtime_quotas=0 باشد، ممکن است DA حجم کاربر را دو برابر حساب کند.


راه‌حل‌ها:


  • فعال‌سازی realtime_quotas=2
  • تغییر مسیر backup_tmpdir به پارتیشن دیگر
  • فعال‌سازی direct_imap_backup=1

8. محدود کردن زمان مجاز برای بک‌آپ کاربران و ریسلرها


اگر نمی‌خواهید کاربران در ساعات شلوغ بک‌آپ بگیرند، می‌توانید از اسکریپت all_pre.sh استفاده کنید.


8.1 نمونه اسکریپت محدودیت زمانی


#!/bin/sh

HOUR=`date +%k`
MAKINGBACKUP=0
if [ "$command" = "/CMD_USER_BACKUP" ]; then
    if [ "$action" = "create" ]; then
        MAKINGBACKUP=1
        if [ "$when" = "cron" ]; then
            HOUR=$hour
        fi
    fi        
fi

if [ "$command" = "/CMD_SITE_BACKUP" ]; then
    if [ "$action" = "backup" ]; then
        MAKINGBACKUP=1
    fi        
fi

if [ "$MAKINGBACKUP" -eq 1 ]; then
    if [ "$HOUR" -ge 1 ] && [ "$HOUR" -lt 8 ]; then
        exit 0;
    else
        echo "Backups must be created between 1am and 8am";
        exit 1;
    fi
fi
exit 0;

فعال‌سازی:


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

Written & researched by Dr. Shahin Siami