اذهب إلى المحتوى

تعلم فك ضغط ملفات tar.gz باستعمال الأمر tar في لينكس


Hassan Hedr

سنتعلم في هذا المقال كيف نقوم بضغط الملفات وإنشاءها واستخراجها من ملفات tar المضغوطة. إذا كنت أحد مستخدمي البرامج مفتوحة المصدر، فغالبًا ما صادفت ملفات من نوع tar. يعود تاريخ انشاء أداة الأرشفة مفتوحة المصدر tar إلى العام 1979، لذا فهي واسعة الانتشار في عالم POSIX. هدفها بسيط: أخذ ملف أو مجموعة من الملفات وتغليفها في ملف واحد، يدعى أرشيف أشرطة التسجيل tar archive. وقد سمي بذلك لأنه عندما تم اختراع tar كان يستخدم لتخزين البيانات على أشرطة التسجيل.

من يتعرف على صيغة tar حديثا فسوف يقوم بتشبيهها بملفات zip.، لكن على عكسها فعليا ملفات tar ليست مضغوطة. صيغة tar تقوم فقط بإنشاء حاوية للملفات، لكن يمكننا ضغط الملفات باستخدام أدوات أخرى. طرق الضغط الشائعة التي تطبق على ملف tar. هي Gzip وbzip2، وxz. هذا هو سبب ندرة مصادفتك لملف بصيغة tar. فقط وعادة ما تصادف الملفات بالصيغ الشائعة tar.gz. أو tgz.

تثبيت الأمر tar

سيكون الأمر tar على لينكس و BSD و إيلوموس و وحتى ماك مثبتًا لديك مسبقًا.

على ويندوز أسهل طريقة للتعامل مع الملفات من النوع tar. هي عبر تنصيب الأداة ‎7-Zip المفتوحة المصدر برخصة LGPL. اسم الأداة يوحي أنها أداة للتعامل مع الصيغة zip، لكن يمكنها التعامل أيضا مع ملفات الأرشيف من النوع tar، وتوفر أيضا واجهة أوامر لموجه الأوامر cmd.

إذا كنت تريد أداة للتعامل مع tar فقط على ويندوز، فيمكنك تثبيت جنو tar عبر WSL على ويندوز 10 وما فوق عبر Cygwin.

إنشاء ملف أرشيف tarball

ملفات الأرشيف من النوع tar عادة ما يشار إليها بالاسم tarball، وذلك فقط اختصارًا لاسمها باللغة الإنجليزية، حيث كلمة tarball أقصر من كتابة tar archive، والتي تعني أرشيف tar.

إنشاء ملف tar باستخدام واجهة المستخدم المرئية GUI، يحتاج لثلاث خطوات على الأكثر. سنستخدم في مثالنا هذا KDE، العملية ستكون مشابهة على كل من جنوم و XFCE:

  1. أنشئ مجلدًا.
  2. ضع ملفاتك في ذلك المجلد.
  3. اضغط بالزر الأيمن للفأرة على المجلد واختر "ضغط".

compress.jpg

العملية مشابهة أيضًا في الصَدفَة، لجمع عدة ملفات في ملف أرشيف واحد، ضع ملفاتك في مجلد ثم نفذ الأمر tar، ومرر له اسم ملف الأرشيف الذي تريد إنشاءه ثم المجلد الذي تريد أرشفته:

$ tar --create --verbose --file archive.tar myfiles

تتميز الأداة tar عن باقي الأوامر عادةً أنها لا تحتاج لوجود إشارة السالب (-) قبل اختصارات الخيارات الممررة لها، مما يتيح للمستخدم اختصار عدة أوامر مقعدة كالتالي:

$ tar cvf archive.tar myfiles

يمكنك أيضا عدم وضع الملفات في مجلد قبل أرشفتها، لكنها تُعَد عادةً سيئة، لأنه لا أحد تقريبًا يرغب أن يجد خمسين ملفًا فجأة مبعثرين على سطح المكتب لديه بعد فك ضغط ذلك الأرشيف. هذا النوع من ملفات الأرشيف يدعى عادة قنبلة tar أو tarbomb -شبهوا الأمر بعملية رمي قنبلة- وليس ذلك دائما بمعنى سلبي. قنابل tar مفيدة لعمليات الترقيع patching وأدوات تنصيب البرامج؛ فالأمر يعتمد على معرفتك متى تستطيع استخدام تلك الطريقة من عدمه.

ضغط ملف الأرشيف

عند إنشاء ملف tar فلن تكون الملفات داخله مضغوطة، فهو فقط سيجعل تلك الملفات كتلة واحدة يكون من السهل نقلها معًا. يمكننا لضغط ذلك الملف استدعاء Gzip أو bzip:

$ tar --create --bzip2 --file foo.tar.bz2 myfiles  
$ tar --create --gzip --file foo.tar.gz myfiles

من أشيع اللواحق لملفات الأرشيف tar المضغوطة عبر Gzip هي tar.gz. و tgz.، و للملفات المضغوطة عبر bzip هي tar.bz2. و tbz..

استخراج الملفات من الأرشيف

إذا كان قد وصل إليك ملف tar من صديقك أو من مشروع برمجي ما، يمكنك استخراج محتوياته إما عبر الواجهة المرئية أو من خلال الصدفة. في الواجهة المرئية قم بالضغط بالزر الأيمن للفأرة على ملف الأرشيف واختر "استخراج".

extract_0.jpg

مدير ملفات دولفين Dolphin يوفر ميزة التعرف التلقائي على الملفات المستخرجة من الأرشيف اذا كانت محتواة في مجلد أو يجب إنشاء مجلد حاوي لها. تفيد هذه الميزة في تفادي مشكلة قنابل tar، حيث سينشئ مجلدًا جديدًا سيحوي بداخله كل الملفات المستخرجة.

عبر الصدفة، أمر استخراج الملفات من ملف الأرشيف بديهي للغاية:

$ tar --extract --file archive.tar.gz

يمكنك اختصار الخيارات للأمر السابق كالتالي:

$ tar xf archive.tar.gz

يمكنك أيضا استخدام أداة tar لفك ضغط ملفات zip.:

$ tar --extract --file archive.zip

أوامر tar متقدمة

أدوات tar قوية وعملية جدًا فحالما تعتاد على المبادئ الأساسية لها، ستبني عليها لاكتشاف مزايا أخرى.

إضافة ملف أو مجلد إلى ملف tar

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

معظم أنظمة سطح مكتب لينكس و BSD تأتي مع واجهة مرئية للتعامل مع ملفات الأرشيف، يمكنك استخدامها والتعامل مع ملف الأرشيف وكأنه مجلد عادي آخر، يمكنك رؤية محتوياته، استخراج ملفات معينة منه، إضافة ملفات جديدة إليه، وحتى استعراض الملفات النصية والصور داخله.

ark.jpg

أداة الأرشفة آرك Ark

عبر الصدفة، يمكنك إضافة ملف أو مجلد إلى ملف أرشيف tar طالما أنه غير مضغوط بعد، إذا كان ملف الأرشيف مضغوطًا يجب عليك أولًا فك ضغطه فقط وليس استخراج ملفات الأرشيف داخله.

على سبيل المثال، إذا كان ملف الأرشيف مضغوطًا بواسطة Gzip:

$ gunzip archive.tar.gz
$ ls
archive.tar

الآن بعدما أصبح لديك ملف tar غير مضغوط، يمكنك إضافة الملف أو المجلد الجديد إليه:

$ tar --append --file archive.tar foo.txt
$ tar --append --file archive.tar bar/

اختصارًا يمكن تنفيذ الأمر السابق كالتالي:

$ tar rf archive.tar foo.txt
$ tar rf archive.tar bar/

مشاهدة قائمة بالملفات داخل ملف tar

لمشاهدة الملفات داخل ملف أرشيف، سواء كان مضغوطًا أم لا، يمكنك استخدام الخيار list--:

$ tar --list --file archive.tar.gz  
myfiles/
myfiles/one
myfiles/two
myfiles/three
bar/
bar/four
foo.txt

النسخة المختصرة تكون كالتالي

$ tar tf archive.tar.gz

استخراج ملف واحد أو عدة ملفات أو مجلدات من أرشيف tar

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

$ tar xvf archive.tar.gz bar/four
bar/four

الآن تم استخراج الملف "four" إلى مجلد جديد يدعى "bar". إذا كان المجلد "bar" موجود مسبقًا، فسيتم وضع الملف "four" داخله. ولاستخراج عدة ملفات أو مجلدات سننفذ نفس الأمر السابق تقريبًا:

$ tar xvf archive.tar.gz myfiles/one bar/four
myfiles/one
bar/four

يمكنك أيضا استخدام المحارف البديلة wildcards:

$ tar xvf archive.tar.gz --wildcards '*.txt'
foo.txt

استخراج الملفات من ملف tar إلى مجلد

ذكرنا سابقًا أن بعض ملفات tar هي قنابل tar تترك خلفها بعد استخراج محتوياتها الكثير من الملفات المبعثرة. إذا نظرت لمحتويات ملف tar ولاحظت أن الملفات داخله غير محتواة داخل مجلد، يمكنك تحديد مجلد الوجهة ليتم استخراجها مباشرة إليه:

$ tar --list --file archive.tar.gz
foo
bar
baz
$ mkdir newfiles
$ tar xvf archive.tar.gz -C newfiles

الأمر السابق يستخرج محتويات الملف "archive.tar.gs" إلى المجلد الجديد newfiles بشكل مرتب.

خيار مجلد الوجهة له فوائد أخرى غير ترتيب الملفات المستخرجة في مجلد واحد، مثلًا لتوزيع الملفات لنسخها في بنية مجلدات موجودة مسبقًا. إذا كنت تعمل على تطوير موقع إلكتروني وتريد إرسال ملفات جديدة لصاحب الموقع، يمكنك القيام بذلك بعدة طرق. الطريقة البديهية هي إرفاق تلك الملفات داخل بريد إلكتروني وإرسالها له مع شرح عن مكان نسخ كل من تلك الملفات: "ملف index.php المرفق يجب وضعه داخل المجلد /var/www/example.com/store، والملف vouchers.php يجب وضعه داخل /var/www/example.com/deals... ".

الطريقة الأجدى لتنفيذ ذلك تكون بإنشاء أرشيف tar لهذه الملفات:

$ tar cvf updates-20170621.tar.bz2 var
var/www/example.com/store/index.php
var/www/example.com/deals/voucher.php
var/www/example.com/images/banner.jpg
var/www/example.com/images/badge.jpg
var/www/example.com/images/llama-eating-apple-pie.gif

متضمنة بنية المجلدات والملفات داخلها، الآن ليس على صاحب الموقع سوى استخراج الملفات من ملف الأرشيف مباشرة داخل مجلد الجذر على خادمه. أداة tar تتحقق من تواجد المجلد var/www/example.com/ وكذلك المجلدات داخله store و deals و images، وتقوم بتوزيع الملفات في مجلداتها المناسبة. يمكن اعتبار هذه الطريقة نسخ ولصق لكن بسرعة وبسهولة.

الفرق بين نسخة tar من جنو ومن BSD

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

هناك أداتي tar شائعتين: أداة جنو tar، والتي تأتي مثبتة افتراضيًا على بعض أنظمة لينكس، وأداة tar التابعة لأنظمة BSD، والمثبتة بشكل افتراضي على BSD، ماك، وبعض أنظمة لينكس الأخرى. للاستخدام العام، كلا الإصدارين سيكون كافيًا. كل الأمثلة المذكورة في هذا المقال ستعمل على كلا الإصدارين. لكن هناك اختلافات بسيطة بينهما. حالما تعتاد على واحدة منهما يمكنك تجربة الأخرى,

غالبًا ستحتاج لتثبيت الإصدار "الآخر" من الأمر tar يدويًا. لتفادي الخلط بين الأداتين، أداة جنو tar تسمى gtar وأداة BSD tar تسمى bsdtar، على أن يكون الأمر tar هو وصلة رمزية أو اسم بديل لأحد تلك الأداتين المثبتة مسبقا على جهازك.

ترجمة -وبتصرف- للمقال How to unzip a tar.gz file لصاحبه Seth Kenlon.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...