أمثلة على أوامر القطران 15 لمسؤول النظام والمطورين
نشرت: 2021-09-21tar هو أحد تنسيقات أرشفة الملفات الشائعة المتوفرة في أنظمة Unix و Linux.
الاسم نفسه مشتق من T ape AR chive حيث تم تطويره لكتابة البيانات المتسلسلة على أجهزة الشريط. يشار إليها أيضًا باسم تاربال في بعض الأحيان.
بشكل افتراضي ، يقوم tar فقط بأرشفة الملفات بدون ضغط ولكن باستخدام بعض الأجزاء. يمكننا استخدام تقنيات ضغط مختلفة للحصول على ناتج مضغوط. عادةً ما يتم تضمين الأداة tar في معظم توزيعات Linux افتراضيًا ، ويتم دعم التنسيق نفسه عبر أنظمة تشغيل أخرى ، بما في ذلك Windows و macOS ، عبر أدوات وأدوات مساعدة مختلفة.
سنغطي بعض الأمثلة الشائعة واستخدامات الأمر tar والأعلام المدعومة في هذه المقالة.
اذا هيا بنا نبدأ…
إنشاء أرشيف القطران
لإنشاء أرشيف بسيط غير مضغوط ، فإن صيغة الأمر tar هي:
$ tar cvf <tar-file-name> <files-to-archive> هنا تشير الإشارات c إلى الإنشاء ، و v للإخراج المطول و f لتحديد اسم ملف أرشيف tar. حسب الاصطلاح ، حدد اسم ملف tar بامتداد .tar . يمكن تحديد الملفات المراد أرشفتها باستخدام أحرف البدل أو كأسماء / مسارات ملفات فردية أو متعددة.
على سبيل المثال ، لدي ثلاثة ملفات في دليلي:
$ ls -l total 12 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $ وأريد إنشاء أرشيف tar يحتوي على جميع الملفات الثلاثة ، ويمكن القيام بذلك على النحو التالي:
$ tar cvf archive.tar * file1.txt file2.txt file3.txt $ ls -l archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar $يمكنني تحديد ملفات معينة فقط لأرشفتها أيضًا ، مثل:
$ tar cvf archive1.tar file1.txt file2.txt file1.txt file2.txt $ ls -l archive1.tar -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive1.tar $إنشاء أرشيف مضغوط (GZ)
لا يسمح القطران بأرشفة الملفات فحسب ، بل يسمح أيضًا بضغطها لتوفير المساحة. يعد gunzip أحد تنسيقات الضغط الشائعة ، ويتم تمثيله عادةً بالامتداد .gz بعد .tar أو .tar tgz . يمكننا استخدام علامة z لتحديد أننا بحاجة إلى ضغط الملفات باستخدام gunzip. هذا مثال:
$ tar cvzf archive.tar.gz file* file1.txt file2.txt file3.txt $ ls -l archive.tar archive.tar.gz -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 12 20:21 archive.tar.gz $ يمكنك ملاحظة أن حجم كلا ملفي الأرشيف يختلف اختلافًا كبيرًا على الرغم من احتواء كلاهما على نفس الملفات الثلاثة. هذا بسبب استخدام الضغط باستخدام علامة z .
إنشاء أرشيف مضغوط (BZ2)
يدعم tar العديد من تنسيقات الضغط الأخرى. أحدهما هو bz2 أو bzip2 والذي يتم تمثيله بالملحق tar.bz2 أو أحيانًا tbz2 . قد يمنحك حجم أرشيف أصغر ولكنه بدوره يستهلك المزيد من وحدة المعالجة المركزية ، وبالتالي فإن عملية الضغط / إلغاء الضغط قد تكون أبطأ من أرشيف gz .
مثال:
$ tar cvjf archive.tar.bz2 file* file1.txt file2.txt file3.txt $ ls -l archive.tar archive.tar.gz archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 12 20:25 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 12 20:21 archive.tar.gz $ file archive.tar* archive.tar: POSIX tar archive (GNU) archive.tar.bz2: bzip2 compressed data, block size = 900k archive.tar.gz: gzip compressed data, from Unix, original size modulo 2^32 10240 $Untar جميع الملفات
يمكن استخراج أرشيف tar (سواء كان مضغوطًا أو غير مضغوط) ببساطة باستخدام الخيار x . ستوضح الأمثلة أدناه استخدامها:
$ tar xvf archive.tar file1.txt file2.txt file3.txt $ ls -l total 24 -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 19 18:25 archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $ هذا يعمل لأرشيف مضغوط gz مثل:
$ tar xvf archive.tar.gz file1.txt file2.txt file3.txt $ ls -l total 16 -rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 19 18:27 archive.tar.gz -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $ أو حتى لأرشيف مضغوط bz2 مثل:
$ tar xvf archive.tar.bz2 file1.txt file2.txt file3.txt $ ls -l total 16 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $قائمة محتويات القطران
لسرد محتويات أرشيف tar ، يمكنك استخدام علامة t كما هو موضح أدناه:
$ tar tvf archive.tar.bz2 -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt $ملفات محددة Untar
يمكن استخراج ملف واحد فقط من أرشيف tar أو tar.gz أو tar.bz2 عن طريق تحديد اسم الملف على النحو التالي:
$ tar xvf archive.tar.bz2 file1.txt file1.txt $ ls -l total 8 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt $وبالمثل ، يمكنك تحديد أسماء ملفات متعددة مفصولة بمسافة لاستخراجها معًا دفعة واحدة.
$ tar xvf archive.tar.bz2 file1.txt file3.txt file1.txt file3.txt $ ls -l total 12 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $Untar باستخدام Wildcard
لاستخراج ملف واحد أو أكثر باستخدام PATTERN أحرف البدل ، استخدم علامة --wildcards :
$ tar xvf archive.tar.bz2 --wildcards "file*" file1.txt file2.txt file3.txt $ ls -l total 16 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $إضافة الملفات إلى الأرشيف
يمكن إضافة / إلحاق ملفات جديدة --append غير المضغوطة الحالية باستخدام علامة r أو - --append مع أسماء ملفات جديدة أو نمط أحرف البدل (تذكر أن هذا يعمل فقط مع ملفات .tar غير المضغوطة وليس مع تنسيقات tar.gz أو tar.bz2 المضغوطة):

$ tar rvf archive.tar file-new* file-new.txt file-new2.txt $ tar tvf archive.tar -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt -rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt -rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new2.txt $ يمكنك ملاحظة أن سرد محتويات archive.tar مرة أخرى يعرض الملفين archive.tar حديثًا.
حذف الملفات من الأرشيف
يمكن إزالة ملفات محددة من أرشيف tar باستخدام علامة --delete كما هو موضح أدناه (قارن قائمة tar قبل الحذف وبعده للملفات):
$ tar tvf archive.tar -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt -rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt -rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new2.txt $ tar --delete -f archive.tar file-new.txt file-new2.txt $ tar tvf archive.tar -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt -rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt -rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt $مرة أخرى ، يعمل هذا فقط مع كرات القطر غير المضغوطة وسيفشل في تنسيقات الأرشيف المضغوطة.
إنشاء مع التحقق
أثناء إنشاء ملفات tar غير مضغوطة ، يمكنك التحقق من محتويات الأرشيف باستخدام علامة W النحو التالي:
$ tar cvfW archive.tar file*.txt file1.txt file2.txt file3.txt Verify file1.txt Verify file2.txt Verify file3.txt $ لا يمكن استخدام هذا مع علامات الضغط على الرغم من أنه يمكنك ضغط ملف tar تم إنشاؤه لاحقًا باستخدام gzip أو أدوات أخرى.
استخراج القطران إلى المجلد
إذا كنت ترغب في استخراج محتويات tarball الخاصة بك إلى مجلد معين بدلاً من الدليل الحالي ، فاستخدم علامة -C مع مسار الدليل كما هو موضح أدناه:
$ tar xvf archive.tar -C new-directory/ file1.txt file2.txt file3.txt file2.txt file4.txt $ ls -l new-directory/ total 16 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 15 Sep 19 18:59 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt -rw-r--r-- 1 abhisheknair abhisheknair 10 Sep 19 18:58 file4.txt $استخدم علم فرق
يمكنك استخدام العلم --diff أو d لإيجاد أي تغييرات بين الملفات الموجودة في أرشيف tar وتلك الموجودة في نظام الملفات. إليك مثالاً يقوم بتشغيل diff مرة واحدة عندما يكون الملف داخل القطران وخارجه متماثلًا. بعد تحديث الملف ، تم تشغيله مرة أخرى لإظهار الفرق في الإخراج.
$ tar dvf archive.tar file4.txt file4.txt $ $ echo newline > file4.txt $ $ tar dvf archive.tar file4.txt file4.txt file4.txt: Mod time differs file4.txt: Size differs $استبعاد الملفات
يمكن أن يكون استبعاد ملفات معينة مطلبًا أثناء إنشاء أرشيفات tar. يمكن تحقيق ذلك --exclude flag.
$ tar --exclude="dir/file2.txt" --exclude="dir/file-new*.txt" -cvzf archive.tar.gz dir/ dir/ dir/file1.txt dir/file3.txt $ ls -l dir total 24 -rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new.txt -rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new2.txt -rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:20 file-new3.txt -rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:27 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 6 Sep 19 19:27 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 8 Sep 19 19:27 file3.txt $ tar tvf archive.tar.gz drwxr-xr-x abhisheknair/abhisheknair 0 2021-09-19 19:30 dir/ -rw-r--r-- abhisheknair/abhisheknair 5 2021-09-19 19:27 dir/file1.txt -rw-r--r-- abhisheknair/abhisheknair 8 2021-09-19 19:27 dir/file3.txt $ كما يمكنك ملاحظته من الإخراج أعلاه ، يمكننا تحديد علامة --exclude عدة مرات لتحديد أسماء أو أنماط ملفات متعددة في الشرط AND . لاحظ أنه من بين الملفات الستة الموجودة في dir في المثال أعلاه ، استوفى ملفان فقط شرط تضمينهما في archive.at.gz .
عرض حجم محتوى القطران
يمكننا الحصول على حجم محتويات أرشيف tar مضغوط باستخدام الأمر التالي:
$ tar tvf archive.tar.gz -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt $ tar -xzf archive.tar.gz --to-stdout|wc -c 56 $ وبالمثل لأرشيف bz2 :
$ tar tvf archive.tar.bz2 -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt $ tar -xjf archive.tar.bz2 --to-stdout|wc -c 56 $الاحتفاظ بالأذونات
من خلال الإعدادات الافتراضية ، يحتفظ الأمر tar بالإذن للملفات والأدلة التي يقوم --preserve-permissions الرغم من أنه يمكنك تحديد نفس الشيء باستخدام علامة -p أو --preserve-permissions كما هو موضح أدناه:
$ tar cvpzf archive.tar.gz *.txt file1.txt file2.txt file3.txt $ملخص
tar هي أداة مفيدة على أنظمة Unix / Linux لفترة طويلة وكانت تستخدم بشكل أساسي في مهام الأرشفة والنسخ الاحتياطي. تطورت الأداة مع العديد من الخيارات بمرور الوقت. يمكن استخدامه للمهام البسيطة إلى المعقدة ، إذا كنت تعرف الميزات التي يوفرها. غطت هذه المقالة بعض العمليات الأساسية التي يمكنك القيام بها باستخدام الأمر tar وتعرض كيف يمكن أن تساعدك في مهام إدارة النظام اليومية.
الرجوع إلى صفحة بها رجل man tar أو استخدام tar --help أو tar --usage القيادة للحصول على مزيد من التفاصيل.
