Managing Large Users and Optimizing Backup Scheduling in DirectAdmin

Large user accounts and heavy backup operations can significantly increase server load. DirectAdmin provides multiple techniques to reduce system pressure, distribute backup tasks, use rsync for heavy data, move large directories into skipped paths, control system load before backups, avoid quota conflicts, and restrict backup creation to specific time windows. This article explains all practical methods and scripts in detail.

DirectAdmin BackupLarge UsersBackup Scheduling

~4 min read • Updated Feb 27, 2026

1. Backup Challenges with Large Users


When user accounts contain large amounts of data, creating backups becomes slow and resource‑intensive. DirectAdmin offers several ways to reduce system load:


  • Run backups less frequently (e.g., once per week)
  • Split users across different days of the week
  • Disable certain backup components (IMAP, Databases, Domains Directory)
  • Use rsync for heavy data instead of tar.gz backups

In newer DirectAdmin versions, Step 4 (“What”) of the backup creation process allows you to choose exactly which areas to include.


2. Using rsync for Users with Large Directories


If /home/username/domains is extremely large, you can deselect the Domains Directory option and transfer it using rsync instead.


For email or other large data, you may rsync the entire /home/username directory.


3. Moving Heavy Data into Skipped Directories


If certain data does not need frequent backups (e.g., static images), you can move it into a directory that DirectAdmin skips during backup.


Example:


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

Then create a symlink:


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

4. Reducing Disk Load with ionice


Some operating systems support ionice, which limits disk I/O for specific processes.


DirectAdmin also supports limiting the tar process using ionice.


5. Transferring Large Accounts in Multiple Parts


If a user account is too large to back up as a single tar.gz file, you can break the backup into smaller components:


  • Deselect “Domains Directory”
  • Deselect “E-Mail Data”
  • Deselect “Database Data”

Restore each part separately, then use rsync to transfer the heavy data.


6. Controlling System Load Before Backups


If you want to prevent backups from running during high‑load periods, you can check system load before each backup begins.


6.1 Load‑Control Script


#!/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;

Make executable:


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

7. Preventing Backup Conflicts with Quota Counting


DirectAdmin version 1.596 and newer use realtime_quotas=2 by default, preventing quota miscalculations during backups.


If realtime_quotas=0 is used, DA may double‑count disk usage.


Solutions:


  • Enable realtime_quotas=2
  • Move backup_tmpdir to a different partition
  • Enable direct_imap_backup=1

8. Restricting Backup Creation to Specific Hours


If you want to prevent users or resellers from creating backups during peak hours, use the all_pre.sh script.


8.1 Example Time‑Restriction Script


#!/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;

Make executable:


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

Written & researched by Dr. Shahin Siami