بک‌آپ‌گیری روی سرورهای ریموت در DirectAdmin – FTP، تست اسکریپت، متغیرها و سفارشی‌سازی کامل ftp_upload.php

DirectAdmin به‌صورت پیش‌فرض فقط از انتقال بک‌آپ به سرور FTP/FTPS پشتیبانی می‌کند. این مقاله نحوه تنظیم بک‌آپ ریموت، تست دستی ftp_upload.php، مشاهده متغیرهای محیطی، سفارشی‌سازی رفتار آپلود، تبدیل اسکریپت به curl یا ncftpput و استفاده از روش اصلی PHP را به‌صورت کامل توضیح می‌دهد.

FTP TransfersRemote BackupAlternative Upload Methods

~3 دقیقه مطالعه · آخرین به‌روزرسانی ۸ اسفند ۱۴۰۴

1. بک‌آپ‌گیری ریموت در DirectAdmin


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


Admin Level → Admin Backup/Transfer

هر دو حالت FTP و FTPS پشتیبانی می‌شوند.


2. تست دستی اسکریپت ftp_upload.php


برای دیباگ مشکلات آپلود FTP، می‌توانید اسکریپت ftp_upload.php را با متغیرهای محیطی اجرا کنید.


2.1 نمونه دستور تست


cd /usr/local/directadmin/scripts
ftp_port=21 \
ftp_local_file=/path/to/a/file.txt \
ftp_ip=1.2.3.4 \
ftp_username=fred \
ftp_password_esc_double_quote=fredspass \
ftp_path=/remote/path \
ftp_secure=ftps \
./ftp_upload.php

هر خطایی که وجود داشته باشد در خروجی نمایش داده می‌شود. همچنین لاگ‌های FTP روی سرور مقصد را بررسی کنید.


3. متغیرهای محیطی قابل استفاده در ftp_upload.php


DirectAdmin هنگام اجرای بک‌آپ، مجموعه‌ای از متغیرها را به اسکریپت ارسال می‌کند. نمونه خروجی برای یک بک‌آپ FTP با ID=1:


action=backup
append_to_path=nothing
database_data_aware=yes
dayofmonth=5
dayofweek=*
email_data_aware=yes
ftp_ip=127.0.0.1
ftp_local_file=/home/tmp/admin/user.admin.testuser.tar.gz
ftp_local_path=/home/tmp/admin
ftp_password=pass"word
ftp_password_esc_double_quote=pass\"word
ftp_path=/admin_backups
ftp_port=21
ftp_remote_file=user.admin.testuser.tar.gz
ftp_username=admin
hour=5
id=1
minute=0
month=1
owner=admin
select0=testuser
type=admin
value=multiple
when=now
where=ftp

3.1 نحوه تولید این خروجی


cd /usr/local/directadmin/scripts/custom
cp /var/www/cgi-bin/printenv ftp_upload.php
echo "exit 1;" >> ftp_upload.php
chmod 755 ftp_upload.php
./ftp_upload.php

پس از اجرای بک‌آپ، تمام متغیرها نمایش داده می‌شوند. سپس می‌توانید اسکریپت را حذف یا نسخه سفارشی خود را ایجاد کنید.


4. سفارشی‌سازی رفتار آپلود بر اساس ID بک‌آپ


می‌توانید رفتار آپلود را بر اساس ID بک‌آپ تغییر دهید. مثال: اگر بخواهید بک‌آپ ID=1 با SCP آپلود شود:


if [ "$id" = "1" ]; then
   # scp upload code
   exit 0;
fi

نکته: اگر گزینه "When: Now" انتخاب شود، ID ارسال نمی‌شود. اما اگر روی یک کرون موجود "Run Now" بزنید، ID ارسال می‌شود.


5. تبدیل ftp_upload.php به curl


DirectAdmin به‌صورت پیش‌فرض از PHP برای آپلود FTP استفاده می‌کند. برای دیباگ یا نیازهای خاص، می‌توانید آن را با curl جایگزین کنید.


5.1 کپی اسکریپت


cp -rp /usr/local/directadmin/scripts/ftp_upload.php \
/usr/local/directadmin/scripts/custom/ftp_upload.php

5.2 جایگزینی محتوا با نسخه curl


/bin/sh
ETH=eth0
CURL=/usr/local/bin/curl

result=`$CURL --interface $ETH -T $ftp_local_file \
-u $ftp_username:$ftp_password_esc_double_quote \
ftp://$ftp_ip$ftp_path$ftp_remote_file 2>&1`

if grep -qi "curl: (67) Access denied: 530" <<< "$result"; then
    echo "FTP access denied. Check login details."
    exit 1
fi
if grep -qi "curl: (6) Couldn't resolve host" <<< "$result"; then
    echo "Host could not be resolved."
    exit 1
fi
if grep -qi "curl: (9) Uploaded unaligned file size" <<< "$result"; then
    echo "File upload failed. Check path."
    exit 1
fi
if grep -qi "curl: Can't open" <<< "$result"; then
    echo "Can't open $ftp_local_file"
    exit 1
fi

مطمئن شوید ftp_path با اسلش انتهایی تمام می‌شود.


6. تبدیل اسکریپت به ncftpput


/bin/sh
/usr/bin/ncftpput -t 25 -m \
-u "$ftp_username" -p "$ftp_password_esc_double_quote" \
"$ftp_ip" "$ftp_path" "$ftp_local_file" 2>&1
RET=$?
exit $RET

7. روش اصلی PHP برای آپلود FTP


/usr/local/bin/php


این همان روش پیش‌فرض DirectAdmin است.


نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

راهنمای کامل پیکربندی کلاینت‌های ایمیل، هشدارهای quota در Dovecot و بررسی آخرین لاگین‌ها در DirectAdmin

این مقاله یک مرجع جامع برای کاربران و مدیران DirectAdmin است. در این راهنما یاد می‌گیرید چگونه ایمیل را روی iPhone، Thunderbird و Gmail تنظیم کنید، هشدارهای پر شدن quota را در Dovecot فعال کنید و با یک اسکریپت ساده، آخرین زمان لاگین تمام حساب‌های ایمیل را مشاهده کنید.

ادامه

عیب‌یابی Dovecot در DirectAdmin – رفع خطاهای IMAP، مشکلات احراز هویت و بررسی گواهی SSL

Dovecot سرویس اصلی IMAP/POP3 در DirectAdmin است. گاهی کاربران هنگام ورود به وب‌میل یا کلاینت ایمیل با خطاهایی مثل "Connection dropped" یا "unknown user" مواجه می‌شوند. این مقاله یک راهنمای کامل برای رفع خطاهای رایج Dovecot، پاک‌سازی ایندکس‌ها، بررسی دیتابیس‌های احراز هویت و تست گواهی SSL روی پورت‌های 143 و 993 است.

ادامه

عیب‌یابی DNS در DirectAdmin – وقتی named اجرا می‌شود اما دامنه resolve نمی‌شود

گاهی سرویس named (BIND) روی سرور اجرا می‌شود اما دامنه‌ها resolve نمی‌شوند یا از بیرون پاسخ DNS دریافت نمی‌شود. این مقاله یک راهنمای کامل برای بررسی listen، فایروال، تنظیمات named.conf، propagation، رکوردهای اشتباه، مشکلات ساب‌دامین، resolv.conf و خطاهای رایج DNS در DirectAdmin است.

ادامه

مدیریت رکوردهای DNS در DirectAdmin – راهنمای کامل، کاربردی و حرفه‌ای

DirectAdmin ابزارهای قدرتمندی برای مدیریت DNS ارائه می‌دهد: از کاهش TTL برای جلوگیری از downtime، تا ساخت رکوردهای SRV، فعال‌سازی DNSSEC، مدیریت delegation ساب‌دامین‌ها، افزودن خودکار TLSA برای DANE و حتی تغییرات گروهی (Mass Update) روی همه دامنه‌ها. این مقاله یک مرجع کامل برای مدیریت حرفه‌ای DNS در DirectAdmin است.

ادامه

DNS و Nameserverها در DirectAdmin – راهنمای کامل، کاربردی و حرفه‌ای

DNS ستون فقرات اینترنت است و وظیفه دارد نام دامنه را به IP تبدیل کند. در DirectAdmin می‌توان Nameserverهای اختصاصی ساخت، DNS را مدیریت کرد، DNS Clustering راه‌اندازی کرد و حتی از DNS خارجی استفاده نمود. این مقاله یک راهنمای جامع برای درک DNS، ساخت ns1/ns2، تنظیم Glue Record، رفع خطاها و مدیریت حرفه‌ای DNS در DirectAdmin است.

ادامه

CustomBuild در DirectAdmin – راهنمای کامل نصب، به‌روزرسانی، پیکربندی و سفارشی‌سازی پیشرفته

CustomBuild ابزار اصلی DirectAdmin برای مدیریت سرویس‌ها و نرم‌افزارهای سرور است. این ابزار وب‌سرور، PHP، دیتابیس، ایمیل، FTP و بسیاری از کامپوننت‌های دیگر را نصب، به‌روزرسانی و پیکربندی می‌کند. به دلیل کامپایل از سورس، CustomBuild انعطاف‌پذیری بسیار بالا، سرعت دسترسی به نسخه‌های جدید و مصرف منابع بهینه را فراهم می‌کند.

ادامه