راه اندازی سرور بک آپ

اطلاعیه خودکار این مقاله ؛ این پست در ۸ سال پیش نوشته و منتشر شده است و اکنون شاید قوانین و ابزار ها تغییر پیدا کرده باشد. اگر میدانید این نوشته هنوز به کارتان می آید ،به خواندن ادامه دهید.

راه اندازی سرور بک آپ : روش ایجاد بک آپ با Rsync

این مقاله یک روش سریع برای بک آپ گیری از مهمترین قسمت های سایت شما که شامل فایلهای سایت و پایگاه داده است را آموزش می دهد.ما یک فول بک آپ روزانه مربوط به یک پوشه وب سایت را راه اندازی خواهیم کرد و کپی فایل ها را به یک سرور دیگر خواهیم فرستاد.همچنین یک مثال Rsync برای کپی تغییرات افزایشی فایل ها راه اندازی خواهیم کرد. و در آخر بک آپ پایگاه داده MySQL را راه اندازی خواهیم کرد.راه اندازی سرور بک آپ با روش توضیح داده شده از چند دستور ساده Bash،Rsync و cronبرای زمانبندی بک آپ ها استفاده می کند.برای مثال ما می توانیم وردپرس را نصب کنیم که با این نصب پوشه های وردپرس در دایرکتوری  /var/www/wordpress قرار خواهند گرفت و ما می خواهیم از تمام اطلاعات و پایگاه داده وردپرس بک آپ بگیریم.

در صورتی که سرور مجازی فعال در کندوهاست داشته باشید می توانید تیکت ارسال نمایید تا فضای بک آپ رایگان ۱۰ گیگ برای راه اندازی سرور بک آپ خود دریافت نمایید . و توسط آموزش این مقاله از سایت و یا فایل های خود بک آپ گرفته و در این فضا ذخیره کنید.

همچنین پلن های دیگر وجود دارد که برای سفارش می توانید به این لینک زیر مراجعه نمایید:

مشاهده پلن های هاست بک آپ

 

دو روش برای راه اندازی سرور بک آپ وجود دارد:

افزایشی و فول بک آپ.

روش فول بک آپ، تمام اطلاعات را کپی می کند در حالیکه روش افزایشی فقط تغییرات انجام گرفته از زمان آخرین آپدیت را کپی می کند.

 

فول بک آپ

فول بک آپ موارد زیر را انجام می دهد:

  • از تمام فایل ها در یک پوشه بک آپ تهیه می کند
  • بک آپ تهیه شده را به سرور دیگر می فرستد

همانطور که گفته شد اطلاعات ما در پوشه  /var/www/wordpress می باشد. ما محل پوشه بک آپ را  تعیین خواهیم کرد.

mkdir -p /backup/wordpress

دستور بالا یک دایرکتوری  /backup و یک دایرکتوری  /backup/wordpress را ایجاد خواهد کرد ، اگر آنها وجود نداشته باشند. برای ایجاد بک آپ کامل از اطلاعات از ابزار لینوکس به اسم tar استفاده می کنیم.

tar -czf /backup/wordpress/initial_backup.tar.gz/var/www/wordpress

Tar یک آرشیو gzip را در فایل  initial_backup.tar.gz.ایجاد می کند.ما می توانیم یک پرچم  v را اضافه کنیم .(  -czvf )اگر خروجی طولانی می خواهیم(لیست فایل نیم ها) . ما نام فایل را initial_backup.tar.gz می گذاریم تا بدانیم که این بک آپ اولیه است، آن با Tar ذخیره می شود و  izبا فرمت gzip فشرده می شود.Tar از آرگومنت هایی که ما فراهم می کنیم به عنوان منبع استفاده خواهد کرد ، در مثال ما از دایرکتوری /var/www/wordpress بک آپ خواهد گرفت . ما می توانیم دو یا تعداد بیشتر آرگومنت بدهیم.خواه فایل یا پوشه باشند:

tar -czf /backup/cms_systems_backup.tar.gz /var/www/wordpress/var/www/drupal /var/www/joomla

دستور آخر ، از تمام سیستم های مدیریت محتوای نصب شده بر روی سیستممان بک آپ خواهد گرفت.

حالا برای بک آپ های آینده ممکن است بخواهیم زمانی را تعیین کنیم که بک آپ ایجاد شود

tar -czf /backup/wordpress/wordpress-`date '+%m%d%y'`.tar.gz/var/www/wordpress

بیایید بررسی کنیم که حالا چه چیزی داریم:

 

[root@Backup ~]# ls -l /backup/wordpress/total 9760-rw-r--r-- 1 root root 4995743 Apr 17 12:16 initial_backup.tar.gz-rw-r--r-- 1 root root 4995743 Apr 17 12:25 wordpress-041713.tar.gz[root@Backup ~]#

ما دو فایل داریم، یکی  initial_backupو دیگری wordpress-041713 نام دارد.حالا برای زمانبندی روزانه این ما نیاز به ایجاد یک ورودی crontab داریم. Crontabیک زمانبندی کار لینوکس است: ما به آن می گوییم چه زمانی کار را انجام دهد و در واقع کدام کار را انجام دهد.به هر حال ما ویرایشگر crontab را باز می کنیم:

EDITOR=nano crontab -e

آن یک فایل crontab را در یک ویرایشگر متن باز خواهد کرد.به طور پیش فرض ،ایمیج های DO CentOS شامل vim  به عنوان ویرایشگر هستند، که نیازمند نصب است ،بنابراین ما برای این منظور از ویرایشگر ساده تری استفاده می کنیم که ویرایشگر nano نام دارد. ما می توانیم فقط از ویرایشگر پیش فرض استفاده کنیم با :

crontab -e

حالا ما باید به cron بگوییم که بک آپ بگیرد.می گوییم که هر روز از ساعت ۳:۳۰ بامداد بک آپ بگیرد که به صورت امیدوارانه ترافیک زیادی در آن زمان وجود ندارد، همچنین به آن می گوییم که هر یافته ای را به ما ایمیل کند.این محتوا را در crontab می گذاریم:

MAILTO=email@example.com30 3 * * * /bin/tar -czf /backup/wordpress/wordpress-`date+\%m\%d\%y`.tar.gz /var/www/wordpress

فایل را توسط  CTRL-Xذخیره کرده و توسط Y و Enter تایید می کنیم .دستور بالا به لینوکس خواهد گفت که دستور ما را هر روز از ۳:۳۰ تکرار کند. ما همچنین به cron گفتیم که نتایج را به ما ایمیل کند.شما پیغام /bin/tar: Removing leading `/’ را از نام های اعضا به عنوان یک نشانه از اینکه همه چیز در حال انجام است دریافت خواهید کرد. در حالت بروز خطاها ، پیغام شامل جزئیات خواهد بود بنابراین ما می توانیم آن را درست کنیم.بنابراین،بک آپ روزانه آماده و در حال کار است.

کپی بک آپ ها به سرور دیگر

برای کپی بک آپ ها به سرور دیگر، از کپی ایمن scp – استفاده خواهیم کرد.در ابتدا ما نیاز به ایجاد یک کلید SSH داریم:

ssh-keygen

فعلا می توانیم عبارت پسورد را خالی بگذاریم ،و از فایل کلید  /root/.ssh/id_rsa_backupاستفاده کنیم.(یا از /home/username/.ssh/id_rsa_backup اگر به عنوان روت اجرا نمی کنیم).حالا می توانیم قسمت کلید عمومی را چک کنیم:

cat .ssh/id_rsa_backup.pub

ما نیاز به کپی این قسمت عمومی از کلید SSH به سرور دیگر، فایل authorized_keys داریم.من فرض می کنم که قبلا یک دیگر به اسم backup.example.com ایجاد کرده ایم و یک یوزر به اسم backup. این سرور می تواند فضای بک آپی باشد که از کندوهاست تهیه کرده اید.که قبلا به آن اشاره کردیم.اما پس از تهیه سرور باید یوزر در آن ایجاد شده باشد.ما این قسمت را فقط یکبار انجام می دهیم.

scp .ssh/id_rsa_backup.pubbackup@backup.example.com:/home/backup/backup_key.pub

در ادامه پسورد یوزرbackup  از ما پرسیده خواهد شد.ما فایل را کپی کردیم،حالا بیایید آن را جایی که باید باشد در authorized_keys اضافه کنیم.من نمی توانم فرض کنم که این یوزر قبلا فایل و پوشه نصب دارد،بنابراین بیایید آن اطلاعات را چک کنیم:

ssh backup@backup.example.com "mkdir -p /home/backup/.ssh"ssh backup@backup.example.com "chmod 700 /home/backup/.ssh"ssh backup@backup.example.com "touch /home/backup/.ssh/authorized_keys"ssh backup@backup.example.com "chmod 600 /home/backup/.ssh/authorized_keys"ssh backup@backup.example.com "mkdir -p /home/backup/backups"

چند دستور بالا یک دایرکتوری برای ssh  برای کار با آن فراهم می کنند، اگر آن وجود نداشته باشد، وهمچنین فایل authorized_keys که باید برای کار بک آپ ها موجود باشد. ما همچنین برای ذخیره کردن فایل هایمان یک دایرکتوری backups را ایجاد کردیم.اکنون آنچه باقی می ماند کپی کلید عمومی به آن فایل است .

ssh backup@backup.example.com "cat /home/backup/backup_key.pub >>/home/backup/.ssh/authorized_keys"

حالا می توانیم از این کلید برای کپی کارها در آینده استفاده کنیم.

حالا بیایید فایل backup را به آنجا کپی کنیم:

scp -i .ssh/id_rsa_backup/backup/wordpress/wordpress-041713.tar.gzbackup@backup.example.com:/home/backup/backups

اگر تنظیمات کلید ما درست باشد،فایل کپی خواهد شد و از ما پسورد پرسیده نخواهد شد .ما می توانیم چک کنیم که فایل واقعا آنجاست :

ssh backup@backup.example.com "ls -l /home/backup/backups"

بسیار خوب، ما حالا می توانیم این عمل را برای crontab هم زمانبندی کنیم .ویرایشگر crontab را دوباره باز کنید:

EDITOR=nano crontab -e

ما حالا خط backup را تغییر می دهیم : ما می خواهیم که info را برای کپی گرفتن از آرشیو بک آپ، وقتیکه ایجاد می شود، اضافه کنیم. بنابراین ما دستور جدید را الحاق می کنیم،بنابراین به این صورت خواهد بود:

۳۰ ۳ * * * /bin/tar -czf /backup/wordpress/wordpress-`date+\%m\%d\%y`.tar.gz /var/www/wordpress;/usr/bin/scp -i/root/.ssh/id_rsa_backup /backup/wordpress/wordpress-`date+\%m\%d\%y`.tar.gzbackup@backup.example.com:/home/backup/backups

 

توجه: این راه معمول برای انجام اینکار نیست،بهتر است که یک اسکریپت نصب شود که تمام کارها را انجام دهد و بعد ، اسکریپت را زمانبندی کند.اما برای اختصار مقاله، ما از آن شکل استفاده کردیم.

 

بک آپ افزایشی

اما اگر ما نرم افزار بک آپ خودمان را در سرور دیگر داشته باشیم چطور؟ ما فقط می خواهیم که اطلاعات را همگام سازی کنیم، و بعد سرور دیگر را برای انجام کارهای بک آپ رها کنیم.در مجموع،ما می خواهیم که داده های قبلی را نگه داریم پس از rsync استفاده می کنیم.حالت استفاده در اینجا این است که ما فقط می خواهیم به صورت افزایشی از همه چیز /var/www/wordpress به سرور دیگر کپی بگیریم ، این بار به دایرکتوری  /home/backup/snapshots/wordpress.

این یک دستور ساده برای انجام همه آن کارهاست:

ssh backup@backup.example.com "mkdir -p /home/backup/sync"rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup"/var/www/wordpress backup@backup.example.com:/home/backup/sync

خط اول دایرکتوری کپی فوری ایجاد می کند و دومی فایل تغییر داده شده را به آنجا کپی می کند. این به معنی فایل هایی است که اصلاح شده و تازه ایجاد و یا حذف شده اند.ما می توانیم این را در cron نیز زمانبندی کنیم:

EDITOR=nano crontab -e

خط crontab باید به صورت زیر باشد:

۳۰ ۳ * * * /usr/bin/rsync -avz --delete -e "ssh -i/root/.ssh/id_rsa_backup" /var/www/wordpressbackup@backup.example.com:/home/backup/sync

حالا سرور دیگر ما همیشه یک کپی سینک شده تازه از داده ها خواهد داشت و ما می توانیم بک آپ را در آنجا داشته باشیم.

 

بک آپ گیری از پایگاه داده

ما همچنین می توانیم از پایگاه داده خود بک آپ بگیریم.در ابتدا ما می خواهیم اطلاعات خود را استخراج کنیم. اگر ما از راهنمای نصب وردپرس پیروی کنیم، ما همچنین یک وردپرس پایگاه داده داریم که توسط یوزر wordpressuser با پسورد password دسترسی داده می شود. ما می توانیم استخراج اولیه را به این صورت انجام دهیم:

mkdir /backup/mysqlmysqldump < wordpress -u wordpressuser -ppassword | gzip >/backup/mysql/initial.sql.gz

این دستور یک فایل SQL   initial.sql.gz gziped  ایجاد کرد . برای انجام آن به صورت روزانه، ما می توانیم آن را در cron مثل قبل زمانبندی کنیم.خط cron نتییجه داده شده به صورت زیر خواهد بود:

۰ ۴ * * * /usr/bin/mysqldump < wordpress -u wordpressuser-ppassword | /bin/gzip > /backup/mysql/mysql--`date +\%m\%d\%y`.sql.gz

حالا ما همچنین می توانیم آن را با  scpیا  rsyncبرای کپی به سرور دیگر ترکیب کنیم.

۰ ۴ * * * /usr/bin/mysqldump < wordpress -u wordpressuser-ppassword | /bin/gzip > /backup/mysql/mysql-`date +\%m\%d\%y`.sql.gz;/usr/bin/scp -i /root/.ssh/id_rsa_backup /backup/mysql/mysql-`date+\%m\%d\%y`.sql.gz  backup@backup.example.com:/home/backup/

با این نصب،ما بک آپ اساسی برای اطلاعاتمان در شرایط ضروری داریم.

 

منبع

ترجمه شده توسط: آرزو رنجبرپور

لینک کوتاه مطلب :

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نخواهد شدعلامتدارها لازمند *

*