السلام عليكم ورحمة الله وبركاته



طرق الباك أب في لينوكس ...

أخواني الأعزاء هذا أول موضوع أكتبه في موقعنا كلنا الجديد ... وأحببت أن يكون عن الباك أب Backup أكيد الكثيرين يعرفون مثل هذه الأمور ... لكن لمن ﻻ يعرف كيف يعمل باك آب لملفاته المهمة سيكون هذا الدرس البسيط جدا ...

على بركة الله نبدأ الدرس:
الــ Backup هي أن تأخذ نسخة إحتياطية من ملفاتك المهمة خوفا من التلف. هذا يمكن تعريف بسيط جدا للغاية قد ﻻ يشبع رغبات المحترفين. على العموم ... طرق الباك آب كثيرة وكثيرة جدا ... أيضا يجب قبل أن تأخذ باك آب أن تحدد أين ستقوم بوضع هذا الباك آب ؟؟؟ هل على نفس الجهاز HD ؟ هل على سي دي CD ؟ هل على دي في دي DVD ؟ أم على شريط Tape ؟ أم سترسله الى ريموت سيرفر Remote Server؟ كل هذه الأمور يجب أن تكون في الحسبان قبل أن تأخذ الباك آب أصلا...

الآن ما سأذكره هنا في هذا الدرس هي الأوامر التالية:


نأتي للأمر الأول الي هو 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 ...