المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : أخذ نسخة إحتياطية كاملة لقواعد البيانات من خلال سكريبت script Shell



walid
11-02-2013, بتوقيت غرينيتش 01:35 AM
السلام عليكم ورحمة الله وبركاته,
هنا انا جايبلكم طريقة لأخذ نسخة إحتياطية لقواعد البيانات فقط من على السيرفر SERVER بالكامل http://www.dzbatna.com/images/smilies/cupidarrow.gif

وده هيتم من خلال فايل أوامر شيل... والأوامر كالتالي:

رمز Code:
#!/bin/sh ################################################## #################################### ############### CONFIGURATION AREA ################### ############### You will have to fill your configuration data here ################### ################################################## #################################### backuppath="/home/databasebackup/" skip_list="eximstats test leechprotect mysql horde" mysqldumpoption="--opt" backup_every_database_individualy="off" backup_all_databases_in_one_file="on" backup_selected_databases_individualy="on" backup_selected_databases_in_one_file="off" usebzip="on" use_rotation="off" rotation_days=7 ################################################## ##################################### ###################### END OF CONFIGURATION AREA ########################### ################################################## ##################################### ################################################## ############ ################ BEGINING OF THE SCRIPT ###################### ################################################## ############ if [ "$use_rotation" = "on" ]; then echo echo "You choosed to use backup rotation, which means that all files in" $backuppath " older than " $rotation_days " days" echo "WILL BE DELETED" echo echo "DELETING FILES ============>" echo "`find "$backuppath" -type f -mtime +"$rotation_days"`" rm -f `find "$backuppath" -type f -mtime +"$rotation_days"` fi databases=`mysqlshow | tr -d ' |'|grep -v -E '^Databases$|^\+\-\-\-'` if [ "$usebzip" = "on" ]; then echo echo "You choosed to bzip-2 .sql files after creating them" fi ####### backup up every database individualy ############### if [ "$backup_every_database_individualy" = "on" ]; then echo echo "We will be backing up all databases on your sistem in separate .sql files" for database in $databases; do echo "Processing database: " $database mysqldump $mysqldumpoption $database > $backuppath$database"_"$(date +%m%d%Y).sql if [ "$usebzip" = "on" ]; then bzip2 -9 -f $backuppath$database"_"$(date +%m%d%Y).sql fi done fi ################################################## ############# ###### backup all databases in one file ################## if [ "$backup_all_databases_in_one_file" = "on" ]; then echo echo "We will be backing up all databases on your sistem in one .sql file" echo "Processing databases: " echo "$databases" mysqldump $mysqldumpoption -A > $backuppath"alldatabases_"$(date +%m%d%Y).sql if [ "$usebzip" = "on" ]; then bzip2 -9 -f $backuppath"alldatabases_"$(date +%m%d%Y).sql fi fi ################################################## ######## ##### backup all databases except for the ones in skip_list individualy ######################### if [ "$backup_selected_databases_individualy" = "on" ]; then selecteddatabases=$databases for examined1 in $skip_list; do selecteddatabases=`echo "$selecteddatabases" | grep -x -v -E "$examined1"` done echo echo "We will be backing up all databases on your sistem, except for the ones in skip_list, in separate .sql files" for database2 in $selecteddatabases; do echo "Processing database: " $database2 mysqldump $mysqldumpoption $database2 > $backuppath$database2"_"$(date +%m%d%Y).sql if [ "$usebzip" = "on" ]; then bzip2 -9 -f $backuppath$database2"_"$(date +%m%d%Y).sql fi done fi ################################################## ################################################# ##### backing up all databases except for the ones in skip_list in one file ######################### if [ "$backup_selected_databases_in_one_file" = "on" ]; then selecteddatabases=$databases for examined2 in $skip_list; do selecteddatabases=`echo "$selecteddatabases" | grep -x -v -E "$examined2"` done echo echo "We will be backing up all databases on your sistem, except for the ones in skip_list, in one .sql file" echo "Processing databases: " echo "$selecteddatabases" mysqldump $mysqldumpoption --databases $selecteddatabases > $backuppath"selecteddatabases_"$(date +%m%d%Y).sql if [ "$usebzip" = "on" ]; then bzip2 -9 -f $backuppath"selecteddatabases_"$(date +%m%d%Y).sql fi fi ################################################## ################################################## #
كيف يتم استخدامه:

1- انسخ كافة محتويات الكود code السابق وضعه في صفحة مفكرة جديدة Notepad ثم إحفظه بالاسم التالي: apmysqlbackup.sh

2- عدل في الكود code المتغيرات التالية بمتغيراتك الخاصة:

backuppath="/home/databasebackup/"
قم بإنشاء مجلد جديد على السيرفر SERVER لحفظ قواعد البيانات بعد النسخ الإحتياطي, وضع مسار المجلد هنا

skip_list="eximstats test leechprotect mysql horde"
ضع هنا اسماء القواعد التي تريد إستثنائها من عملية النسخ الاحتياطي

backup_every_database_individualy="off"
حدد هذا الاختيار الى on إذا كنت تريد جعل الاسكربت يسحب كل قاعدة بيانات في ملف مستقل

backup_all_databases_in_one_file="on"
سحب كافة قواعد البيانات في ملف واحد؟ بحيث يمكنك إستعادته لاحقاً من خلال الامر:
mysqldump --A

usebzip="on"
هل تريد إستخدام الضغط لقواعد البيانات بعد سحبها؟

use_rotation="off"
عين هذه الى on اذا كنت تريد أن في كل مرة يعمل الاسكربت فيها يفحص قواعد البيانات الموجودة في مجلد النسخ الاحتياطي ويحذف ما يزيد تواجدها عن الايام المحددة في الاوبشن التالي:
rotation_days=7

3- الآن قم برفع الملف إلى السيرفر SERVER, ومن خلال الشيل في المسار الخاص بالملف أكتب الامر التالي:
chmod 700 apmysqlbackup.sh

4- ثم قم بتشغيل الملف من خلال الامر التالي:
./apmysqlbackup.sh




تقبلوا تحياتي http://www.dzbatna.com/images/smilies/cupidarrow.gif




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى