گرفتن پشتیبانی از سایت روی سرور لینوکس

بسم الله الرحمن الرحیم

مقدمه

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

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

دستور rsync 

اولین دستوری که ما با اون  سر و کار داریم و بسیار هم مهم هست دستور rsync  هست

این دستور کار بردی میاد دو فولدر رو با هم همگام میکنه .

یعنی تمام تغییرات یک فولدر را تو فولدر دیگه اعمال میکنه .

در واقع این دستور دفعه ی اول میاد تمام محتویات فولدر اول رو توی فولدر دوم کپی میکنه و در دفعات دیگه فقط تغییرات رو اعمال میکنه .

که این قابلیت برای گرفتن پشتیبانی خیلی مفیده .

خوب فرم کلی دستور به این شکل هست .

 sudo rsync options source destination  

که ما از این کد برای کارمون استفاده میکنیم .

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

در این لینک میتونید مثال های دیگه ای ببینید .

کد ما :

sudo rsync -avzh --delete --info=progress2  /var/www/nikdel.tk/ /mnt/site/nikdel.tk/

بک آپ دیتابیس توسط mysqldump

خوب توسط دستور rsync میتونیم از فایل همون بکآپ بگییریم حالا برای گرفتن بکآپ از پایگاه داده باید از mysqldump استفاده کنیم

فرم کلی این دستور به این شکله

 sudo mysqldump  -u ${MYSQL_USER}  -p${MYSQL_PASSWORD} ${DATABASE_NAME}  > /path/to/database.sql

که معلوکه که در هر قسمت باید چی بنویسید …

ساخت اسکریپت بکاپ گیری

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

برای این کار توسط ویرایش گر متن خودتون یه فایل .sh ایجاد کنید و میتونید از کد زیر درون اون استفاده کنید .

#!/bin/bash
NOW=$( date '+%F--%H:%M' ) #for curernt date 
mkdir /tmp/log
sudo rsync -avzh --delete --progress  /var/www/nikdel.tk/ /mnt/site/nikdel.tk/ >> /tmp/log/$NOW.log #sync the folders
sudo cp /tmp/log/$NOW.log /mnt/site/log/nikdel.tk/$NOW.log  #save logs 
rm /tmp/log/* #remove temprory logs 


MYSQL_USER='myuser' 
MYSQL_PASSWORD='mypass'

DATABASE_NAME='nikdel'



mysqldump  -u ${MYSQL_USER} \
-p${MYSQL_PASSWORD} \ 
                ${DATABASE_NAME}  > /mnt/site/sql/esp.ir/${DATABASE_NAME}---${NOW}.sql   # back up database 

خوب در ۶ خط اول ما علاوه بر همگام سازی فایل از خروجی های دستور rsync لوگ گرفتیم و اونها رو در مسیر /mnt/site/log/nikdel.tk ذخیره کردیم

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

تنظیم حالت اتوماتیک توسط crontab

کرون ها درلینوکس بسیار مفید هستند و علتش هم اینه که مامیتونیم تعیین کنیم که یه سری کار ها به طور خودکار انجام بشه .

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

خوب برای اضافه کردن تسک جدید ابتدا لاز مه ما با یوزر root وارد شیم چون بعضی از دستوراتمون در کد بالا احتیاج به دسترسی root دارن.

برای این کار این عبارت رو تایپ کنید .

sudo su - 

و پسوردتون ور بنویسید .

خوب حالا با این دستور وارد تنظیمات crontab بشین

crontab -e 

در این قسمت میتونید این دو عبارت رو به انتهای فیلتون اضافه کنید . با این کار اسکریپت ما هرروز ساعت ۲ , ۹ بعد از ظهر اجرا میشه و بکاپ گرفته میشه .

۰۰ ۱۴ * * * /home/sepehr/nikdel
۰۰ ۲۱ * * * /home/sepehr/nikdel

موفق باشید …

0 پاسخ

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

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *