سفارشی‌سازی دانلود و آپلود FTP در DirectAdmin: تبدیل ftp_download.php، کنترل سرعت بک‌آپ و ساخت سرور بک‌آپ افزونه‌ای

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

ftp_download.phpDirectAdmin FTP BackupRedundant Backup Server

~3 min read • Updated Feb 27, 2026

1. تبدیل ftp_download.php به ncftpget


اگر می‌خواهید به‌جای PHP از ابزار ncftpget برای دانلود بک‌آپ‌ها استفاده کنید، کافی است فایل زیر را ایجاد کنید:


/usr/local/directadmin/scripts/custom/ftp_download.php

و محتوای زیر را داخل آن قرار دهید:


/bin/sh

FTPGET=/usr/bin/ncftpget
TOUCH=/bin/touch
PORT=${ftp_port}

if [ ! -e $TOUCH ] && [ -e /usr/bin/touch ]; then
       TOUCH=/usr/bin/touch
fi

if [ ! -e $FTPGET ]; then
       echo "";
       echo "*** Backup not downloaded ***";
       echo "Please install $FTPGET by running:";
       echo "";
       echo "cd /usr/local/directadmin/scripts";
       echo "./ncftp.sh";
       echo "";
       exit 10;
fi

CFG=${ftp_local_file}.cfg
/bin/rm -f $CFG
$TOUCH $CFG
/bin/chmod 600 $CFG
/bin/echo "host $ftp_ip" >> $CFG
/bin/echo "user $ftp_username" >> $CFG
/bin/echo "pass $ftp_password_esc_double_quote" >> $CFG

$FTPGET -C -f $CFG -V -t 25 -P $PORT "$ftp_ip" "$ftp_path/$ftp_remote_file" "$ftp_local_file" 2>&1
RET=$?

/bin/rm -f $CFG

exit $RET

و سپس آن را اجرایی کنید:


chmod 755 /usr/local/directadmin/scripts/custom/ftp_download.php

2. کاهش سرعت بک‌آپ برای جلوگیری از فشار روی FTP


اگر تعداد کاربران زیاد است، ممکن است اتصال‌های پشت‌سرهم به FTP باعث بلاک شدن یا فشار زیاد روی سرور مقصد شود. برای ایجاد مکث بین هر بک‌آپ:


فایل زیر را بسازید:


/usr/local/directadmin/scripts/custom/user_backup_post.sh

و داخل آن بنویسید:


#!/bin/sh
sleep 20
exit 0;

فعال‌سازی:


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

این کار باعث می‌شود بعد از ساخت هر فایل tar.gz، سیستم ۲۰ ثانیه مکث کند.


3. ساخت سرور بک‌آپ افزونه‌ای (Redundant Backup Server)


DirectAdmin به‌صورت پیش‌فرض برای کار تک‌سروره طراحی شده، اما می‌توان با چند روش یک سرور بک‌آپ افزونه‌ای ساخت:


3.1 روش اول: انتقال شبانه + کرون Restore


می‌توانید هر شب بک‌آپ‌ها را به یک سرور DirectAdmin دیگر منتقل کنید و سپس با یک کرون، آن‌ها را restore کنید.


برای ساخت کرون Restore:


  • یک restore معمولی انجام دهید
  • بلافاصله دستور زیر را اجرا کنید:

cat /usr/local/directadmin/data/task.queue

خروجی این فایل همان چیزی است که باید در کرون قرار دهید.


3.2 روش دوم: استفاده از rsync (بهترین روش)


مزایا:


  • نیاز به لایسنس دوم DirectAdmin ندارد
  • فقط فایل‌های تغییرکرده منتقل می‌شوند
  • مصرف پهنای باند بسیار کمتر

فقط باید بدانید کدام مسیرها را منتقل کنید و از انتقال فایل‌های سیستمی مثل /etc/passwd خودداری کنید.


4. افزودن تاریخ به نام فایل بک‌آپ FTP


بک‌آپ‌های FTP معمولاً تاریخ را در نام فایل ندارند. برای اضافه کردن تاریخ، کافی است نسخه سفارشی ftp_upload.php بسازید.


4.1 ساخت نسخه سفارشی


cd /usr/local/directadmin/scripts/custom
cp ../ftp_upload.php .
chmod 755 ./ftp_upload.php

4.2 افزودن تاریخ به نام فایل


در خط دوم فایل (بعد از shebang):


ftp_remote_file="`echo $ftp_remote_file | awk -F. '{for (i=1; i

می‌توانید حتی md5sum را هم اضافه کنید:


ftp_remote_file="`echo $ftp_remote_file | awk -F. '{for (i=1; i

نکته: این روش با backup_ftp_md5=1 سازگار نیست و باید backup_ftp_upload_confirmation غیرفعال باشد.


Written & researched by Dr. Shahin Siami