Blogroll

Blogger news

الجمعة، 12 فبراير 2010

طريقة عمل نسخة احتياطية من قاعدة البيانات ومن الملفات باستخدام ال cron jobs

بسم الله نبدأ

سنشرح الأن موضوع قد لا يكون له علاقة مباشرة بلغة البرمجة PHP الا انه مهم وضروري جدا وقد يطلب منك في يوم من الايام بصفتك مطور مواقع (web developer) هو صحيح من عمل الـ (web administrator) ولكن في أغلب الأحيان خاصة عندما تصمم موقع لأشخاص أو لشركات قد لا تفرق بين التخصصات وهى تريد شخص واحد يقوم بتنفيذ العمل الخاص بها الذي تريده




الان سوف نشرح كيفية عمل نسخة احتياطية لكل ملفات الموقع وايضا لقاعدة البيانات على مجلد معين داخل موقعك بحيث يتم عمل النسخة كل فترة زمنية محددة باستخدام الـ cron jobs من لوحة تحكم الموقع cpane


سيظهر لنا الشكل التالي
 

كما نرى نجد على الشكل شرح لما يظهر لك فمعروف انك عندما تريد عمل نسخ احتياطي تلقائي لقاعدة البيانات او لمجلد ما يجب ان تحدد الوقت الذي سوف يتم فيه أخذ النسخة
ومن خلال الخانات الدالة على الوقت تقوم بتحديد ذلك
فمثلا قد نريد أن يتم أخذ النسخة الاحتياطية كل يوم
سنوضح في الخطوات التالية كيفية ضبط الوقت
بالنسبة للخاانات التي أمامنا
من ناحية اليسار
1-    minute
وهى لتحديد الدقيقة التي سوف يتم عندها أخذ النسخة الاحتياطية
2-    Hour
لتحديد الساعة
3-    Day
لتحديد اليوم والعلامة * تعني كل يعني لما ندعها كما هى يكون معناها كل يوم من الشهر ولاحظ انها من الشهر يعني عبارة عن 31
فلو تركنها كل هى وضبطنا الوقت مثلا على الساعة السادسة يعني هذا أخذ نسخة إحتياطية كل يوم الساعة السادسة
4-    Month
لتحديد الشهر وايضا العلامة * تعني كل شهر
5-    Weekday
تعني تحديد اليوم من الاسبوع

وفيما يلى بيان للقيم التي من الممكن أن تأخذها كل خانة بحيث تبين من اين تبدأ واين تنتهي
-     -    -    -    -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)
وكما نلاحظ ان ايام الاسبوع تبدا من يوم الأحد حيث يأخذ القيمة 0
الأحد      => 0
الأثنين    => 1
الثلاثاء   => 2
الأربعاء => 3
الخميس  => 4
الجمعه   => 5
السبت   => 6
وهذه هى كل القيم التي يأخذها أيام الأسبوع
ولكي يتضح الأمر تماماً هذه بعض الأمثلة مع توضيح الوقت التي تتم به

الآن وقد فهمنا طريقة ضبط الوقت الذي سوف يتم معه تنفيذ اى حدث كلما جاء هذا الوقت والحدث الذي يُنفذ لا يقتصر فقط على موضوع أخذ نسخة إحتياطية من قاعدة البيانات
بل من الممكن ان تنفذ اى أمر  SSH تريد

وهنا سوف نبين خطوات اخذ نسخة من قاعدة البيانات ونضعها في مجلد يكون على الموقع الخاص بنا

1-    بأى برنامج ftp  ادخل على موقعك وانشئ مجلد باسم (database_backup) مثلا وراعي الا يكون هذا المجلد داخل المجلد (public_html) بالنسبة لنظام ال Cpanel أو  (httpdocs)  بالنسبة لل  Plesk
المقصود ألا يكون المجلد يمكن تحميله من الزوار لموقعك
2-    قم بالدخول الى cron jobs كما وضحنا من قبل
3-    ثم اضغط
Advanced (Unix Style) كما وضحنا
4- قم بضبط الوقت كما تم توضيح الطريقة في الشرح السابق وعلى سبيل الثال سأختار وقت (كل يوم الساعة السادسة والنصف صباحاً سيكون الضبط للوقت كالتالي)

5-    في الخانة
Command
سوف نضيف الأمر التالي
mysqldump --user=database_user_name --password=database_password --quick --add-drop-table --add-locks --extended-insert --lock-tables --all database_name | gzip > /home2/domain/database_backup/database_backup-`date -I`.gz


والشكل التالي يبين لك القيم التي يجب تغيرها تبعاً لبيانات قاعدة البيانات الخاصة بك وبيانات موقعك

6- أضغط commit changs
بهذا تكون قد انهيت الخطوات لعمل لأخذ نسخة من قاعدة البيانات وحفظها على السيرفر

ومن الممكن عمل
Backup
للمافات على السيرفر بنفس الطريقة
1- باستخدام اى برنامج  ftp قم بعمل مجلد على موقعك وليكن اسمه (all_files_backup) على الا يكون داخل المجلد (public_html) او (httpdocs) كما سبق وبينا
2-    كرر ما قمت بعمله من قبل عند اخذ نسخة من قاعدة البيانات في الخطوات رقم 2 و 3 و 4
3-    في الخانة
Command
قم باضافة الأمر التالي
tar -czvf /home2/domain/files_backup/all_files_backup-`date -I`.tgz /home2/domain/public_html

وبهذا نكون قد انهينا شرح هذا الأمر

واريد ان اقول ملاحظة اني قد قمت بشرح هذا الموضوع بمنتدى سابق من قبل
وايضا قمت بارفاق سكربت يتم من خلاله معرفة الزمن او فارق الزمن او فارق التوقيت بين وقت السيرفر والوقت على جهازك حتى تستطيع ضبط الوقت الذي تريد ضبط عمل ال backup فيه حيث ان الوقت يتم ضبطه على حسب توققيت السيرفر وليس جهازك
بمشيئة سوف اضيف هذا السكريبت بالموضع القادم

1 comments:

شرح موفق ، بارك الله فيك ونفع بعلمك

إرسال تعليق

Blogger templates