بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
وتحية طيبة
توفر السي بنل اليه لعمل النسخ الإحتياطية اليومية والأسبوعية والشهرية فقط ، ولكنها لا توفر خيارات اخرى لهذا الأمر ، ولكن في بعض الأحيان وخصوصا في بيئات التجرية فاننا
قد نحتاج للحصول على نسخ احتياطية لموقع معين او مجموعة مواقع باكثر من الخيارات (يومي ، اسبوعي ، شهري) فمثلا قد اود ان انشئ نسخ احتياطي لموقع ما على الخادم
كل ساعة وذلك لحاجتي لذلك لان الموقع يعمل بنسخة تجريبية وقد يحدث اي امر لا يحمد عقباه في اي لحظة لهذا فانني عندها استطيع الرجوع الى النسخ الإحتياطي لأخر ساعة
ولن اظطر الى الرجوع للباك اب اليوم وفقدان جميع البيانات التي تم اضافتها الى الموقع في هذا اليوم علما بان طبيعة الموقع تشير الى انه يتم تبادل بيانات كثيرة خلال اليوم.
من هنا جاءت الحاجة لتقنية او اداة توفر لي القيام باجراء باك اب كل ساعة لموقع ما على الخادم ، وبدات بالفعل بتنفيذ هذه الآلية وتم تنفيذها ، واضعها هنا بين ايديكم من اجل
الفائدة
ولتنفيذ هذه الآلية سوف احتاج للأمور التالية
ندخل على شل السيرفر بواسطة معلومات المستخدم root
اولا : انشاء دليل في مجلد النسخ الإحتياطي cpbackup سوف اسميه hourly وحتى يتك تخزين النسخ فيه
طبعا في اغلب السيرفرات يكون مجلد ال cpbackup موجودا على الإمتدادا /backup
لهذا فان امر انشاء المجلد سيكون
كود:
mkdir /backup/cpbackup/hourly
ثانيا: سوف احتاج لان اضع امر معين في الكرون جوب (crontab) يقوم بعمل نسخ احتياطية للموقع الذي انا بصدد العمل علية بحيث يتم اعداد المر ليتم تنفيذة كل ساعتين
مثلا وبالتالي احصل على نسخة احتياطية من الموقع كل ساعتين
ولتنفيذ هذا الأمر سوف اقوم بتنفيذ الأمر
ومن ثم سوف اضيف السطر التالي الى محتويات الملف
كود:
0 */2 * * * /scripts/pkgacct user
على افتراض ان user هو اسم مستخدم السي بنل لذلك الموقع
تلاحظ وجود العبارة */2 والتي تعني ان الأمر سوف يتم تنفيذة كل ساعتين او 12 مرة خلال ال 24 ساعة
بعدها سوف اقوم على حفظ الملف
ثالثا: انني وحتى الان قمت على اعداد امر تكوين النسخة الإحتياطية للموقع كل ساعتين بحيث يتم انشاء النسخة الإحتياطية في مجلد /home
ولكن كما تعلمون فان اسم الملف الذي سيتكون عند انشاء النسخة الإحتياطية سوف يكون كالتالية
/home/cpmove-user.tar.gz
على افتراض ان اسم مستخدم السي بنل هو user
وعند تحقق الساعة الرابعة او عندما يحين موعد اخذ النسخة الإحتياطية للمرة القادمة فان اسم الملف سيكون واحد
/home/cpmove-user.tar.gz
وبالتالي سوف يتم كتابة الملف فوق الملف القديم وبهذا انا لم استفد شيئا كون عملية الكتابة تمت على الملف القديم
لهذا انا بحاجة الى اجراء معين او امر معين يقوم بتغيير اسم الملف الى القديم الى اسم اخر
رابعا: اذا انا الان بحاجة الى امر معين يقوم بتغيير اسم الملف الذي تم خلال عملية الباك اب الى اسم اخر حتى لا يتم الكتابة فوقه عندما تقوم السي بنل بعد ساعتين بتنفيذ عملية
الباك اب مرة اخرى
لهذا انا قمت بإجراء الأوامر التالية
كود:
touch /root/es-cpmove-rename.sh
وهذا سوف ينشئ ملف باسم es-cpmove-rename.sh في مجلد الروت
الان سوف اقوم بتحرير الملف عن طريق الأمر
كود:
nano /root/es-cpmove-rename.sh
واضع فيه الأوامر التالية
كود:
#!/bin/bash
if [ -s /home/cpmove-user.tar.gz ]
then
MODDATE=$(stat -c %Y /home/cpmove-user.tar.gz)
MODDATE=$(date --date=@$MODDATE +"backup-%Y_%m_%d_%H_%M_%S-user")
#//MODDATE=${MODDATE%% *}
mv /home/cpmove-user.tar.gz $MODDATE.tar.gz
mv $MODDATE.tar.gz /backup/cpbackup/hourly/
echo "file /home/cpmove-user.tar.gz renames to"
echo $MODDATE
#echo $MODDATE
fi
مع مراعاة ان تقوم بتغيير user في الأوامر السابقة الى اسم مستخدم السي بنل للموقع الذي تود العمل علية ومع تغيير الإمتداد /backup/cpbackup/hourly الى الباث الصحيح في حال كان مختلفا لديك على السيرفر.
لاحظ ان الأوامر السابقة سوف تقوم على التاكد في حال وجود ملف في مجلد home باسم
cpmove-user.tar.gz
وفي حال كان الملف موجودا سوف تقوم على تغيير اسمه الى مثلا
backup-2008_11_19_06_00_56-user.tar.gz
حيث تم تغيير الإسم الى البادئة backup ومن ثم السنة والشهر واليوم ومن ثم الساعة والدقيقة والثانية التي انشئ فيها الملف الأصلي
ومن ثم سوف تقوم على نقله من مجلد ال home الى مجلد
/backup/cpbackup/hourly
الذي قمنا بانشائه في الخطوة الأولى
خامسا: الان نجد انه تم انشاء المجلد الذي سوف يحتوي على الباك اب كل ساعتين للموقع ويتم انشاء الباك اب كل ساعتين للموقع من خلال ال crontab وقم قدمنا كذلك على انشاء سكربت يقوم على نقل وتغيير اسم الملف كي لا يتم الكتابة فوقة عند تنفيذ النسخ الإحتياطي بعد ساعتين
ولكننا منطقيا يجب ان نضع امر في الكرون جوب (crobtab) بحيث يتم تنفيذ السكربت es-cpmove-rename.sh تلقائيا
لهذا سوف نقوم بتنفيذ الأمر
ووضع الأمر التالي في اخر سطر
كود:
*/15 * * * * sh /root/es-cpmove-rename.sh
لاحظ ان هذا السكربت سوف يتم تنفيذة كل 15 دقيقة ، ولا مشكلة في ذلك لان السكربت قبل ان يقوم بالنقل سوف يتاكد من وجود او عدم وجود ملف الباك اب ، وفي حال كان غير موجود فلن يقوم باي اجراء
والان وبعد هذه الخطوات قمنا باعداد الخادم بحيث يقوم كل ساعتين بعمل نسخة احتياطية من الموقع الذي يتبع له اسم المستخدم user وان يحتفظ بالباك اب الذي تم انشاءه في مجلد
/backup/cpbackup/hourly
بحيث يكون اسم الملف يدل على ساعة انشاءه
وبعد مرور مجموعة من الوقت لو دخلت الى السيرفر وكان العمل تم بشكل سليم وذهبت الى مجلد
كود:
cd /backup/cpbackup/hourly
ونفذت امر الإستعراض
ls -lh
سوف تجد مجموعة من الملفات وهي مثلا على الشكل التالي
كود:
-rw------- 1 root root 51M Nov 18 12:00 backup-2008_11_18_12_00_52-user.tar.gz
-rw------- 1 root root 51M Nov 18 14:00 backup-2008_11_18_14_00_57-user.tar.gz
-rw------- 1 root root 51M Nov 18 16:00 backup-2008_11_18_16_00_51-user.tar.gz
-rw------- 1 root root 51M Nov 18 18:00 backup-2008_11_18_18_00_52-user.tar.gz
-rw------- 1 root root 51M Nov 18 20:00 backup-2008_11_18_20_00_51-user.tar.gz
-rw------- 1 root root 51M Nov 18 22:01 backup-2008_11_18_22_01_04-user.tar.gz
-rw------- 1 root root 51M Nov 19 00:00 backup-2008_11_19_00_00_54-user.tar.gz
-rw------- 1 root root 51M Nov 19 02:00 backup-2008_11_19_02_00_49-user.tar.gz
-rw------- 1 root root 51M Nov 19 04:00 backup-2008_11_19_04_00_52-user.tar.gz
-rw------- 1 root root 51M Nov 19 06:00 backup-2008_11_19_06_00_56-user.tar.gz
وبهذا احتفظت بنسخ احتياطية للموقع كل ساعتين واستطيع في اي لحظة استرجاع اي نسخة من خلال الدخول الى WHM وتنفيذ امر الإسترجاع كالمعتاد
امل ان يستفيذ من هذا الأمر احد غيري
وشكرا لكم