
Tar هو أداة لأرشفة وضغط الملفات في لينكس وأنظمة التشغيل الشبيهة بيونكس. يتيح لك تجميع ملفات ودلائل متعددة في ملف أرشيف .tar واحد، مع الحفاظ على أذونات وهياكل الدلائل.
يعد Tar مفيدًا للغاية في نسخ النظام الاحتياطي للبيانات، ونقل مجموعات من الملفات بين الأنظمة، وإعداد توزيعات شفرة المصدر. في هذا الدليل الشامل، سنغطي أساسيات استخدام tar ، بالإضافة إلى ميزات وأمثلة متقدمة.
نظرة عامة على Tar
يعني Tar أرشيف الشريط. استُخدم في الأصل لأرشفة البيانات على محركات الأشرطة للتخزين طويل الأمد. بينما لا يزال بإمكان tar كتابة الأرشيفات إلى محركات الأشرطة ، إلا أنه يُستخدم بشكل أكثر شيوعًا مع الملفات العادية والأنابيب اليوم.
بعض الحقائق الرئيسية حول tar:
- تجمع أرشيفات tar ملفات ودلائل متعددة في ملف .tar واحد.
- يمكن ضغط الأرشيفات باستخدام gzip أو bzip2 لتوفير المساحة.
- يحافظ Tar على الأذونات والملكية وأوقات تعديل الملفات ، إلخ.
- يمكن أن تمتد الأرشيفات عبر أشرطة / مجلدات متعددة (للنسخ الاحتياطي على محركات الأشرطة).
- Tar موحد – يمكن استخراج الأرشيفات التي تم إنشاؤها على نظام UNIX واحد على أي نظام UNIX متوافق آخر.
- Tar أداة قديمة جدًا موجودة على كل منصة لينكس ويونكس. لها عقود من الاستخدام الواسع النطاق مما يجعلها مستقرة وموثوقة.
دعونا نراجع بعض المصطلحات الشائعة المتعلقة بـ tar:
- الأرشيف – ملف .tar الذي يتم إنشاؤه عن طريق تجميع الملفات باستخدام tar. يحتوي هذا الملف على المحتوى المؤرشف. يمكن ضغط الأرشيفات باستخدام gzip/bzip2 التي يتم التعبير عنها من خلال امتدادات الملفات .tar.gz أو .tar.bz2.
- حزمة – مرادف للأرشيف.
- كرةقطران – كرة قطران هي مجرد طريقة أخرى للإشارة إلى ملف أرشيف .tar.gz أو .tar.bz2.
- استخراج – عملية فك الأرشيف وكتابة الملفات المستخرجة على القرص.
- الضغط – يدعم Tar الضغط الاختياري مع gzip أو bzip2 لتوفير المساحة. الأرشيفات المضغوطة لها امتدادات .tar.gz أو .tar.bz2.
- إلحاق – إضافة ملفات إلى أرشيف موجود. لا يؤثر على المحتوى الحالي.
- التتابع – دمج أرشيفين معًا من النهاية إلى النهاية.
الآن بعد أن فهمنا مصطلحات tar والأساسيات ، دعونا ننتقل إلى بعض أمثلة الاستخدام.
إنشاء الأرشيفات
لإنشاء أرشيف tar جديد ، استخدم tar -cvf
. وينقسم هذا كالتالي:
-c
– ينشئ أرشيفًا جديدًا.-v
– مخرجات مفصلة. يسرد الملفات التي تمت معالجتها.-f <archive-name>
– اسم ملف الإخراج.
على سبيل المثال:
$ tar -cvf archive.tar /path/to/folder
سيقوم هذا بأرشفة المجلد المعطى بشكل متكرر داخل archive.tar
. يمكنك تقديم مسارات ملف/مجلد متعددة لإضافة إدخالات متعددة:
$ tar -cvf archive.tar /path/one /path/two /path/three
لضغط الأرشيف باستخدام gzip ، استخدم -czvf
بدلاً من -cvf
فقط:
$ tar -czvf archive.tar.gz /path/to/folder
لضغط bzip2 ، استخدم -cjvf
:
$ tar -cjvf archive.tar.bz2 /path/to/folder
يمكنك التحكم في الإخراج المفصل باستخدام -v
. أسقطه لإخفاء قوائم الملفات:
$ tar -cf archive.tar /path/to/folder
عرض محتويات الأرشيف
لعرض الملفات الموجودة داخل أرشيف tar دون استخراجه ، استخدم:
$ tar -tf archive.tar
سيقوم -t
بسرد المحتويات.
بالنسبة للأرشيفات المضغوطة ، تحتاج إلى إضافة علامة الضغط:
$ tar -tzf archive.tar.gz
$ tar -tjf archive.tar.bz2
استخراج الأرشيفات
لاستخراج أرشيف ، استخدم -xf
:
$ tar -xf archive.tar
سيقوم هذا باستخراج محتويات archive.tar
في الدليل الحالي مع الحفاظ على الأذونات والسمات.
بالنسبة للأرشيفات المضغوطة:
$ tar -xzf archive.tar.gz
$ tar -xjf archive.tar.bz2
يمكنك استخراج إلى دليل محدد باستخدام -C
:
$ tar -xf archive.tar -C /tmp/extract-here
سيقوم هذا باستخراج الأرشيف إلى /tmp/extract-here
.
إلحاق الأرشيفات
يمكنك إلحاق ملفات/دلائل إلى أرشيف tar موجود باستخدام -rvf
بدلاً من -cvf
:
$ tar -rvf archive.tar /new/folder
سيضيف هذا /new/folder
بشكل متكرر إلى archive.tar
دون التأثير على المحتوى الحالي.
تحديث الأرشيفات
لتحديث الملفات الموجودة في أرشيف أو إضافة ملفات جديدة ، استخدم -uvf
:
$ tar -uvf archive.tar /path/to/update
سيضيف هذا أي ملفات جديدة تحت /path/to/update
، ويستبدل أي ملفات موجودة في الأرشيف بالإصدارات المحدثة.
حذف من الأرشيفات
يتضمن حذف الملفات من أرشيفات tar إنشاء أرشيف جديد بدون تلك الملفات.
أولاً ، استخرج محتويات الأرشيف إلى موقع مؤقت:
$ mkdir /tmp/archive-temp
$ tar -xf archive.tar -C /tmp/archive-temp
ثم احذف الملف الذي تريد إزالته من المجلد المؤقت.
أخيرًا ، أنشئ أرشيفًا جديدًا من المجلد المؤقت:
$ tar -cf new-archive.tar /tmp/archive-temp
سيحتوي new-archive.tar
الآن على محتويات الأرشيف باستثناء الملف المحذوف.
استبعاد الملفات/المسارات
لاستبعاد بعض الملفات/المسارات عند إنشاء أرشيف ، استخدم --exclude
:
$ tar -cvf archive.tar /path --exclude=/path/to/exclude
سيمنع هذا /path/to/exclude
من إضافتها إلى archive.tar
.
يمكن أن يكون لديك خيارات --exclude
متعددة. على سبيل المثال ، لاستبعاد جميع ملفات .log:
$ tar -cvf archive.tar /path --exclude=*.log
تضمين المسارات المطابقة فقط
بدلاً من استبعاد مسارات معينة ، يمكنك اختيار تضمين المطابقات فقط باستخدام -T
:
$ tar -cvf archive.tar -T include-list.txt
حيث يحتوي include-list.txt
على الأنماط مثل *.py
لمطابقة الامتدادات فقط.
خيارات الضغط
يستخدم tar gzip كضغط افتراضي. يمكنك تحديد خوارزميات مختلفة:
- لـ gz (gzip):
-z
- لـ bz2 (bzip2):
-j
- لـ lzma:
-J
- لـ lzop:
-Z
على سبيل المثال:
$ tar -cjf archive.tar.bz2 /path # ضغط bzip2
يمكنك أيضًا تعيين مستوى الضغط ، والذي يتراوح عادةً بين 1 إلى 9 (أعلى = ضغط أفضل ولكن أبطأ):
$ tar -czf -9 archive.tar.gz /path # مستوى gzip 9
التحقق من الأرشيف
بمجرد إنشاء أرشيف ، يمكنك التحقق مما إذا كان قد تم إتلافه أو تغييره باستخدام -W
:
$ tar -Wvf archive.tar
سيتحقق هذا من سلامة الأرشيف.
بالنسبة للأرشيفات المضغوطة ، أضف علامة الضغط كالمعتاد:
$ tar -Wzvf archive.tar.gz
Tar عبر الأنابيب والوصول عن بُعد
يمكن لـ Tar قراءة/كتابة الأرشيفات محليًا أو عن بُعد عبر stdin/stdout.
على سبيل المثال ، لإنشاء tar عبر SSH:
$ ssh user@host 'tar -cf - /path/to/archive' | tar -xvf -
سيرسل هذا إخراج tar عبر SSH لاستخراجه محليًا.
يمكنك أيضًا استخراج أرشيف وتمريره عبر SSH للاستخراج عن بُعد:
$ tar -cf - /path/to/archive | ssh user@host 'tar -xvf -'
يمكن أن يسرع تمرير tar عبر SSH مع الضغط / فك الضغط بشكل كبير من عمليات النقل:
$ tar czf - /path/to/archive | ssh user@host 'tar xvzf -'
هذه مجرد أمثلة قليلة – يوفر tar الكثير من المرونة مع الأنابيب.
تجزئة/توسيع الأرشيفات
إذا لم يكن أرشيفك يلائم حجم وحدة واحدة مثل محرك أشرطة أو قرص ، فيمكنك تجزئة أرشيفات tar إلى أجزاء متعددة.
للتجزئة حسب الحجم:
$ tar -cvf - --tape-length=1G /path | split -b 1G - archive.tar.
سيقسم هذا archive.tar
إلى أجزاء بحجم 1 جيجابايت تسمى archive.tar.01
و archive.tar.02
وما إلى ذلك.
يمكنك أيضًا تجزئة حسب عدد الأجزاء:
$ tar -cvf - /path | split -b 100m -d -a 5 - archive.tar.
سيقسم هذا الأرشيف إلى 5 أجزاء (-a 5) تسمى archive.tar.01
و archive.tar.02
و … archive.tar.05
.
لإعادة بناء الأرشيف من الأجزاء ، استخدم cat
لربطها معًا بالترتيب:
$ cat archive.tar.0* > archive.tar
ثم استخرج كالمعتاد باستخدام tar -xf archive.tar
.
أرشفة الملفات الخاصة
- لأرشفة ملفات الجهاز مثل
/dev/sdb
، استخدم خيار--preserve-devices
في GNU tar أو--formats=v7
في tar BSD/Solaris. - لتتبع الارتباطات الصلبة للملفات بدقة وأرشفتها بشكل صحيح ، استخدم
--hard-dereference
. - لأرشفة السمات الممتدة للنظام (SELinux ، ACLs ، إلخ) ، استخدم
--xattrs
. - للاحتفاظ بالدلائل الفارغة في الأرشيف ، استخدم
--keep-directory-symlinks
.
راجع وثائق tar للحصول على تفاصيل حول هذه الخيارات وغيرها من خيارات الأرشفة المتخصصة.
أمثلة وعلامات Tar المفيدة
فيما يلي مرجع سريع لبعض علامات وعمليات tar المفيدة:
# إنشاء أرشيف
$ tar -cf archive.tar /path/to/files
# أرشيف مضغوط
$ tar -czf archive.tar.gz /path/to/files
# عرض محتويات الأرشيف
$ tar -tf archive.tar
# استخراج الأرشيف
$ tar -xf archive.tar
# استخراج إلى مجلد محدد
$ tar -xf archive.tar -C /tmp
# إلحاق ملفات بالأرشيف
$ tar -rvf archive.tar file1 file2
# تحديث ملفات في الأرشيف
$ tar -uvf archive.tar file1
# حذف ملف من الأرشيف
$ tar --delete -f archive.tar file_to_delete
# أرشفة مجلد عن بُعد عبر SSH
$ ssh user@host 'tar -cf - /path/to/archive' | tar -xvf -
# التحقق من سلامة الأرشيف
$ tar -Wvf archive.tar
# مستويات الضغط 1-9
$ tar -czf -9 archive.tar.gz /path
# تجزئة الأرشيف إلى أجزاء
$ tar -cf - /path | split -b 100m -d -a 5 - archive.tar.
يغطي هذا مجموعة واسعة من أمثلة استخدام tar. تأكد من الرجوع إلى صفحات اليد لتنفيذ tar الخاص بك للمزيد من التفاصيل والعلامات المدعومة.
الخلاصة
Tar أداة أساسية للعمل مع مجموعات من الملفات على أنظمة لينكس/يونكس. يتيح لك تجميع عدد أي ملفات ودلائل وملفات خاصة في أرشيف محمول واحد يحافظ على الأذونات والسمات ، وله العديد من الاستخدامات اليومية لعمل نسخ احتياطية للملفات ونقلها وورش عمل Docker و CI/CD ، وتوزيع البرامج. إنه أداة موحدة في يونكس مضمون توافرها على أنظمة لينكس وماك أو إس.
آمل أن يكون هذا الدليل قدم لك نظرة عامة واسعة حول tar وكيفية استخدامه بفعالية لإدارة الأرشيفات على نظام لينكس مثل أوبونتو 18.04 / 20.04 / 22.04 ، سنت أو إس7 / 8، ريد هات 7.
إذا كان لديك أي أسئلة أو ترغب في معرفة المزيد عن هذا المقال، يرجى نشر سؤالك في التعليقات.