Monthly Archives: مارس 2013

رسالة خطأ “GRUB- error: no such partition grub rescue”

السلام عليكم،

بعد تثبيت توزيعة LMDE (إصدار من ليونكس منت يعتمد على دبيان الاختبارية بدلا من أوبنتو) واجهتُ مشكلة عند إقلاع نظام التشغيل إذ تظهر الرسالة التالية:

GRUB- error: no such partition

متبوعة بسطر أوامر grub rescue.  إذا كنتَ تواجه هذه المشكلة فإليك الطريقة التي اعتمدتُها لمعالجتها,

ملحوظة: قبل تنفيذ أي أمر ينبغي قراءة الشرح حتى تقوم بالتغييرات المناسبة لحالتك وتفهم ما تفعل. إذا كنتَ مبتدئا جدا فقد يكون صعبا عليك فهمُ بعض الأمور هنا 🙂

السبب في ظهور الرسالة هو أن الجهاز لم يستطع تحميل Grub الذي هو مدير إقلاع يعمل مباشرة بعد البيوس BIOS ليقوم بعدها بتحميل نظام التشغيل من القرص الصلب. في حالتي أظن السبب في ذلك عائد إلى أني أثناء التنصيب غيرت الإعداد الافتراضي لمكان تثبيت مدير الإقلاع من /dev/sda إلى /dev/sda1 (يبقى هذا مجرد تخمين).

في ما يلي الخطوات التي اتبعتُها.

هنا أفترض أنك تعرف تجزئة القرص Disk partition التي ثبت عليها مدير الإقلاع Grub. بالنسبة لي المسار هو /dev/sda1 أي التجزئة الأولى من القرص الأول.

نبدأ بتعيين المتغير  prefix الذي يحدد مكان تواجد مدير الإقلاع (أقوم هنا باختصار لوظيفة هذا المتغير، الشرح الكامل يستدعي الحديث عن أشياء أخرى تتطلب تدوينة لوحدها). لا تنسَ استبدال x و y بقيمتيهما وهما على التوالي رقم القرص – إذا كان القرص sda فرقمه 0، sdb رقمه 1 وهكذا- وترتيب التجزئة على القرص – sda1 تحمل الترتيب 1، sda2 الترتيب 2 وهكذا-.

set prefix=(hdx,y)/boot/grub

في حالتي التي حدثتكم عنها يكون الأمر

set prefix=(hd0,1)/boot/grub

ملحوظة: قرأتُ إنه إذا كان (hd0,1) هو قرص الإقلاع فإنه يتوجب حذف /boot من الأمر أعلاه بحيث يُصبح الأمر set prefix=(hd0,1)/grub . بالنسبة لي لم يُحدث هذا فارقا.

الخطوة التالية هي تنفيذ الأمر.  insmod يُستخدم لتفعيل إضافات grub rescue (إنقاذ مدير الإقلاع).

insmod (hdx,y)/boot/grub/linux.mod

إذا جرى كل شيء على ما يرام فإن بالإمكان الآن الدخول إلى سطر أوامر Grub الاعتيادي لتنفيذ أوامر الإقلاع. نتابع.

الأوامر الثلاث التالية اختيارية ولكن قد يكون أساسيا تنفيذها (تفعيل بعض الإضافات ل grub rescue)

insmod part_msdos
insmod ext2
insmod gzio

نكمل مع الأوامر التالية

set root=(hdx,y)
linux /vmlinuz root=/dev/sdxy
initrd /initrd.img
boot

حيث (hdx,y) هي التجزئة التي ثبت عليها نظام التشغيل. إذا كنت وضعتَ /boot على قرص مغاير لقرص التثبيت فيجب تغيير المسار root=/dev/sdxy (في السطر الثاني من مجموعة الأوامر أعلاه) لتأخذ ذلك في الاعتبار.

إذا كان كل شيء تم كما يجب فسيقلع نظام تشغيل جهازك الآن وسيتبقى لك أمر أخير تنفذه بعد إقلاع نظام التشغيل وذلك كي لا تتكرر المشكلة (الأمر يقوم بإصلاح العطب وتحديث ملف إعداد مدير الإقلاع).

grub-install /dev/sdx

حيث x هو قرص تثبيت مدير الإقلاع.

رابط مختصر للمشاركة عبر الشبكات الاجتماعية  http://wp.me/p1vJeS-97

للاشتراك في خدمة خلاصات الرسائل: من هنا

مصادر

https://bbs.archlinux.org/viewtopic.php?id=85603

http://karuppuswamy.com/wordpress/2011/09/09/how-to-fix-grub-rescue-prompt-without-live-cd-for-grub2/

http://ubuntuforums.org/showthread.php?t=2100545

الأمر tar لأرشفة، استخراج، ضغط وفك ضغط الملفات على ليونكس

السلام عليكم،

في تدوينة سابقة تناولت الأمر wget وطريقة استخدامه لتنزيل موقع يُتصفح محليا، على نفس النهج أقدم اليوم أمر tar واستخداماته، على أمل أن أتحدث عن أوامر أخرى في تدوينات قادمة بإذن الله.

يُستخدم الأمر tar (اختصار ل tape archiver الترجمة الحرفية: مُؤَرشِف أشرطة) لتجميع -أرشفة- عدة ملفات في ملف واحد أو العكس، استخراج مجموعة من الملفات مؤرشفة في ملف واحد كبير. غالبا ما تضغط الملفات المؤرشفة – وامتدادها tar. – للحصول على ملف جديد بحجم أقل مثلا عن طريق أحد الأمرين gzip (بعد الضغط يكون الملف الناتج يحمل الامتداد tar.gz) أو bzip2 (ملفات مضغوطة بامتداد tar.bz2 ).
اختيار نوعية الضغط – gzip أو bzip2 – يعتمد على متطلباتك. bzip2 يُنتج ملفات بحجم أقل ولكن يستغرق وقتا أطول من gzip الذي يعطي ملفات بحجم أكبر، أي بنسبة ضغط أقل. إذن الاختيار يكون اعتمادا على الأولوية بالنسبة لك، الوقت الذي يستغرقه الضغط أو حجم الملف المضغوط الناتج. في الملفات ذات الحجم المحدود لايكون الفرق واضحا ولكنه يكون جليا في الملفات الكبيرة الحجم.

الخيارات الأساسية للأمر tar

فيما يلي أهم الخيارات المتوفرة للأمر tar مع أمثلة لاستخدامها. كل خيار – كما غالبية الخيارات في أوامر ليونكس – يتوفر بكتابة قصيرة تسبقها شرطة وكتابة طويلة تسبقها شرطتان(تظهر هنا وكأنها شرطة واحدة إلا أنها في الحقيقة شرطتان، أكتب شرطتين في المصدر ولكن عند العرض تظهر شرطة واحدة، لم أفهم السبب). ينبغي الانتباه أيضا إلى الاختلاف بين الأحرف الصغيرة والكبيرة، r- تختلق تماما عن R- .

  • c- (أو create–): إنشاء أرشيف جديد
  • v- (أو verbose–): إظهار التقدم في معالجة الملف
  • f- (أو file–): تحديد اسم الملف المراد معالجته (استخراجه أو تجميعه)

بمجع الخيارات أعلاه نستطيع إنشاء أرشيف جديد عبر تنفيذ الأمر التالي

tar cvf archive_name.tar dirname/

حيث archive_name.tar هو اسم الأرشيف و dirname/ اسم المجلد – الدليل – المراد أرشفته(تجميع ملفاته).

هذا الأمر ينشئ أرشيفا غير مضغوط، لإنشاء أرشيف مضغوط نستخدم أحد الخيارين:

  • j- (أو bzip2–) لضغط أرشيف عن طريق bzip2 أو فك ضغط واستخراج محتويات ملف ضُغط باستخدام هذا البرنامج (الامتداد: tar.bz2)
  • z- (أو gzip–): نفس عمل j- ولكن يستخدم برنامج gzip (الامتداد: tar.gz) بدلا من bzip2

إنشاء أرشيف مضغوط باستخدام bzip2

tar cvjf archive_name.tar.bz2 dirname/

إنشاء أرشيف مضغوط باستخدام gzip

tar cvzf archive_name.tar.gz dirname/

  •   x- (أو extract–): استخراج مكونات الملف المُجمع

يُستخدام الخيار x- كما يلي لاستخراج أرشيف tar(سيكون الناتج مجلدا بنفس اسم الأرشيف مع إزالة امتداد الأرشيف)

tar xvf archive_name.tar

لاستخراج وفك ضغط ملف gzip ننفذ الأمر

tar xvzf archive_name.tar.gz

بالنسبة لأرشيف مضغوط ب bzip2 نضع j مكان z مع أخذ امتداد الملف بالاعتبار:

tar xvjf archive_name.tar.bz2

لاستخراج ملف واحد من الأرشيف نضيف المسار إلى الملف – داخل الأرشيف – للأمر السابق (في بعض التوزيعات يجب أن يكون المسار مسبوقا ب نقطة “.”)


tar xvf archive_name.tar ./file1
tar xvzf archive_name.tar.gz ./file1 (أرشيف مضغوط gzip)
tar xvjf archive_name.tar.bz2 ./file1 (أرشيف مضغوط bzip2)

  • t- (أو list–): سرد قائمة بالملفات الموجودة في الأرشيف دون استخراج مكوناته

أمثلة


tar tvf archive_name.tar
tar tvfz archive_name.tar.gz (أرشيف مضغوط gzip)
tar tvfj archive_name.tar.bz2 (أرشيف مضغوط bzip2)

تتوفر أيضا خاصية wildcards– لسرد الملفات التي ينطبق عليها تعبير نمطي regular expression دون غيرها، مثلا لسرد الملفات ذات الامتداد txt. داخل الأرشيف

tar xvf archive_file.tar –wildcards ‘*.txt’

  • r- (أو append–): إضافة ملف للأرشيف، تعمل فقط مع أرشيف غير مضغوط

مثال إضافة الملف newfile للأرشيف  archive_name.tar

tar rvf archive_name.tar newfile

  • d- (أو compare–) : للتحقق من الفوارق – الحجم، الصلاحيات … – بين ملف موجود في الأرشيف وملف بنفس الاسم يوجد خارجه

مثال:
فلنفرض أن الأرشيف test.tar يحوي ملفين test1 و test2. للتحقق من الفوارق بين الملف test1 وملف آخر يحمل نفس الاسم – خارج الأرشيف ولكن في نفس المجلد الذي يحوي الأرشيف – ننفذ الأمر التالي:


tar -d –file=test.tar ./test1

إذا وُجدت فروق فإنها ستظهر، مثلا بعد الأمر السابق ظهرت النتيجة التالية


./test1: Mod time differs
./test1: Size differs

للدلالة أن تاريخ التغيير -Mod time- والحجم -Size- غير متطابقين.
في حال عدم تعيين ملف من ملفات الأرشيف فإن المقارنة تكون بين كل مكونات الأرشيف والملفات التي تحمل نفس أسمائها.

ملحوظتان:
من المستحسن دائما عند دمج العديد من الخيارات في الأمر tar البدءُ بخيارات الدوال وجعل الخيار f- إن وُجد في الوضعية الأخيرة ( من بين الخيارات التي ذكرتُها c- و x- و d- و r- و t- دوال، يمكن معرفة البقية عن طريق صفحة الدليل عبر الأمر man tar حيثُ تظهر تحت بند Function Letters). أي أن تموضع الخيارات المنصوح به – لأسباب تتعلق بالحفاظ على طريقة عمل الأمر على مختلف التوزيعات – هو خيارات الدوال ثم الخيارات الأخرى وأخيرا الخيار f-.
بشكل افتراضي تنتظر tar مسارات نسبية، عند إعطاء مسار مطلق يظهر الخطأ tar: Removing leading `/’ from member names . هذا السلوك معد لأسباب أمنية، لذا ينصح بالالتزام بمسارات نسبية، وإن كان لابد من استخدام مسارات مطلقة يمكن استخدام الخيار P- .

اشترك في خدمة RSS واحصل على آخر إضافات المدونة.

مصادر

man tar
http://www.cyberciti.biz/faq/tar-extract-linux/
http://www.gnu.org/software/tar/manual/html_section/Advanced-tar.html#SEC65
http://www.thegeekstuff.com/2010/04/unix-tar-command-examples/
http://www.linuxquestions.org/questions/linux-general-1/bin-tar-removing-leading-%60-from-member-names-269508/

مقدمة عن النسخ الاحتياطي

السلام عليكم،
في تدوينة سابقة قدمتُ لكم برنامج photorec لاستعادة الملفات، الطريقة مفيدة وقد تنفع في بعض الأحيان كما بينتُ في التدوينة المُشار إليها. اليوم أقترح عليكم النظر من زاوية أخرى، لماذا الانتظار حتى حصول حادث نفقد إثره الملفات الموجودة على الجهاز – أو بعضها – لنبحث عن طرق استعادتها؟ لماذا لا نستبق هذه الحوادث التي ستحصل عاجلا أو آجلا لسبب أو لآخر؟ فكما يُقال درهم وقاية خير من قنطار علاج.
هذه التدوينة هي مقدمة نظرية عن النسخ الاحتياطي – Backup – على أمل أن تتبعها تدوينات أخرى قريبا إن شاء الله حول البرامج المُستخدمة لهذا الغرض.
أغلب المعلومات الواردة هنا غير مرتبطة بنظام تشغيل معين.

مقدمة

أولا كبداية وقبل البدء في عمل نسخ احتياطي يجدر الإجابة على بعض الأسئلة:

  • هل من المهم بالنسبة لك أن تعمل نسخا احتياطيا لبياناتك؟ إذا كان الإجابة بلا – أي أن الملفات الموجودة على حاسوبك لا تمثل لك أدنى أهمية- فهذه التدوينة ليست على الأرجح ذات قيمة بالنسبة لك!! (أظن هذه النقطة متجاوزة، أليس كذلك ؟ 🙂 )
  • أنت هنا، إذن ملفاتك مهمة! السؤال التالي هو ولكن أية ملفات ؟ كل الملفات الموجودة على القرص الصلب أم فقط بعضها؟ الإجابة على هذا السؤال ستحدد الملفات التي ستدخل في النسخ الاحتياطي.
  • الآن تعرف أي الملفات ستدخل في النسخ الاحتياطي، الخطوة التالية ستكون تحديد الفارق الزمني بين كل عمليتي نسخ احتياطي وطبيعة النسخ(سنتعرض لأنواع النسخ الاحتياطي بعد قليل إن شاء الله).
  • تعرف أن ملفاتك مهمة ويتوجب عمل نُسخ احتياطية منها وحددتَ الفارق الزمني بين كل عمليتين – ما شاء الله عليك – ولكن هل فكرت أين ستضع نسخك الاحتياطية ؟ على قرص خارجي أو مفتاح يو أس بي، أم على إحدى خدمات حفظ الملفات السحابية ؟ فكر في الأمر جيدا.

النسخ الاحتياطي Backup

قبل ذكر أنواع وطرق النسخ الاحتياطي أود التنبيه إلى عدم الخلط بين “النسخ الاحتياطي” Backup system و”تقييد عمليات نظام الملفات” Journaled filesystem (لم أعثر على ترجمة عربية، لذا أعتذر إن كانت الترجمة غير موفقة).

في الحالة الثانية  نحن نهتم بتسجيل كل العمليات التي تُحدث تغييرات على نظام الملفات File system وعند حدوث أي طارئ فإن بالإمكان التراجع والعودة إلى حالة النظام قبل حدوث العيوب الناتجة عن الحادث، فلا علاقة لهذا بملفاتك الشخصية، مثلا يمكن أن نفقد ملفات المستخدم دون أن يؤثر ذلك على جودة وتماسك نظام الملفات. ما نتحدث عنه هنا في هذه التدوينة هو إذن عمل نسخ احتياطية لملفات المستخدم للعودة إليها في حالة فقدانها لأي سبب كان.

أنواع النسخ الاحتياطي

توجد العديد من طرق النسخ الاحتياطي، اختيار الطريقة المناسبة يعتمد على عاملين أساسيين:

  • المدة المطلوبة لاستعادة البيانات، أي أن الأولوية هي تقليل مدة استعادة البيانات Recovery time objective.
  • كمية البيانات المسموح بضياعها. في النسخ الاحتياطي دائما هناك هامش للخسارة، كل ما كان الهامش محدودا كل ما كان الفارق الزمني بين عمليتي نسخ احتياطي قصيرا. إذن الأولوية هنا هي لتحديد نقطة استعادة البيانات – Recovery point objective – هل هي قبل ساعة، اثنتين، يوم ، أسبوع ؟

في الأساس يوجد ثلاث أنواع من النسخ الاحتياطي:

  • النسخ الاحتياطي الكامل Full backup، كل الملفات الموجودة في المصدر المُراد حفظه(قرص، مجلد، …) تدخل في عملية النسخ.
  • النسخ الاحتياطي التزايدي Incremental backup، فقط الملفات التي حدث فيها تغيير منذ آخر عملية نسخ كاملة هي التي يجري عليها النسخ.
  • النسخ الاحتياطي التفاضلي Differential backup، في هذا النوع فقط الملفات التي حدث فيها تغيير منذ آخر عملية نسخ (كامل أو جزئي) تدخل في العملية، مشابه للنوع السابق مع فرق بسيط.

لفهم الفرق بين اﻷنواع الثلاثة نفترض أن أول عملية نسخ كاملة حدثت يوم السبت وأن الفارق الزمني بين كل عمليتي نسخ هو يوم واحد.
في النسخ الكامل، كل ما نقوم به هو إعداد نسخة من المصدر دون النظر في التغييرات، يعني أنه في حالة وجود ملف لم يحدث عليه تغيير منذ يوم السبت فإنه يدخل في عملية النسخ يوم الأحد ويوم الاثنين وهكذا. واضح أن هناك الكثير من إضاعة الوقت والموارد. حسنة هذه الطريقة في النسخ أنه لاستعادة البيانات نأخذ آخر نسخة احتياطية فقط.
في النسخ التزايدي، نجري نسخا احتياطيا كاملا يوم السبت مثلا، يوم الأحد ننسخ فقط الملفات التي تغيرت في آخر يوم(نسخ جزئي)، يوم الاثنين ننسخ الملفات التي جرى عليها تغيير في آخر ثماني وأربعين ساعة (أي اعتمادا على آخر عملية نسخ كاملة). الفرق مع النسخ التفاضلي هو أننا يوم الاثنين سننسخ فقط الملفات التي جرى عليها تغيير لآخر أربع وعشرين ساعة (أي اعتمادا على آخر عملية نسخ سواءٌ كانت كاملة أم جزئية). إذا ما أردنا استعادة الملفات، فإننا – في النسخ التزايدي – نستعيد آخر نسخة كاملة (نسخة يوم السبت) ونضيف إليها آخر نسخة جزئية (يوم الاثنين مثلا) أما في النسخ التفاضلي فلاستعادة الملفات فأننا نستعيد آخر نسخة كاملة(نسخة يوم السبت) ونضيف إليها كل النسخ الجزئية الموالية (يوم الأحد ويوم الاثنين).

طرق النسخ الاحتياطي

توجد ثلاثة طرق لعمل نسخ احتياطي:

  •   النسخ اليدوي، وهو الأقل موثوقية والأكثر شيوعا والأبسط،حيث يستدعي تدخل المستخدم.
  •   النسخ التلقائي وينقسم إلى نوعين:
  1.  نسخ محلي حيث تكون وجهة النسخ موصولة بالجهاز(قرص خارجي مثلا). هذه الطريقة مناسبة للمؤسسات الصغيرة والمستخدمين المتقدمين نسبيا.
  2. نسخ خارجي(عن بعد) وفي هذه الحالة تنقل النسخ الاحتياطية تلقائيا عبر الشبكة إلى وجهات آمنة، وقد تكون متعددة لزيادة الأمان.

تاريخ التعديل، الوصول والتغيير (modification time و access time و change time على التوالي)

في نظام تشغيل ليونكس نميز بين عدة تواريخ بخصوص الملفات:

  •   تاريخ التعديل- mtime: تتغير هذه القيمة عند تغيير محتوى الملف.
  •   تاريخ الوصول- atime: تتغير هذه القيمة عند فتح الملف، سواء عن طريق مستخدم عادي أو سكريبت أو أداة نسخ احتياطي.
  • تاريخ التغيير- ctime: تتبدل هذه القيمة عند تغيير أي خاصية من خواص الملف (الملكية أو الأذون مثلا).

الآن ما علاقة هذه التواريخ بالنسخ الاحتياطي ؟
في النسخ التزايدي والتفاضلي تعتمد أدوات النسخ الاحتياطي أساسا على تاريخ التغيير لتقرير هل تعمل نسخة من الملف أم لا. لماذا تاريخ التغيير وليس التعديل؟
عند تعديل محتوى ملف فإن كلا من التاريخين يتبدل أما إذا بدلت الملكية (مثلا) دون تعديل في المحتوى فإن تاريخ التعديل وحده يتبدل، لذا يُعتمد عليه حتى تكون نسخة الملف الاحتياطية مماثلة في خصائصها للنسخة الأصلية.
بالنسبة لتاريخ الوصول فإنه أهميته تتجلى عند تقييد عمليات نظام الملفات Journaled filesystem.

استعادة الملفات

الهدف من كل عمليات النسخ الاحتياطي هو استعادة الملفات عند الحاجة. لذا يتوجب التأكد من أن الاستعادة تتم بشكل جيد. خطأ فادح أن نكتفي بوضع سياسة للنسخ الاحتياطي دون اختبار الاستعادة. مثلا عن طريق اختبار:

  • استعادة ملفات منفردة
  • استعادة نسخة قديمة من ملف
  • استعادة مجلد كامل
  • استعادة قرص كامل والمقارنة مع تدقيق المجموع.

بهذا أكون قد وصلتُ وإياكم لنهاية هذه التدوينة.
وللحديث عن النسخ الاحتياطي بقية إن شاء الله.

اشترك في خدمة RSS واحصل على آخر إضافات المدونة

مصادر

https://help.ubuntu.com/community/BackupYourSystem
http://www.computerweekly.com/news/1347703/Incremental-vs-differential-backup-A-comparison
http://askubuntu.com/questions/154806/journaling-backup