چگونه با rsync از مسیر /home روی سرور ریموت بک‌آپ بگیریم و مدیریت پیشرفته بک‌آپ در DirectAdmin

این راهنما نحوه استفاده از rsync برای بک‌آپ‌گیری از مسیر /home روی سرور ریموت، ترکیب rsync با بک‌آپ‌های DirectAdmin، نگه‌داشتن همزمان نسخه محلی و ریموت، تعمیر فایل‌های tar.gz خراب، کار با فایل‌های tar.zst، رفع خطاهای MySQL و FTP و همچنین مدیریت پیشرفته بک‌آپ با اسکریپت‌های user_backup_post را توضیح می‌دهد.

rsync to back up the /home directoryDirectAdmin

~3 min read • Updated Feb 27, 2026

1. استفاده از rsync برای بک‌آپ‌گیری از /home روی سرور ریموت


با افزایش حجم داده‌ها روی سرورها، بک‌آپ‌های tar.gz زمان‌برتر می‌شوند. اگر بیشتر داده‌های شما در public_html یا پوشه‌های ایمیل قرار دارد، استفاده از rsync برای بک‌آپ‌گیری از کل مسیر /home یک روش بسیار سریع و کارآمد است.


نکته مهم: ابتدا باید اکانت‌های DirectAdmin را restore کنید. پس از ایجاد کاربران، می‌توانید داده‌ها را با rsync برگردانید. در صورت نیاز، می‌توانید restore را دوباره اجرا کنید.


در هنگام ساخت بک‌آپ DirectAdmin، در مرحله ۴ گزینه‌های زیر را غیرفعال کنید:


  • Domains Directory
  • E-Mail Data

این داده‌ها در مسیر /home قرار دارند و rsync آن‌ها را مدیریت می‌کند.


1.1 نمونه اسکریپت rsync برای بک‌آپ ریموت


#!/bin/bash
BACKUP_HOST="remote.hostname.com"
BACKUP_USER=`hostname -s`
BACKUP_SOURCE="/home"
BACKUP_DESTINATION="/home/$BACKUP_USER/users"

ionice -c3 nice -n 19 rsync -q -a --delete -e ssh $BACKUP_SOURCE \
$BACKUP_USER@$BACKUP_HOST:$BACKUP_DESTINATION >/var/log/backup.log 2>&1

پس از restore اکانت‌ها:


  • داده‌ها را با rsync برگردانید
  • مسیر /home/USERNAME/domains را در صورت نیاز اصلاح کنید

برای بک‌آپ تنظیمات وب‌میل:


  • /var/www/html/squirrelmail/data
  • /var/www/html/webmail/tmp

2. نگه‌داشتن همزمان بک‌آپ محلی و ریموت


DirectAdmin اجازه ذخیره همزمان لوکال و FTP را نمی‌دهد. برای داشتن هر دو، یک بک‌آپ FTP بسازید و با اسکریپت user_backup_post.sh قبل از حذف فایل، یک نسخه محلی ذخیره کنید.


2.1 اسکریپت برای ذخیره محلی فقط برای admin


#!/bin/sh
RESELLER=admin
SAVE_PATH=/home/${RESELLER}/admin_backups

BACKUP_PATH=$(echo $file | cut -d/ -f1,2,3,4)
REQUIRED_PATH=/home/tmp/${RESELLER}.

if [[ "$BACKUP_PATH" == ${REQUIRED_PATH}* ]]; then
      NEW_FILE=${SAVE_PATH}/`echo $file | cut -d/ -f6`
      cp -fp $file ${NEW_FILE}
fi
exit 0;

2.2 اسکریپت برای همه ریسلرها


#!/bin/sh
RESELLER=$reseller
SAVE_PATH=/home/${RESELLER}/user_backups

BACKUP_PATH=`echo $file | cut -d/ -f1,2,3,4`
REQUIRED_PATH=/home/tmp/

if [[ "$BACKUP_PATH" == ${REQUIRED_PATH}* ]]; then
      NEW_FILE=${SAVE_PATH}/`echo $file | cut -d/ -f6`
      cp -fp $file ${NEW_FILE}
fi
exit 0;

فعال‌سازی:


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

3. استخراج و بازسازی فایل بک‌آپ tar.gz


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


3.1 استخراج


cd /home/admin/admin_backups
cp user.admin.bob.tar.gz user.admin.bob.tar.gz.backup
mkdir temp
cd temp
tar xvzf ../user.admin.bob.tar.gz

3.2 فشرده‌سازی مجدد


cd /home/admin/admin_backups/temp
tar cvzf ../user.admin.bob.tar.gz *

4. کار با فایل‌های tar.zst


4.1 ساخت فایل tar.zst


tar --preserve-permissions --use-compress-program /usr/local/bin/zstdmt \
-cf backup.tar.zst backup

4.2 استخراج


tar --preserve-permissions --use-compress-program /usr/local/bin/zstdmt \
-xf backup.tar.zst

5. timeout در mysqldump


DirectAdmin مقدار زیر را دارد:


database_dump_timeout=14400

برای غیرفعال کردن:


/usr/local/directadmin/directadmin set database_dump_timeout 0

6. خطای “MySQL Server Has Gone Away” هنگام restore


دلایل احتمالی:


  • مقدار wait_timeout کم است
  • MySQL وسط restore ری‌استارت شده
  • مقدار max_allowed_packet کم است

افزایش مقدار:


max_allowed_packet=20M

7. خطای Backup Abort (2): Hard Link Found


این خطا زمانی رخ می‌دهد که backup_hard_link_check=1 فعال باشد و یک hard link در مسیر کاربر پیدا شود.


برای غیرفعال کردن:


backup_hard_link_check=0

حتماً مقدار زیر فعال باشد:


strict_backup_permissions=1

بهبود سرعت بک‌آپ:


direct_imap_backup=1

نادیده گرفتن خطاهای خواندن:


extra_backup_option=--warning=no-file-removed --warning=no-file-changed

8. خطاهای رایج FTP در بک‌آپ


8.1 curl: (55) Send failure: Connection reset by peer


  • کاربر FTP over quota
  • فایروال پورت‌های 20، 21 و 35000–35999 را بسته است

8.2 curl: (55) SSL_write() returned SYSCALL


کلاینت از پروتکل SSL موردنیاز پشتیبانی نمی‌کند.


8.3 curl: (55) Send failure: Connection timed out


احتمالاً مشکل فایروال است.


8.4 curl: (7) Failed to connect: Connection refused


سرور FTP اتصال را نمی‌پذیرد.


Written & researched by Dr. Shahin Siami