Category Archives: أوامر لينكس

أمر locate للبحث عن الملفات على ليونكس

السلام عليكم

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

يُستخدم أمر locate بالطريقة التالية

locate [options] name(s)

حيث

  • options خيارات البحث
  • name(s) اسم أو أسماء الملفات المُراد البحث عنها. (معيار البحث)

في حالة عدم تحديد أي خيارات، فإن السلوك الافتراضي ل locate هو البحث في كل الملفات التي لدى المستخدم المُنفِّذ للأمر صلاحياتُ الوصول إليها، ثم إظهار اسم المسار المطلق (المسار الكامل) Absolute pathname للملفات المُدرجة في نتائج البحث.

مثال

locate "image.jpg"

كما يظهر في الصورة أدناه، فإن نتيجة البحث تعطي المسار الكامل لكل الملفات التي تحوي أسماءها image.jpg .
لزيادة إمكانيات البحث يمكن استخدام أحرف البدل wildcards أو التعبيرات النمطية regular expressions (). أحرف البدل هي أحرف(رموز) تُتخدم لتحل محل حرف مجموعة من الأحرف. من بين هذه الرموز علامة * التي تُستخدم لاستبدال مجموعة من الأحرف مهما كان عددها. مثلا للبحث عن كل الملفات ذات الامتداد png ننفذ الأمر التالي

locate "*.png"

تُمكن قراءة هذا الأمر  كما يلي: ابحث عن الملفات التي يتكون اسمها من عدد من الأحرف متبوعا بنقطة ثم الأحرف png.

خيار n-

في حال كنت ترغب بتعيين حد أقصى لنتائج الأمر locate فبإمكانك ذلك عبر الخيار n- متبوعا بعدد النتائج كما يلي

locate "*.png" -n 5

locate "*.png" -n 20

في الأمر الأول ستظهر فقط 5 ملفات على الأكثر. في الأمر الثاني زدنا الحد الأقصى إلى 20 ملفا.

خيار i-

الإعداد الافتراضي لأمر locate هو التفريق بين الأحرف الصغيرة والأحرف الكبيرة كما هو الحال في كل نظام لينكس. لتجاهل هذا الإعداد يُستعمل الخيار i- مثلا في الأمر

locate -i "*.Png"

ستظهر ملفات بامتداد png رغم أننا حددنا P كبيرة. في حال استخدام الأمر السابق دون i- فإن الملفات ذات الامتدا Png – إن وجدت – هي فقط ما سيظهر في النتائج.

خيار q-

يُستعمل هذا الخيار لحذف رسائل الخطأ من نتائج الأمر locate. مثلا حتى لا تظهر رسائل تقول إنه ليس لديك إذن الوصول لملف ما (تظهر هذه الرسائل permission dnied في حالة وافقَ ملف ما معيار البحث دون أن يكون لدى المستخدم صلاحيات الوصول إليه، لأنه ليس root على سبيل المثال).

locate "image.jpg" -q

خيار b-

عند تنفيذ locate للبحث عن اسم ملف (وليكن image.jpg ) فإن المطابقة لا تكون تامة. تظهر مثلا ملفات بأسماء مثل no_image.jpg . للبحث مع مطابقة معيار البحث نستخم خيار b- مع علامة  \ قبل اسم الملف كما يلي

locate -b "\image.jpg"

تجربة أخيرة

إنشاء ملف ثم البحث عنه

لننشئ ملفا

touch test.it

فلنبحث عنه

locate -b "\test.it"

النتيجة ؟؟ .. صفر !!

الآن نفَّذ الأمر التالي بصلاحيات root

sudo updatedb

ثم أعد البحث

locate -b "\test.it"

وجدتَه؟ أظن الجواب نعم.

تحديث بيانات locate

تحديث بيانات locate

ما هذا ؟

عند طلب الأمر locate فإنه يبحث في قاعدة بيانات تحوي جميع أسماء الملفات الموجودة في النظام. استخدام قاعدة البيانات هذه يوفر الكثير من الوقت عند البحث. الوجه الآخر هو أن قاعدة البيانات هذه يجب تحديثها من حين لآخر وهو ما يقوم به النظام بشكل دوري (يوميا في الغالب) ثم إن النتائج التي نحصل عليها عند استخدام locate قد تحيل لملف لم يعود موجودا (أي أن الملف حُذف بعد التحديث الأخير لقاعدة بيانات locate). مهمة الأمر updatedb هي تحديث قاعدة بيانات locate وهو ما يفسر أننا لم نحصل على الملف “test.it” عند البحث في المرة الأولى خلال التجربة السابقة ثم ظهر في النتائج بعد تحديث قاعدة البيانات وإعادة تنفيذ الأمر.

على توزيعة أوبنتو مسار قاعدة بيانات locate هو

/var/lib/mlocate/mlocate.db

وهو ما يمكن معرفته عبر الأمر التالي

locate -b "*locate.db"

للحصول على آخر الإضافات مباشرة بعد نشرها يُرجى الاشتراك في تغذيات RSS.

أو على تطبيق فيدلي عبر الضغط على الزر أدناه

تابعنا على تطبيق فيدلي

للمزيد

http://www.linfo.org/locate.html
http://www.codecoffee.com/tipsforlinux/articles/20.html

Advertisements

الأمر chattr لحماية الملفات على لينكس ومنع التعديل عليها

السلام عليكم

تدوينة سريعة حول حماية الملفات على ليونكس من الحذف أو التعديل غير المرغوب.

 على أنظمة جنو/لينكس يُمكِّن الأمر chattr من حماية ملف من التعديل أو الحذف مع عدة خيارات للتخصيص.
ملحوظة:  الأمر يعمل مع نظم ملفات ext2, ext3 و ext4 فقط. وهي نظم الملفات الأكثر انتشارا على لينكس.

مبدأ العمل

يُنفذ الأمر كالتالي (يتطلب صلاحيات root)

sudo chattr +X file

لتفعيل الخيار X على الملف. توجد عدة خيارات أهمها

  • الخيار i لمنع أي تعديل (الكتابة ، إعادة التسمية، الحذف أو حتى عمل وصلة للملف) على الملف.
  • الخيار a للسماح بإضافة المحتوى فقط. بإمكانك كتابة أسطر جديدة ولكنك لا تستطيع تغيير الأسطر الموجودة سلفا أو حذف الملف.
  • الخيارs لتفعيل الحذف الآمن. عند حذف الملف فإنه يُحذف بشكل تام.  (راجع  استعادة الملفات مع Photorec و حذف ملف بشكل تام وآمن على لينكس  لتفصيل أكثر عن الحذف الآمن).

لتعطيل أحد الخيارات (مثلا نزع الخيار a) على الملف نستخدم علامة ناقص (-) مكان الزائد(+) وذلك على النحو التالي

sudo chattr -X file

يمكن أيضا إضافة R- لتطبيق الأمر على مجلد بكل محتوياته.

  • عند تفعيل أحد الخيارات

sudo chattr +X -R file

  • عند تعطيل مفعولها

sudo chattr +X -R file

أمثلة

  • حماية ملف

sudo chattr +i file

  • نزع الحماية عن ملف

sudo chattr -i file

  • حماية مجلد ( folder تمثل مسار الملف المُراد تطبيق الأمر عليه)


sudo chattr +i -R folder

  • نزع الحماية عن المجلد


sudo chattr -i -R folder

ملحوظة: لسرد خيارات الحماية (i أو a أو s وغيرها) المُطبقة على ملف نستخدم أمرlsattr على النحو التالي


lsattr file

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

تدوينات ذات علاقة

حذف ملف بشكل تام وآمن على لينكس
حذف بيانات Metadata من الصور على أوبنتو
استعادة الملفات المحذوفة باستخدام برنامج PhotoRec

رابط مختصر للمشاركة مع أصدقائك عبر شبكات التواصل الاجتماعي http://wp.me/p1vJeS-gb

للحصول على آخر الإضافات مباشرة بعد نشرها يُرجى الاشتراك في تغذيات RSS.

مصادر

http://www.unixmen.com/secure-and-prevent-files-from-accidental-deletion-with-chattr/
http://memo-linux.com/comment-securiser-un-fichier-ou-un-repertoire-dune-suppression-accidentelle-sous-linux/
http://www.mcmcse.com/linux/filesystem_attributes.shtml

حذف ملف بشكل تام وآمن على لينكس

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

استكمالا لذلك الحديث أقدم بين يديكم اليوم طريقتين لحذف ملف بشكل نهائي من على القرص الصلب وبذلك يكون من شبه المستحيل استعادته.

تحديث بتاريخ 10 سبتمبر لإضافة طريقة  التعامل مع المجلدات عبر الأمر shred

الطريقة الأولى تعتمد على إضافة لمدير الملفات Nautilus. أما الثانية فتعتمد على حزمة تأتي بشكل افتراضي مع أغلب توزيعات لينكس. مبدأ العمل في الحالتين هو كتابة معطيات عشوائية مكان الملف المُراد حذفه.

حذف الملفات مع إضافة nautilus-wipe

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

الأيمن على اسم الملف أو المجلد. للتثبيت على أوبنتو ننفذ الأمر التالي

sudo apt-get install nautilus-wipe

بعد التثبيت سيظهر الخياران التاليان في القائمة الظرفية عند النقر بالزر الأيمن على اسم ملف أو مجلد.

nautilus-wipe

nautilus-wipe

  • الخيار الأول wipe والذي يحذف بشكل آمن الملفات المُحددة. يمكن التحكم في عدد مرات إعادة الكتابة عبر الخيار Number of passes. الإعداد الافتراضي هو مرتان. وهو إعداد كاف بنظري فالمبالغة في مرات إعادة الكتابة قد تضر بالقرص الصلب على المدى الطويل.

    تأكيد الحذف وخيارات wipe

    تأكيد الحذف وخيارات wipe

  • الخيار الثاني wipe available disk space يسمح بحذف الملفات التي سبق محوها بطريقة غير آمنة من على تجزئة أو قرص صلب. هذه العملية قد تأخذ بعض الوقت.

حذف الملفات بأداة shred عبر سطر الأوامر

نستخدم أمر shred لهذا الغرض ويعمل بنفس مبدأ عمل الإضافة السابقة وذلك بالشكل التالي

shred -n 2 -z -u file

حيثُ

  • الخيار n- يُمكن من تحديد عدد مرات إعادة الكتابة. (2 في مثالنا هذا). إذا لم يحدد هذا الخيار فإن الأداة ستعيد الكتابة 3 مرات (الإعداد الافتراضي)
  • الخيار z- لكتابة أصفار مكان بيانات الملفات
  • الخيار u- لحذف الملف
  • file مسار الملف المراد حذفه

ما تقوم به shred هنا هو كتابة أصفار مكان بيانات الملف ثم حذفه (وهذا هو دور الخيار u-). في حالة حاول أحدهم استعادة الملف فإنه إن نجح سيحصل على ملف مليئ بالأصفار فقط.

يمكن إجراء التجربة التالية لفهم آلية العمل. أنشئ ملفا وليكن اسمه test.txt واكتب فيه شيئا ما للتجربة ثم أغلقه واحفظه. افتح الطرفية ثم تنقل إلى مسار الملف test.txt ونفذ الأمر

shred -n 2 -z test.txt

لاحظ أني لم أضف خيار u- . جرب فتح الملف مرة أخرى بمحرر نصوص. جرب الأمر مرة أخرى ولكن بإضافة خيار u- ثم ابحث عن الملف، لن تجدَه 🙂 .

حذف المجلدات بواسطة shred

الأمر shred لا يتعامل مع المجلدات،
لحذف مجلد يمكن تنفيذ الطريقة التالية، من خطوتين.
للشرح سأفترض وجود مجلد testA بداخله ملف testA1 ومجلد آخر testB وبداخل المجلد الأخير يوجد ملفان testB1 و testB2


testA
-- testA1
-- testB
---- testB1
---- testB2

نريد حذف testA بكل محتوياته بشكل آمن.

  • الخطوة الأولى حذف جميع الملفات (تبقى فقط المجلدات)

نفتح المجلد testA ثم ننفذ الأمر التالي


find -type f -execdir shred -n 2 -z -u '{}' \;

الذي سيبحث عن جميع الملفات الموجودة في المجلد الحالي، أي testA في مثالنا، ومجلداته الفرعية. ثم يطبق الأمر shred -n 2 -z -u على كل ملف من تلك الملفات.

يمكن سرد محتويات المجلد testA أو testB وستلاحظ أنه لا توجد بها ملفات.

  • الخطوة الثانية ستكون حذف المجلد testA ومجلداته الفرعية عبر الأمر (تأكد من الخروج من المجلد testA قبل تنفيذ الأمر)

rm -rf /pat/to/testA

حيث /pat/to/testA هو المسار نحو المجلد testA .

إلى الملتقى.

رابط مختصر للمشاركة مع أصدقائك عبر شبكات التواصل الاجتماعي http://wp.me/p1vJeS-fV

للحصول على آخر الإضافات مباشرة بعد نشرها يُرجى الاشتراك في تغذيات RSS.

مصادر

http://www.crowd42.info/supprimer-fichier-definitivement-ordinateur-debian-gnulinux-ubuntu

http://www.solver.io/wp/2012/11/06/linux-how-to-recursively-shred-a-directory/

استعمال الأمرين mount و umount على ليونكس

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

لكي يكون ممكنا استعمالُ وحدة تخزين (قرص صلب، مفتاح يو أس بي، قرص سي دي.. إلخ) فإنه يجب أولا تهيئتها (فرمتتها بلغة المنتديات). هذا يعني أنه يجب أن تخضع لنظام ملفات معين يحدد الميزات الممكنة للمجلدات والملفات على وحدة التخزين هذه، مثلا الاسم، هرمية الملفات، الحجم الأقصى للملف أو المجلد، الأذون وأمور أخرى كثيرة. يأتي كل نظام ملفات بآلية تختلف كثيرا أو قليلا عن آلية بقية نظم الملفات وتحاول الاستجابة لمتطلبات محددة. تختلف نظم الملفات من نظام تشغيل لآخر كما تختلف في توافقها فيما بينها. كل نظام تشغيل يدعم نظم ملفات معروفة. على وندوز نجد أنظمة ملفات FAT16، FAT32، FAT و NTFS. على ماكنتوش نجد نظام HFS للملفات. بالنسبة لليونكس فإنه يتوفر على أنظمة ملفات عديدة نذكر منها Ext2 و Ext4 بالإضافة لدعمه لنظم ملفات وندوز التي ذكرت قبل قليل(إذا كانت لديك تجزئة بنظام ملفات ext4 وأخرى ب ntfs فإن ليونكس سيتعرف على التجزئتين بينما لن يتعرف وندوز إلا على تجزئة NTFS).

لكي يتمكن ليونكس من الوصول إلى نظام ملفات – وبالتالي وحدة التخزين المهيئة حسبه – فإنه يجب تركيبه (بالانجليزية Mounting). التركيب يعني ببساطة إتاحة إمكانية الوصول لنظام الملفات انطلاقا من نقطة معينة في شجرة ملفات ليونكس. عند تركيب نظام ملفات فليس مهما ماهية المُركب هل هو تجزئة من القرص الصلب أم قرص مدمج أم غيره (لا تنسَ أن كل شيء في ليونكس ملف، المجلد ملف، قرص سي دي ملف.. كل شيء). كل ما تحتاجه لتركيب وحدة تخزين هو اسم الوحدة والمجلد الذي تود تركيبها عليه. القدرة على تركيب وحدة التخزين في أي نقطة من نظام الملفات أمر في غاية الأهمية، افرض مثلا أن لديك موقعا تحفظ ملفاته داخل المجلد /usr/local/site وأن المساحة التخزينية لم تعد كافية. في هذه الحالة يمكنك إضافة قرص جديد بمساحة أكبر وتركيبه في النقطة /usr/local ونقل ملفات الموقع إليه دون تغيير مسار الوصول إلى الملف أو حذف أي من محتوياته.

للتعامل مع تركيب الملفات يتوفر ليونكس على الأمرين mount و umonut.

سرد لائحة نظم الملفات الموجودة

للحصول على قائمة بكافة نظم الملفات المركبة على شجرة ملفات ليونكس ننفذ ببساطة الأمر mount. ستظهر قائمة مكونة من عدة أسطر، كل سطر من الشكل

device on directory type FS (options)

حيث device اسم وحدة التخزين، directory المجلد الذي رُكب فيه نظام الملفات، و FS نظام الملفات.
للحصول على نفس اللائحة ولكن بترتيب شجري يمكن استخدام أداة findmnt (متوفرة بشكل افتراضي على أوبنتو وردهات ابتداء من الإصدار 6.1 وربما الإصدارات الأخيرة من فيدورا ) عبر الأمر findmnt.

أمر findmnt

سرد لائحة بوحدات التخزين عير الامر findmnt

من الخيارات التي يوفرها الأمر mount الخيار t- الذي يمكن من سرد نوع معين من نظم الملفات. يستخدم هذا الخيار بالطريقة التالية (قد تحتاج لصلاحيات root)

mount -t type

حيث type نوع نظام الملفات. الأمر التالي يعطي لائحة بوحدات التخزين المركبة التي تستخدم نظام ملفات ext2

mount -t ext2

نفس الخيار يتوفر لدى أداة findmnt ويستخدم بنفس الطريقة.

تركيب نظام ملفات Mounting

 في أغلب الحالات يتعرف الأمرmount على نظام الملفات تلقائيا، ولكن في حالات أخرى يتوجب تعيين نوع نظام الملفات يدويا عبر الخيار t-. لتركيب نظام ملفات في نقطة معينة نستخدم الأمر mount بالشكل التالي

mount [option…] device directory

حيث option الخيار و device مسار وحدة التخزين (مثلا /dev/sda3) أو معرف  universally unique identifier (UUID) أما directory فهو المجلد المراد تركيب نظام الملفات عليه.
في ليونكس توجد ملفات خاصة تسمى “Device Files” تشكل واجهة بين النظام وعتاد التخزين. مسارات هذه الملفات معروفة بالنسبة لكل نوع من أجهزة التخزين. مثلا /dev/sdXY هو واجهة الأقراص الصلبة من نوع SATA (أغلبية الأقراص الحديثة) حيث X يمثل الترتيب الذي وُصلت به هذه الأقراص على اللوحة الأم (a للقرص الأول، b للقرص الثاني ..) و Y رقم التجزئة Partition على القرص الصلب. مثلا /dev/sda1 هي التجزئة الثانية من القرص الصلب الأول. بالنسبة للتجزئة الأولى فإنها تحمل الرقم 0 أي أن المسار إليها هو  /dev/sda0.

بالعودة للأمر mount فإن هذه المسارات تُمرر للأمر ليعمل عليها. مثلا نريد أن تكون محتويات التجزئة الثانية من قرص التخزين الأول متاحة على المجلد /home/zeine77/test. نبدأ بإنشاء المجلد

mkdir /home/zeine77/test

ثم ننفذ الأمر

mount -t ext2 /dev/sda1 /home/zeine77/test

إذا فتحت مدير الملفات – نوتيليس مثلا – فستلاحظ ظهور ملف باسم test ضمن اللائحة على اليسار وأمامه علامة التركيب وبإمكانك فتحه لرؤية محتوياته

تركيب وحدة تخزين

تركيب وحدة تخزين

عند استخدام الأمر mount بدون ذكر جميع المعلومات اللازمة (اسم وحدة التخزين، مجلد التركيب أو نوعية نظام الملفات) فإنه يقرأ محتويات ملف الإعداد /etc/fstab لمعرفة ما إذا كان نظام الملفات – أو المجلد – المُمرر للأمر موجودا في الملف إذ أن هذا الأخير يحوي لائحة بنظم الملفات والمجلدات التي ينبغي تركيبها فيها ونوعية نظام الملفات. إذا كان نظام الملفات موجودا فإنه سيركبه في المجلد المحدد. (لاحظتُ أن التجزئة التي تحوي ملفات نظام التشغيل هي فقط ما يظهر بشكل افتراضي على أوبنتو في الملف /etc/fstab ).
يمكن أيضا تخصيص عملية التركيب بتنفيذ الأمر

mount -o options device directory

حيث options خيارات لتخصيص التركيب توضع جنبا لجنب مفصولة بفاصلة “,”(ينبغي عدم ترك مسافات بين الخيارات، فقط فاصلة). الخيارات المتاحة عديدة أهمها

  • noexec منع تنفيذ ملفات binary على نظام الملفات المركب (execution)
  • nouser منع المستخدمين العاديين (كل المستخدمين عدى root) من تركيب وفصل (unmounting) نظام الملفات
  • remount إعادة تركيب نظام الملفات في حالة كونه مركبا
  • ro نظام الملفات متاح فقط للقراءة
  • rw نظام الملفات متاح فقط للقراءة والكتابة
  • user السماح للمستخدمين العاديين بتركيب وفصل نظام الملفات

مثال للاستخدام (على فرض وجود مجلد باسم cdrom في المجلد media/)

mount -o ro,nouser ubuntu-12.04.2-desktop-amd64.iso /media/cdrom

فصل نظام ملفات Unmounting

لفصل نظام ملفات سبق تركيبُه نستخدم الأمر umount (وليس unmount كما قد تحزر) وذلك بإحدى الطريقتين (قد تحتاج لصلاحيات root)

umount directory
umount device

حيث directory مسار الملف الذي رُكب فيه نظام الملفات و device اسم وحدة التخزين.
مثال

umount /media/cdrom

ملحوظة: يجب أن يكون نظام الملفات غير مُستخدَم وإلا ستظهر رسالة خطأ. على سبيل المثال لن يكون بإمكانك فصل نظام الملفات إذا كنت تحرر مستندا من وحدة التخزين المُراد فصلها ببرنامج ليبرأوفيس.

أهم أنواع نظم الملفات

النوع – Type الوصف
ext2 نظام ملفات ext2 يعمل على منصات جنو/ليونكس ويونكس
ext3 إصدار موال من نظام ملفات ext2
ext4 أحدث إصدار من نظام الملفات ext
iso9660 نظام ملفات مستخدم أساسا للأقراص المدمجة (سي دي)
jfs نظام ملفات من إنشاء شركة IBM
nfs مُوجه للوصول وتشارك الملفات عبر الشبكة
nfs4 إصدار حديث من النظام السابق
ntfs يُستخدم في أنظمة تشغيل وندوز، أغلب أنطمة ليونكس تدعم هذا النظام
udf نظام ملفات مُستخدم في وحدات التخزين البصرية، دي في دي مثلا
vfat مُستخدم أساسا على أنظمة وندوز وبعض أجهزة التخزين مثل الأقراص المرنة وأجهزة فلاش

مصادر

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/chap-Using_the_mount_Command.html

http://www.bleepingcomputer.com/tutorials/introduction-to-mounting-filesystems-in-linux/

http://www.bleepingcomputer.com/tutorials/introduction-to-mounting-filesystems-in-linux/

http://wiki.arabeyes.org/Technical_Dictionary

الأمر 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/