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

اتوماسیون بکاپگیری در لینوکس چیست؟
این سیستم در واقع ترکیبی از دو ابزار قدرتمند است: آموزش دستور Rsync برای جابهجایی فایلها و Cron Job برای زمانبندی این جابهجایی. تشبیه کاربردی این است که Rsync مانند یک کارگر فوقهوشمند است که هر بار فقط وسایل جدید یا تغییر یافته را جابهجا میکند و Cron Job نقش ساعت زنگداری را دارد که به این کارگر میگوید دقیقاً چه زمانی کارش را شروع کند.
ساختار عملکرد:
سرور اصلی (Source)
⬇️
[Rsync + SSH] ---> انتقال امن دادهها
⬇️
سرور بکاپ (Destination)
چرا به بکاپگیری خودکار با Cron Job نیاز داریم؟
دلیل اصلی نیاز ما به این سیستم، پایداری سرویس و کاهش هزینههای ترافیکی است. برخلاف دستورات ساده کپی (cp)، در همگامسازی فایل با Rsync، سیستم ابتدا فایلها را مقایسه کرده و فقط تفاوتها را ارسال میکند.
- حذف خطای انسانی: سیستم خسته نمیشود و بکاپگیری را فراموش نمیکند.
- کاهش مصرف ترافیک: به دلیل ارسال دلتا (تغییرات)، حجم دیتای ارسالی به شدت کاهش مییابد.
- امنیت بالا: تمامی دادهها از طریق پروتکل SSH منتقل میشوند که امنیت در انتقال داده را تضمین میکند.
- مدیریت لاگها: شما میتوانید خروجی هر عملیات را در یک فایل ذخیره کنید تا در صورت بروز مشکل، سریعاً متوجه شوید.
پیشنیازهای اجرای سیستم بکاپگیری هوشمند
قبل از شروع، مطمئن شوید که موارد زیر را در اختیار دارید:
- دو عدد سرور لینوکسی (ترجیحاً سرورهای پرسرعت وبداده برای سرعت انتقال بالاتر).
- دسترسی SSH به هر دو سرور.
- نصب بودن پکیج rsync (معمولاً به صورت پیشفرض نصب است).
- دانش پایه درباره کار با محیط ترمینال (Linux CLI).
راهنمای عملی: آموزش بکاپ گیری خودکار سرور
در این بخش همراه تیم وبداده باشید تا به صورت عملی و تصویری، سیستم را پیادهسازی کنیم. ما فرض میکنیم میخواهید از پوشه /var/www/html سرور اصلی به سرور بکاپ، کپی تهیه کنید.
مرحله 1: تسلط بر سوئیچهای Rsync
برای شروع، باید بدانید دستور شما چه کاری انجام میدهد. پرکاربردترین سوئیچها:
- -a (Archive): این فلگ ترکیبی از چندین فلگ دیگر (
-rlptgoD) است و شامل موارد زیر میشود: کپی بازگشتی (Recursive)، حفظ لینکهای سمبلیک، حفظ سطوح دسترسی (Permissions)، حفظ زمان تغییر فایل (Timestamps)، حفظ گروه و مالکیت فایل (Group & Owner) و حفظ فایلهای ویژه (Device Files). به زبان ساده، این فلگ تضمین میکند که کپی شما دقیقاً مشابه اصل باشد. توجه کنید که-aشامل Hard Links (-H) و ACLs (-A) نمیشود و اگر به آنها نیاز دارید باید جداگانه اضافه کنید. - -v (Verbose): نمایش جزئیات عملیات در کنسول.
- -z (Compress): فشردهسازی دادهها حین انتقال (عالی برای لینکهای اینترنت ضعیف). توجه داشته باشید در شبکههای پرسرعت داخلی (مثلاً LAN ده گیگابیتی)، فشردهسازی ممکن است باعث کندتر شدن عملیات شود چون CPU بار بیشتری تحمل میکند.
- –delete: حذف فایلهایی در مقصد که دیگر در مبدا وجود ندارند (یکسانسازی کامل).
- –dry-run یا -n: اجرای آزمایشی بدون اعمال هیچ تغییری. همیشه قبل از اجرای واقعی دستورات Rsync (خصوصاً با فلگ
--delete)، ابتدا با--dry-runتست کنید تا از نتیجه مطمئن شوید.
مرحله 2: درک رفتار Trailing Slash در Rsync
با اسلش انتهایی (/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 تست کنید تا مطمئن شوید فایلها دقیقاً در مسیر مورد نظر شما قرار میگیرند.
مرحله 3: رفع مشکل لاگین SSH در بکاپگیری خودکار (SSH Key)
برای اینکه 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 مرحله 4: زمانبندی با فایل Crontab
حالا نوبت به زمانبندی تسکها (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 (مرحله حیاتی)
⚠️ هشدار امنیتی مهم: هرگز رمز عبور دیتابیس را مستقیماً در اسکریپت یا خط فرمان قرار ندهید! طبق مستندات رسمی 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
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) | متوسط |
| مصرف منابع | بسیار ناچیز | بالا | سنگین |
| پیچیدگی | نیاز به دانش لینوکس | ساده اما خستهکننده | رابط کاربری گرافیکی |
مزایا و محدودیتهای سیستم Rsync
مزایا:
- انتقال فایل بین دو سرور با Rsync و SSH بسیار امن است.
- امکان فیلتر کردن فایلها (مثلاً عدم بکاپ از پوشه cache) با استفاده از
--exclude. پایداری فوقالعاده در پروژههای بزرگ (تست شده با حجمهای چند ترابایتی). - قابلیت ادامه انتقال ناتمام با فلگ
--partial(بسیار مفید برای اینترنت ناپایدار).
معایب و چالشها:
⚠️ خطر سوئیچ –delete: اگر در مبدا فایلی به اشتباه پاک شود، در اجرای بعدی کرونجاب، از مقصد هم پاک خواهد شد.
راه حلها:
- استفاده از ورژنبندی با نگهداری بکاپهای چند روز اخیر (Rotating Backups).
- استفاده از
--backupو--backup-dirبرای نگهداری نسخههای قبلی فایلهای حذف شده. - اجرای
--dry-runقبل از هر تغییر بزرگ.
⚠️ Rsync برای همگامسازی دوطرفه (Two-Way Sync) طراحی نشده و فقط یکطرفه عمل میکند.
چرا سرویسهای وبداده برای بکاپگیری ایدهآل هستند؟
در وبداده، ما اهمیت پایداری را درک میکنیم. سرورهای اختصاصی و مجازی ما با پورتهای قدرتمند ۱۰ گیگابیتی، بهترین بستر برای بکاپگیری خودکار از دیتابیس با Rsync هستند تا کمترین تاخیر را در انتقال دادههای حجیم تجربه کنید.
- ✅ آپتایم 99.9% تضمین شده برای سرورهای مقصد.
- ✅ پشتیبانی فنی 24 ساعته برای حل مشکلات اسکریپتنویسی شما.
سرور مجازی رایگان وبداده
روی دکمه زیر کلیک کنید
نتیجهگیری؛ اتوماسیون بکاپگیری با Cron Job و Rsync
پیادهسازی سیستم اتوماسیون بکاپگیری با Cron Job و Rsync یکی از هوشمندانهترین کارهایی است که میتوانید برای زیرساخت IT خود انجام دهید. در این مقاله آموختیم که چگونه با استفاده از قدرت لینوکس، خطای انسانی را حذف کرده و امنیت دادهها را در بالاترین سطح ممکن (SSH) حفظ کنیم. به یاد داشته باشید که در سال 2026، تفاوت بین یک متخصص حرفهای و یک آماتور در میزان خودکارسازی وظایف تکراری است.
امیدواریم این آموزش از بلاگ وبداده برای شما مفید بوده باشد. اگر در هر مرحله از تنظیم کرونجاب یا اتصال SSH به مشکل خوردید، حتماً در بخش نظرات با ما در میان بگذارید؛ کارشناسان ما آماده راهنمایی شما هستند.
پرسشهای متداول از آموزش بکاپ گیری خودکار سرور
1- آیا Rsync فقط برای لینوکس است؟
خیر، اما بیشترین کارایی و پایداری آن در توزیعهای لینوکسی (Ubuntu, CentOS, Debian, AlmaLinux) دیده میشود. در macOS نیز Rsync به صورت پیشفرض نصب است.
2- اگر حجم فایلها خیلی زیاد باشد، سرور کند نمیشود؟
با استفاده از بکاپگیری Incremental (افزایشی) با Rsync، فشار روی CPU و رم بسیار ناچیز است؛ چون فقط فایلهای تغییر یافته پردازش میشوند. همچنین میتوانید با فلگ --bwlimit محدودیت پهنای باند تعیین کنید تا فشار روی شبکه کنترل شود.
3- تفاوت Rsync با Scp در چیست؟
Scp همیشه کل فایل را کپی میکند، اما Rsync هوشمند است و فقط بخشهای تغییر یافته را منتقل میکند. همچنین Rsync قابلیت ادامه انتقال ناتمام (با --partial) را دارد ولی Scp این قابلیت را ندارد.
4- چطور بفهمم که بکاپ دیشب با موفقیت انجام شده؟
همیشه خروجی را به یک فایل لاگ هدایت کنید (مانند مثالی که در بخش Cron Job زدیم) و آن را بررسی کنید. همچنین در اسکریپت ما از Error Handling استفاده شده که در صورت بروز خطا، پیام مناسب در لاگ ثبت میشود. میتوانید یک اسکریپت مانیتورینگ هم بنویسید که هر صبح فایل لاگ را بررسی کند و در صورت مشکل، ایمیل یا پیام تلگرامی ارسال کند.
5- آیا میتوان با Rsync از ویندوز به لینوکس بکاپ گرفت؟
بله، با نصب ابزارهایی مثل WSL (Windows Subsystem for Linux) یا Cygwin بر روی ویندوز، این کار امکانپذیر است.




