بکاپ فایلهای سرور با rsync و cron
rsync فقط تفاوت فایلها را کپی میکند و برای بکاپ افزایشی سریعترین ابزار است. با گزینهٔ --link-dest میتوانید هر روز یک نسخهٔ کامل ببینید در حالی که فضای بسیار کمی مصرف میشود.
۱بکاپ ساده به پوشهٔ دیگر
-a همهٔ ویژگیها را حفظ میکند. اسلش انتهای مبدأ مهم است: با اسلش محتوای پوشه و بدون آن خود پوشه کپی میشود.
rsync -avh --progress /var/www/ /backup/www/
rsync -avh --dry-run /var/www/ /backup/www/ # فقط نمایش، بدون کپی۲بکاپ روی سرور راه دور با SSH
با کلید SSH بدون رمز. --delete فایلهایی که در مبدأ حذف شدهاند را در مقصد هم حذف میکند تا نسخهٔ دقیق داشته باشید.
rsync -az --delete -e "ssh -i ~/.ssh/backup_key" /var/www/ backup@203.0.113.20:/srv/backups/www/--delete خطرناک است اگر مسیر مقصد را اشتباه بنویسید. همیشه ابتدا با --dry-run تست کنید.
۳بکاپ با تاریخ و صرفهجویی در فضا (--link-dest)
هر روز پوشهٔ جدیدی میسازد که فایلهای تغییرنکرده را hard-link میکند؛ پس هر نسخه کامل است ولی فضای ناچیزی مصرف میکند.
#!/usr/bin/env bash
set -euo pipefail
SRC="/var/www/"
DEST="/backup/www"
TODAY=$(date +%F)
LATEST="$DEST/latest"
mkdir -p "$DEST"
rsync -a --delete --link-dest="$LATEST" "$SRC" "$DEST/$TODAY/"
ln -sfn "$DEST/$TODAY" "$LATEST"
# حذف نسخههای قدیمیتر از ۳۰ روز
find "$DEST" -maxdepth 1 -type d -name '20*' -mtime +30 -exec rm -rf {} +۴کلید SSH مخصوص بکاپ با دسترسی محدود
برای امنیت، روی سرور بکاپ کلید را طوری محدود کنید که فقط rsync اجازه داشته باشد. خط زیر را در authorized_keys سرور مقصد بنویسید.
# در ~/.ssh/authorized_keys سرور بکاپ (یک خط)
command="rsync --server --sender -vlogDtprze.iLsfxC . /var/www/",no-pty,no-agent-forwarding,no-port-forwarding ssh-ed25519 AAAA... backup-keyاین گزینه پیشرفته است؛ در آغاز میتوانید فقط از یک کلید مخصوص بکاپ بدون این محدودیت استفاده کنید.
۵زمانبندی با cron
هر شب ساعت ۲:۳۰ اجرا شود و لاگ بنویسد.
sudo crontab -e
30 2 * * * /usr/local/bin/backup-www.sh >> /var/log/backup-www.log 2>&1۶ریستور فایلها
برای بازگرداندن، جهت rsync را برعکس کنید. برای یک فایل مشخص:
rsync -avh /backup/www/2026-09-28/site/uploads/ /var/www/site/uploads/
# از سرور راه دور
rsync -avz backup@203.0.113.20:/srv/backups/www/latest/ /var/www/۷بررسی سلامت بکاپ
مقایسهٔ مبدأ و مقصد بدون کپی (فایلهای متفاوت را فهرست میکند):
rsync -rcn --out-format="%n" /var/www/ /backup/www/latest/ | headپرسشهای پرتکرار دربارهٔ بکاپ فایلهای سرور با rsync و cron
rsync بهتر است یا tar؟
برای بکاپ افزایشی و مقایسه rsync بهتر است. tar برای ساخت یک آرشیو واحد قابل انتقال و نگهداری بلندمدت مناسبتر است. ترکیب رایج: rsync بهصورت روزانه و یک tar ماهانه.