
به اشتراک بگذارید

به اشتراک بگذارید
در دنیای امروز که دادهها باارزشترین دارایی هر کسبوکاری محسوب میشوند، تکیه بر روشهای سنتی و دستی برای حفظ امنیت اطلاعات، ریسکی بزرگ و جبرانناپذیر است. آموزش بکاپ گیری خودکار سرور به شما کمک میکند تا کابوس حذف ناگهانی فایلها یا خرابی دیتابیس را برای همیشه به فراموشی بسپارید؛ چرا که در محیطهای حرفهای هاستینگ، ثانیهها نیز حیاتی هستند. استفاده از ابزارهای قدرتمندی مانند Rsync برای همگامسازی هوشمند و Cron Job برای مدیریت زمان، دقیقاً همان چیزی است که یک مدیر سرور هوشمند برای حذف خطای انسانی به آن نیاز دارد.
در یک نگاه کلی، تفاوت روش مدرن و سنتی را ببینید:
حتماً زمانی که این مقاله را باز کردهاید، به دنبال راهی میگردید که دیگر نگران بکاپهای شبانه نباشید و بخواهید با خیالی آسوده، مدیریت دادههایتان را به کدهای لینوکسی بسپارید. ما در این راهنمای جامع، از صفر مطلق یعنی نوشتن اولین دستور Rsync تا پیادهسازی یک اسکریپت Bash حرفهای و اتصال بدون پسورد (Passwordless SSH) را به شما آموزش میدهیم. اگر به دنبال پایداری ۱۰۰ درصدی هستید، این مقاله برای شماست. 😉
آنچه در این مقاله میخوانید:

این سیستم در واقع ترکیبی از دو ابزار قدرتمند است: آموزش دستور Rsync برای جابهجایی فایلها و Cron Job برای زمانبندی این جابهجایی. تشبیه کاربردی این است که Rsync مانند یک کارگر فوقهوشمند است که هر بار فقط وسایل جدید یا تغییر یافته را جابهجا میکند و Cron Job نقش ساعت زنگداری را دارد که به این کارگر میگوید دقیقاً چه زمانی کارش را شروع کند.
ساختار عملکرد:
سرور اصلی (Source)
⬇️
[Rsync + SSH] ---> انتقال امن دادهها
⬇️
سرور بکاپ (Destination)
دلیل اصلی نیاز ما به این سیستم، پایداری سرویس و کاهش هزینههای ترافیکی است. برخلاف دستورات ساده کپی (cp)، در همگامسازی فایل با Rsync، سیستم ابتدا فایلها را مقایسه کرده و فقط تفاوتها را ارسال میکند.
قبل از شروع، مطمئن شوید که موارد زیر را در اختیار دارید:
در این بخش همراه تیم وبداده باشید تا به صورت عملی و تصویری، سیستم را پیادهسازی کنیم. ما فرض میکنیم میخواهید از پوشه /var/www/html سرور اصلی به سرور بکاپ، کپی تهیه کنید.
برای شروع، باید بدانید دستور شما چه کاری انجام میدهد. پرکاربردترین سوئیچها:
-rlptgoD) است و شامل موارد زیر میشود: کپی بازگشتی (Recursive)، حفظ لینکهای سمبلیک، حفظ سطوح دسترسی (Permissions)، حفظ زمان تغییر فایل (Timestamps)، حفظ گروه و مالکیت فایل (Group & Owner) و حفظ فایلهای ویژه (Device Files). به زبان ساده، این فلگ تضمین میکند که کپی شما دقیقاً مشابه اصل باشد. توجه کنید که -a شامل Hard Links (-H) و ACLs (-A) نمیشود و اگر به آنها نیاز دارید باید جداگانه اضافه کنید.--delete)، ابتدا با --dry-run تست کنید تا از نتیجه مطمئن شوید.با اسلش انتهایی (/var/www/html/): فقط محتویات پوشه html کپی میشود. یعنی فایلها مستقیماً در پوشه مقصد قرار میگیرند.
بدون اسلش انتهایی (/var/www/html): خود پوشه html به همراه محتویاتش کپی میشود. یعنی در مقصد یک پوشه به نام html ساخته شده و فایلها داخل آن قرار میگیرند.
# با اسلش: محتویات html → مستقیم داخل /backups/
rsync -avz /var/www/html/ user@remote:/backups/
# بدون اسلش: پوشه html → داخل /backups/html/
rsync -avz /var/www/html user@remote:/backups/ 📌 توصیه: قبل از هر عملیات، حتماً با فلگ --dry-run تست کنید تا مطمئن شوید فایلها دقیقاً در مسیر مورد نظر شما قرار میگیرند.
برای اینکه Cron Job بتواند بدون دخالت شما فایلها را بفرستد، نباید از شما رمز عبور بخواهد. برای این کار از اتصال بدون پسورد (Passwordless SSH) استفاده میکنیم:
# در سرور اصلی یک کلید بسازید
ssh-keygen -t rsa -b 4096
# کلید را به سرور مقصد بفرستید
ssh-copy-id user@destination-server-ip
# تست اتصال بدون رمز عبور
ssh user@destination-server-ip "echo 'SSH Key OK'" 📌 یادآوری: امنیت در انتقال داده با این روش بسیار بالاتر از وارد کردن دستی پسورد در اسکریپت است. همچنین توصیه اکید میشود هنگام ساخت کلید، یک Passphrase قوی برای آن تنظیم کنید. برای استفاده در Cron Job میتوانید از ssh-agent برای مدیریت Passphrase استفاده کنید.
📌 نکته امنیتی: حتماً سطح دسترسی فایل کلید خصوصی را بررسی کنید:
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh حالا نوبت به زمانبندی تسکها (Task Scheduling) میرسد. با دستور crontab -e فایل را باز کرده و خط زیر را برای اجرای هر شب ساعت 2 بامداد اضافه کنید:
0 2 * * * /usr/bin/rsync -avz --delete /var/www/html/ user@remote:/backups/ >> /var/log/backup.log 2>&1 rsync از /usr/bin/rsync استفاده کنید، چون متغیر محیطی PATH در محیط Cron معمولاً محدودتر از ترمینال عادی شماست.⚠️ هشدار امنیتی مهم: هرگز رمز عبور دیتابیس را مستقیماً در اسکریپت یا خط فرمان قرار ندهید! طبق مستندات رسمی MySQL، وارد کردن پسورد از طریق خط فرمان (-p یا --password) ناامن است و هر کاربری با دسترسی به سرور میتواند از طریق دستور ps aux رمز عبور شما را به صورت متن ساده مشاهده کند.
روش صحیح: یک فایل اعتبارنامه (Credentials File) بسازید:
# ساخت فایل اعتبارنامه
nano /root/.my.cnf محتوای فایل:
[mysqldump]
user=root
password=YOUR_SECURE_PASSWORD سپس دسترسی فایل را محدود کنید:
# فقط کاربر root بتواند بخواند
chmod 600 /root/.my.cnf با این روش، mysqldump به صورت خودکار اعتبارنامه را از فایل میخواند و هیچ رمز عبوری در خط فرمان یا خروجی ps نمایش داده نمیشود.

crontab -e # اجرای بکاپ هر شب ساعت 2 بامداد
0 2 * * * /bin/bash /root/scripts/backup.sh >> /var/log/cron_backup.log 2>&1 | ویژگی | Rsync + Cron Job | FTP/CP Manual | ابزارهای تجاری |
|---|---|---|---|
| هزینه | رایگان (Open Source) | رایگان | گرانقیمت |
| سرعت | بسیار بالا (Incremental) | کند (Full Copy) | متوسط |
| مصرف منابع | بسیار ناچیز | بالا | سنگین |
| پیچیدگی | نیاز به دانش لینوکس | ساده اما خستهکننده | رابط کاربری گرافیکی |
مزایا:
--exclude. پایداری فوقالعاده در پروژههای بزرگ (تست شده با حجمهای چند ترابایتی).--partial (بسیار مفید برای اینترنت ناپایدار).معایب و چالشها:
⚠️ خطر سوئیچ –delete: اگر در مبدا فایلی به اشتباه پاک شود، در اجرای بعدی کرونجاب، از مقصد هم پاک خواهد شد.
راه حلها:
--backup و --backup-dir برای نگهداری نسخههای قبلی فایلهای حذف شده.--dry-run قبل از هر تغییر بزرگ.در وبداده، ما اهمیت پایداری را درک میکنیم. سرورهای اختصاصی و مجازی ما با پورتهای قدرتمند ۱۰ گیگابیتی، بهترین بستر برای بکاپگیری خودکار از دیتابیس با Rsync هستند تا کمترین تاخیر را در انتقال دادههای حجیم تجربه کنید.
پیادهسازی سیستم اتوماسیون بکاپگیری با Cron Job و Rsync یکی از هوشمندانهترین کارهایی است که میتوانید برای زیرساخت IT خود انجام دهید. در این مقاله آموختیم که چگونه با استفاده از قدرت لینوکس، خطای انسانی را حذف کرده و امنیت دادهها را در بالاترین سطح ممکن (SSH) حفظ کنیم. به یاد داشته باشید که در سال 2026، تفاوت بین یک متخصص حرفهای و یک آماتور در میزان خودکارسازی وظایف تکراری است.
امیدواریم این آموزش از بلاگ وبداده برای شما مفید بوده باشد. اگر در هر مرحله از تنظیم کرونجاب یا اتصال SSH به مشکل خوردید، حتماً در بخش نظرات با ما در میان بگذارید؛ کارشناسان ما آماده راهنمایی شما هستند.
خیر، اما بیشترین کارایی و پایداری آن در توزیعهای لینوکسی (Ubuntu, CentOS, Debian, AlmaLinux) دیده میشود. در macOS نیز Rsync به صورت پیشفرض نصب است.