السلام عليكم ورحمة الله وبركاته
طرق الباك أب في لينوكس ...
أخواني
الأعزاء هذا أول موضوع أكتبه في موقعنا
كلنا الجديد ...
وأحببت
أن يكون عن الباك أب Backup
أكيد
الكثيرين يعرفون مثل هذه الأمور ...
لكن لمن
ﻻ يعرف كيف يعمل باك آب لملفاته المهمة
سيكون هذا الدرس البسيط جدا ...
على
بركة الله نبدأ الدرس:
الــ
Backup هي
أن تأخذ نسخة إحتياطية من ملفاتك المهمة
خوفا من التلف.
هذا يمكن
تعريف بسيط جدا للغاية قد ﻻ يشبع رغبات
المحترفين. على
العموم ... طرق
الباك آب كثيرة وكثيرة جدا ...
أيضا يجب
قبل أن تأخذ باك آب أن تحدد أين ستقوم بوضع
هذا الباك آب ؟؟؟ هل على نفس الجهاز HD
؟ هل على
سي دي CD ؟
هل على دي في دي DVD
؟ أم على
شريط Tape ؟
أم سترسله الى ريموت سيرفر Remote
Server؟ كل
هذه الأمور يجب أن تكون في الحسبان قبل
أن تأخذ الباك آب أصلا...
الآن
ما سأذكره هنا في هذا الدرس هي الأوامر
التالية:
tar
cpio
dump
restore
نأتي
للأمر الأول الي هو tar
يعتبر
من أقدم أومر الباك آب وظهر أيام يونكس
بالتحديد ولم تكن وﻻدته على لينوكس أولا
... أيضا
كلمة tar هي
إختصارا ل Tape
Archive وذلك
ﻷنه يأخذ الملفات التي تحددها له كمدخلات
ويحولها الى سجل واحد أو في عالم الحاسوب
ملف واحد ... الآن
لنأخذ بعض الأمثلة عن الإستعمال:
1-
لكي تأخذ
نسخة إحتياطية من مجلد ال Home
الخاص
بك ... أستعمل
التالي:
tar cvf myhome.tar /home
هذا
سيقوم بأخذ نسخة من مجلدك ويضعه في ملف
أسمه myhome.tar ...
طبعا
الحرف c يعني
أخلق Create لي
أرشيف والحرف v
يعني
أعرض لي ماذا يجري Verbose
Messages والحرف
f يعني
خذ الأسم الذي ذكرناه myhome.tar
على إنه
أسم الملف الجديد أو أسم الأرشيف الجديد
...
2- الآن
ممكن نأخذ نسخة إحتياطية من نفس المجلد
من خلال tar
وإضافة
مسألة جميلة وهي ضغط الملف هذا من خلال
إستعمال ميزة gzip
أو bzip2
... الآن
لكي نأخذ نفس الباك آب من مجلدك home
مع ضغطه
بميزة gzip عليك
بالتالي:
tar czvf myhome.tar.gz /home
هذه
أخذت نسخة إحتياط مع ضغطها بواسطة ال gzip
والحرف
z هو
الذي يدل على ذلك ...
الحين
لو تريد تضغط بإستعمال ميزة bzip2
ضع بدل
الحرف z ضع
الحرف j
الآن
أخذت الباك آب وتريد أن ترجعه في حالة
حصلت مشكلة لديك ...
كل ما
عليك فعله هو التالي:
1-
الوقوف
على المجلد الأب Parent
للمجلد
الذي أخذت منه الباك آب ...
يعني هنا
في مثالنا نحن أخذنا باك أب للمجلد home/
يعني يجب
أن نكون على المجلد /
فقط لكي
نستطيع أن نرجع المجلد بشكل صحيح ...
ظرورية
هذه الملاحظة الخاصة بالمجلد ...
ﻷنه
الأمر tar ﻻ
يعرف من أين تم أخذ الباك آب ولذلك عليك
أن تحدد له ذلك ...
لكن هو
يبقى محافظا لك على هيكلية الملفات داخل
الأرشيف ... يعني
مثال: بداخل
مجلد ال home/ كان
لديك مجلد أسمه 1
ومجلد
أسمه 2 وفايل
أسمه 3 داخل
مجلد 1 يبقى
محافظا على هذه الترتيب ...
2- الآن لفك الأرشيف في حالة لم يكن مضغوط نستعمل الأمر tar بالطريقة التالية:
tar xvf myhome.tar
لتوضيح
الأمر فهو سيقوم بعمل فك للأرشيف داخل
المجلد الذي أنت عليه ...
والدليل
على إنه سيقوم بفك الأرشيف هو إستعمالنا
للحرف x معه
والذي يعني Extract
... وباقي
الأحرف المستعملة تؤدي نفس دور ما تم ذكره
أثناء عملية الأرشفة ...
3-
لو كان
الملف الذي عندك مضغوط كل ما عليك فعله
هو مثلا أن تتعرف على الأداة التي تم الضغط
الأرشيف به من خلال مثلا تنفيذ الأمر
التالي:
file myhome
طبعا هذا في حالة لم تجد ال extention مثل tar.gz. الذي يدل على إنه من نوع أرشيف مضغوط بالأداة gzip ... أما إن كان واضح لديك ما عليك إﻻ أن تعمل التالي:
tar xzvf myhome.tar.gz
نفس
الشي سيقوم بفك الأرشيف في المكان الذي
أنت واقف عليه +
إستعمالنا
للحرف z مع
الحرف x هو
دليل على الفك للأرشيف والفك للضغط من
خلال إستعمال ميزة gzip
ملاحظة
مهمة:
إن الأمر
tar
يعمل عكس
الكثير من الأوامر في لينوكس وذلك ﻷنه
نمتب الهدف Destination
قبل أن
نكتب المصدر Source
الآن نأتي
الى إستعمال الأمر cpio.
طبعا
كلمة cpio
هي إختصار
ل copy
input / output... الآن,
إن من
أهم ميزة هذا الأمر على الأمر tar
هو
إمكانيته لعمل أرشيف لملفات موزعة في
أكثر من مجلد,
بينما
الأمر tar
كان يعمل
أرشيف للملفات التي تقع في نفس المجلد
... إذن
الأمر جميل صح ؟
إحدى
أكثر الطرق إستخداما بالنسبة لي وبالنسبة
لأصحاب السيرفرات هي:
جمع ملفات
ال conf. الخاصة
بإعدادات السيرفرات والخدمات الموجودة
على جهازك أو سيرفرك...
ويتم ذلك
من خلال الأمر التالي:
find / -name '*.conf' | cpio -o > myConf_Files.cpio
التفسير: قمنا بعمل بحث عن ملفات من نوع conf. في جميع النظام / وهذه الخطوة تتمثل في الشطر
find / -name '*.conf'
ومن
ثم قمنا بتحويل او تمرير الناتج الى الأمر
cpio
الذي أخذ
الناتج من الأمر السابق find
... وقام
بعمل أرشيف من خلال تمرير هذه المدخلات
الى output الذي
تمثلت في o- في
المثال ومن ثم عملنا تحويل للناتج الى
ملف أسمه myConf_Files.cpio
الذي
سيتم تخزين الباك آب للملفات التي أخترناها
...
الآن
لفك هذا الأرشيف نقوم بالتالي:
cpio -i < myConf_Files.cpio
التفسير:
سيقوم
ها الأمر بأخذ المدخلات من خلال التحويل
اليه ... وسيقوم
الأمر cpio
بفك
الأرشيف الى الملفات كما تم أخذها ...
وهذه
العملية تتمثل في الجزء cpio
-i والتي
تعني input
أيضا
يمكنك أخذ نسخة إحتياطية من مجلدك وإرساله
الى القرص الصلب من نوع سكازي أو قرص من
نوع USB Disk ...
طبعا إذا
كانت مساحة ال USB
Disk تكفي
مجلدك ... يتم
ذلك من خلال الأمر التالي:
find /home/ali | cpio -o > /dev/sda1
الآن لإرجاع المعلومات من القرص ال USB Disk نستعمل الأمر التالي:
cpio -i < /dev/sda1
طريقة
إستعمال الأمر
dump
الأمر
dump
يجعل
مسألة أخذ نسخة إحتياطية لمجلد أو بارتيشن
بشكل دوري أمر سهل جدا ...
وهذا ما
سنراه في الشرح هذا...
طبعا
يفضل تشغيل هذه الأوامر وأنت لك صلاحيات
المستخدم root
لكي تتجنب
مشاكل الصلاحيات التي قد تحصل عندما تعمل
نسخة إحتياطية لمجلدات معينة ...
الآن
أول شيء نقوم به هو أخذ نسخة إحتياطية
كاملة Full Backup
للمجلد
أو البارتشن الذي ستعمل له باك آب بصورة
دورية ... هنا
في شرحي هذا سأقوم بأخذ نسخة إحتياطية
لمجلدي الخاص وأضعه على USB
Disk كبير
الحجم يكفيني لأخذ نسخة إحتياطية عليه
... يعني
الحين لعمل نسخة إحتياطية لمجلدي الخاص
نقوم بتنفذ الأمر التالي:
dump 0f /dev/sda1 /home/ali
التفسير: سيقوم هذا الأمر بأخذ نسخة إحتياطية كاملة للمجلد المحدد والذي هو هنا مجلدي الخاص
/home/ali
طبعا الأمر
dump 0f
هو من حدد نوع الباك آب, والذي هو Full Backup هنا من خلال الرقم 0. الآن بعد فترة اسبوع تقوم بأخذ نسخة إحتياطية أخرى من خلال الامر التالي:
dump 1f /dev/sda1 /home/ali
بحيث ال 1f تعني أخذ باك آب ثاني للمجلد, لكن ما سيقوم به هو أخذ نسخة إحتياطية للملفات المعدلة أو المضافة حديثا للمجلد فقط, ونقصد المجلد
/home/ali
ولهذا
سيكون حجمها أصغر من حجم النسخة الإحتياطية
في أغلب الأحوال وتعتمد على حسب التغييرات
التي عملتها أنت وحسب الإضافات أيضا ...
يعني:
لو رحت
وضعت لي دي في دي في المجلد حديثا أكيد
سيكون أكبر من النسخة الأولى كلها دون
أدنى شك :p
الآن
بعد أسبوع آخر تريد أخذ باك آب تقوم بعمل
التالي:
dump 2f /dev/sda1 /home/ali
هذا سيقوم بأخذ نسخة إحتياطية للملفات المحدثة أو المضافة حديثا بالمقارنة مع النسخة الإحتياطية التي أخذناها في الإسبوع الماضي والذي عملناها من خلال الأمر
dump 1f
الحين
لو تريد أخذ نسخة أخرى ما عليك سوى ان
تغيير الرقم الى 3
وبعد
أسبوع 4 وهكذا
...
ملاحظة:-
1-
مسألة
أخذ باك آب كل أسبوع ليست شرط !!!!
يعني
ممكن كل يوم ممكن كل شهر ممكن كل سنة ...
حسب أنت
وإحتياجاتك وإحتياجات العمل الذي تقوم
به ... يعني
لو بياناتك مهمة جدا أكيد راح تعمل لها
باك اب يومي كما يحصل في البنوك ...
لو مثلي
ومثلك مستخدمين عاديين في البيت ممكن كل
شهر جيد :D
2-
لكي تعمل
طريقة نسخ إحتياطي بشكل يجب أن تراعي بعض
الأمور:
2-1- أن
تعمل نسخة أحتياطية كاملة Full
Backup من
خلال الأمر:
dump 0f /dev/sda /destination
2-2-
عندما
تأخذ باك آب جديد تراعي إنك تستعمل رقم
أعلى من الرقم السابق وهذه في حالة كان
نوع الباك آب Incremental
... يعني
لو كان الأمر السابق 3f
يكون
الرقم الحالي 4f
وهكذا
...
الآن
مسألة آخرى على السريع:
لو
تريد عمل نسخة إحتياطية لقرص صلب أي
filesystem أو
partition يفضل
إستعمال الخيارات التالية:
dump 0uf /dev/sda1 /
بحيث سيقوم الخيار u بعمل تحديث على ملف
/etc/dumpdates
الذي
سيفيدك عندما تعمل تحديثات ﻻحقة أو تأخذ
نسخ أحتياطية ﻻحقة حيث سيستخدمه الأمر
dump
لفحص
التغييرات التي حصلت منذ آخر نسخ إحتياطي
...
الى
هنا نأتي الى نهاية الأمر dump
ولقاءنا
القادم مع الأمر restore
بعد قليل
...
ملاحظة مهمة جدا:
إذا كنت ستعمل باك آب لمجلدك الخاص كما في المثال ونسخه على بارتيشن ... يجب أن يكون البارتيشن فارغ ... وإﻻ سيحصل فقدان لجميع ما عليه بسبب كتابة برنامج ال dump عليه مباشرة دون النظر الى المحتويات ... ولهذا يجب أن يكون فارغ ... لكن لو ﻻ يوجد لديك بارتيشن فارغ ... فكل ما عليك فعله هو النسخ الى ملف وليس الى بارتيشن ... طبعا مع العلم البارتيشن هو نوع من أنواع الملفات بحد ذاتها ... لكن أليكم الطريقة:
dump 0f myBackup /home/ali
حيث
سيتم تخزين الباك آب في هذا الملف الذي
أسمه myBackup
... وللتأكد
من ذلك أستعمل الأمر file
وأسم
الملف وسترى إنه من نوع dump
أرجوا
ان يعذرني كل من طبق الدرس ولم يكن في
وقتها هذا الجزء من الشرح موجود ...
وخاصة
الأخ أبو فيصل.
طريقة
إستعمال الأمر
restore
يمكن
من خلال الأمر restore
أن نعمل
إسترجاع الى جميع بيانات والمفات التي
تم عملها على شكل نسخة إحتياطية من خلال
الأمر dump
كما رأينا
في ردي السابق.
وأيضا
يمكن أن نقوم بإسترجاع بيانات معينة
ومحددة من هذه النسخ الإحتياطية,
يعني ليس
شرط إسترجاعها كلها,
بل حسب
الحاجة
أيضا
يمكن من خلال هذا الأمر restore
أن نعرض
محتويات نسخة إحتياطية أخذناها على ال
USB Disk من
خلال الأمر التالي:
restore -tf /dev/sda1
الآن لنفرض تريد الدخول الى داخل هذه النسخة الإحتياطية والتجول فيها ... مثلا قد يكون للبحث عن ملف معين ... يمكن ذلك من خلال تطبيق الأمر أوﻻ التالي:
restore -if /dev/sda1
هذا
الأمر سيدخلنا الى داخل النسخة الإحتياطية
ويفتح لي prompt
خاصة
بالأمر restore
أستطيع
أن أدخل عليها أوامر بسيطة مثل ls
و cd
وغيرها
... يمكن
أن ترى قائمة الأوامر المسموح بها من خلال
كتابة الأمر help
على الـ
prompt الخاصة
بالأمر restore
أيضا
ملاحظة مهمة هنا,
قبل أن
تقوم بعمل rsstore
مثلا
للمجلد الذي أخذنا له نسخة إحتياطية في
ردي السابق حين شرحنا الأمر dump
... يجب
أن تكون على مسار أعلى من المسار المراد
إرجاع المجلد أليه ...
يعني لو
كان المجلد الذي نريد نرجعه هو
/home/ali
يجب أن نكون نحن على الـ
/home
وهكذا ... الحين لعمل فك لهذه النسخة الإحتياطية نعمل التالي:
restore -xf /dev/sda1
ﻻ
تنسى أن تكون واقف على الملجد الصح ;)
ملاحظات
أخيرة:
1-
بعض
المرات قد يسألك الأمر restore
عن
الصلاحيات وعن وصاحب هذه الملفات يعني
ال owner وال
mode لهم
... لكي
يرجع لك الملفات الى صورتها الصحيحة ...
فما عليك
سوى تعريفا له ...
وأكيد
تعرف كيف صح ؟ :p
2- يوجد
خيارات أخرى للأوامر صعب إحصائها في موضوع
بسيط ومتواضع مثل هذا ...
ولهذا
أنصحكم بالرجوع دائما الى ال
اقتباس:
man pages |
لهذه الأوامر ... يعني مثلا
man restore
وهكذا
...
الى
هنا تنتهي هذه السلسلة البسيطة من الشروحات
حول أوامر الباك آب ...
أرجوا
ان تكون قد أعجبتكم وأن تكون محل فائدة
لكم جميعا ...
وأي تعليق
أنا حاضر للرد عليه إن شاء الله
...
أخوكم B!n@ry ...