
در این وبسایت آموزش های زیادی برای mirror کردن و یا بک آپ گرفتن از دیتای وب سایت شما با روش های متفاوت وجود دارد. اما من این مقاله رو نوشتم فقط برای اینکه این کار رو یه بار دیگه اما اینبار کاملا متفاوت با روش های جدید (البته از نظر خودم) با یک سری کامند (دستورات) ساده و دستورات کلی لینوکس برای ساختن بک آپ از وبسایت خودمون، این آموزش به شما کمک می کند تا دیتای رو بین دو وب سرور همگام سازی کنید توسط “Rsync”.

هدف از ایجاد یک mirror از وب سرور خود توسط Rsync تنها این است که اگر وب سرور اصلی شما خارج از سرویس شد سرور بک آپ شما بتواند اثرات منفی ناشی از داون تایم وبسایت شما را کاهش بدهد. این راه برای ایجاد یک وب سرور بک آپ بسیار خود و مناسب است برای وبسایت های تجاری کوچک و متوسط.
سینک وب سرور
مزایای همگام سازی وب سرور ها
- ویژگی های مطرح استفاده rsync جهت ایجاد سرور بک آپ به صورت زیر است:
- آر سینک تنها آن دسته از بایت ها(bytes) و بلاک هایی(blocks) که تغییر کرده اند را همگام سای(sync) می کند.
- آر سینک توانایی بررسی و پاک کردن آن دسته از فایل ها و دایرکتوری هایی که در سرور اصلی پاک شده اند را در سرور بک آپ دارد.
- مراقب از پرمیژن ها(permissions), مالکیت ها(ownerships) و ویژگی های خاص(special attributes) طول می کشد در حالی که دیتا از راه دور کپی می شود.
- همچنین از پروتوکول SSH جهت جابجایی دیتا به روش رمز نگاری شده پشتیبانی می کند, بنابراین شما می توانید اطمینان حاصل کنید که تمام دیتا امن هست.
- آر سینک(Rsync) همچنین از قابلیت فشرده سازی (compression) و خارج کردن از حالت فشرده (decompression) در زمان جابجایی دیتا پشتیبانی می کند که باعث کاهش مصرف پهنای باند در هنگام جابجایی می شود.
چگونه دو وب سرور را با هم همگام سازی کنیم
اجازه بدین به نصب rsync برای ایجاد یک mirror از وب سرورتون بپردازیم. در اینجا ما از دو وب سرور استفاده می کنیم.
Main Server
IP Address: 192.168.0.100
Hostname: webserver.example.com
Backup Server
IP Address: 192.168.0.101
Hostname: backup.example.com
مرحله اول: نصب ابزار Rsync
در این حالت ما می خواهیم که webserver.example.com را با backup.example.com همگام سازی (mirror) کنیم. و جهت انجام این کار برای بار اول باید ابتدا ما با کمک دستورات زیر به نصب Rsync بر روی هر دو سرور بپردازیم.
1 2 |
[root@favach]# yum install rsync [On Red Hat based systems] [root@favach]# apt-get install rsync [On Debian based systems] |
مرحله دوم: ایجاد یک یوزر برای اجرای Rsync
ما می توانیم که Rsync را با کاربر ریشه (root) راه اندازی کنیم، اما به دلایل امنیتی، شما می توانید یک کاربر که دارای دسترسی های زیادی نیست بر روی وب سرور اصلی ایجاد کنید، به عنوان مثال webserver.example.com برای اجرای rsync.
1 2 |
[root@favach]# useradd favach [root@favach]# passwd favach |
در اینجا من یک کاربر با نام “favach” ایجاد کرده ام و یک پسورد به آن اختصاص داده ام.
مرحله سه: تست Rsync نصب شده
زمان آن رسیده است که rsync نصب شده بر روی سرور بک آپ (به عنوان مثال backup.example.com) را تحت آزمایش قرار دهیم و برای انجام اینکار لطفا دستور زیر را تایپ کنید.
1 |
[root@backup www]# rsync -avzhe ssh favach@webserver.example.com:/var/www/ /var/www |
نمونه خروجی
1 2 3 4 5 |
favach@webserver.example.com's password: receiving incremental file list sent 128 bytes received 32.67K bytes 5.96K bytes/sec total size is 12.78M speedup is 389.70 |
خب شما در اینجا می توانید مشاهده کنید rsync به خوبی کار می کند و دیتا را sync می کند. من برای جابجایی از “/var/www” استفاده کردم، شما می توانید مکان فولدر خودتون را با توجه به نیازتان خودتان تغییر دهید.
مرحله چهار: همگام سازی (sync) خودکار با استفاده از ssh بدون استفاده از پسورد
خب تا این مرحله ما rsync را راه اندازی کرده ایم و زمان آن رسیده است که یک cron برای rsync تنظیم کنیم. اگر ما بخواهیم rsync را به همراه پروتکل ssh استفاده کنیم، ssh برای authentication از شما سوال می پرسد و اگر برای آن پسوردی وارد نکنیم فرآیند cron کار نخواهد کرد. و برای آنکه cron ما به درستی کار کند، ما نیاز داریم که از پروتکل ssh جهت sync کردن به صورت passwordless استفاده نماییم.
در این مثال من از کاربر ریشه (root) استفاده کرده ام، به جهت آنکه مالکیت های فایل ها (ownerships) آنها به خوبی حفظ شود، البته شما می توانید از هر کاربر دیگر استفاده نمایید.
در ابتدا با کمک دستورات زیر در ابتدا ما یک کلید public و private در سرور بک آپ خود ایجاد می کنیم (برای مثال backup.example.com).
1 |
[root@backup]# ssh-keygen -t rsa -b 2048 |
زمانی که شما این دستورات را وارد کردید، لطفا در زمان درخواست پسورد عبارتی را وارد نکنید و آن را با یک enter به صورت خالی رها کنید، بنابراین کرون rsync شما نیاز به هیچگونه پسوردی جهت همگام سازی دیتا(sync) کردن نخواهد داشت.
نمونه خروجی
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 9a:33:a9:5d:f4:e1:41:26:57:d0:9a:68:5b:37:9c:23 root@backup.exmple.com The key's randomart image is: +--[ RSA 2048]----+ | .o. | | .. | | ..++ . | | o=E * | | .Sooo o | | =.o o | | * . o | | o + | | . . | +-----------------+ |
حالا کلید عمومی (Public) و خصوصی (Private) ایجاد شده است و ما آن را با سرور اصلی به اشتراک می گذاریم تا در هنگام sync کردن دیتا توسط سرور بک آپ، سرور اصلی آن را بشناسد و به آن اجاز لاگین بدون وارد کردن پسورد را بدهد.
1 |
[root@backup html]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@webserver.example.com |
حالا سعی کنید که توسط ssh به سرور وارد شوید توسط “ssh ‘root@webserver.example.com‘” و .ssh/authorized_keys را بررسی کنید.
1 |
[root@backup html]# root@webserver.example.com |
خب تا این مرحله ما کلید را به اشتراک گذاشتیم بین دو سرور، و اگر تمایل دارید که در این زمینه (SSH password less login) مطالعه بیشتری داشته باشید می توانید از مطالب مفید لینک زیر بهره ببرید.
مرحله پنج: تنظیم Cron جهت همگام سازی دیتا (Sync)
اجازه بدهید که یک Cron را برای این کار در این مرحله تنظیم کنیم. جهت تنظیم Cron لطفا فایل Crontab را با کمک دستورات زیر باز کنید.
1 |
[root@backup ~]# crontab –e |
دستور فوق فایل مسیر /etc/crontab را جهت ادیت با ادیتور دیفالت سرور شما باز می کند. در این مثال، من یک cron را نوشته ام که هر ۵ دقیقه یک بار جهت sync کردن دیتا اجرا شود.
1 |
*/5 * * * * rsync -avzhe ssh root@webserver.example.com:/var/www/ /var/www/ |
کرون بالا و دستور Rsync به سادگی به همگام سازی “/var/www/” از سرور اصلی به سرور بک آپ در هر ۵ دقیقه می پردازد. شما می توانید زمان این همگام سازی (Sync) کردن و مکان آنرا با توجه به نیاز خودتون تغییر دهید. در صورتی که تمایل به کارهای خلاقانه تر با Rsync بزنید می توانید از لینک های زیر بهره ببرید.
نویسنده: حامد چوبین
هرگونه کپی برداری تنها با ذکر منبع بلامانع می باشد.
منبع: بلاگ فاواچ