الامر 'tar' لارشفة و ضغط الملفات و المجلدات في لينكس

hocine
Hocine Gasmi
Back-end Developer (Python/Django)
26/09/2021 |لينكس ⌨️
الامر 'tar' لارشفة و ضغط الملفات و المجلدات في لينكس

يُستعمل الامر tar في ادارة الانضمة لـ Linux/Unix عند الارشفة و النسخ الاحتياطي. tar تعني Tape Archive.

الامر tar هو من الاوامر المهمة و التي تستعمل لضغط و ارشفة الملفات في لينكس, في هذا المقال سوف نتطرق الى عدة امثلة حول الامر tar لسهولة الفهم و التعرف على الامر اكثر. لنبدأ على بركة الله.

 

إنشاء ملف أرشيف بـ tar في Linux

في هذا المثال سوف نقوم بانشاء ارشيف لملفات متنوعة داخل الدليل /home/kali/code و سوف يكون اسم ملف الارشيف النهائي هو archives-9-26-21.tar :

$ tar -cvf archives-9-26-21.tar /home/kali/code/

/home/kali/code/
/home/kali/code/script.sh
/home/kali/code/script.py
/home/kali/code/tests.py
/home/kali/code/lists.py
/home/kali/code/parser.py
/home/kali/code/main.py

الخيارات المستعملة في الامر السابق تعني:

  • c : ينشئ ملف أرشيف .tar جديدًا.
  • v : يقوم بطبع التقدم في ارشفة ملفات .tar.
  • f : نوع الاسم لملف الأرشيف.

 

إنشاء ملف أرشيف tar.gz

لانشاء ملف tar مضغوط بـ gzip نقوم باضافة الخيار z. في هذا المثال سوف ننشئ ملف ارشيف مضغوم باسم Script-26-9-21.tar.gz.

#  tar cvfz Script-26-9-21.tar.tgz /home/kali/code/
# او
$ tar cvfz Script-26-9-21.tar.gz /home/kali/code/

/home/kali/code/
/home/kali/code/script.sh
/home/kali/code/script.py
/home/kali/code/tests.py
/home/kali/code/lists.py
/home/kali/code/parser.py
/home/kali/code/main.py

لاحض ان  Script-26-9-21.tar.gz h و Script-26-9-21.tar.tgz كلاهما متشابه.

 

إنشاء ملف أرشيف tar.bz2

باستعمال bz2 سنحضى بملف ارشيف مضغوط بحجم اقل من gzip لكن وقت الضغط و فك الضغط اطول من gzip.

$ tar cvfj codes-py.tar.bz2 /home/kali/code

/home/kali/code/
/home/kali/code/script.sh
/home/kali/code/script.py
/home/kali/code/tests.py
/home/kali/code/lists.py
/home/kali/code/parser.py
/home/kali/code/main.py

ملاحضة: كل من bz2 و tbz متشابهان لـ tb2.

 

فك ارشفة ملف tar

لفك ارشفة ملف tar نقوم بالامر التالي مع اضافة الخيار (extract) x. في مثالنا سوف نقوم باستعمال ملف الارشيف السابق archives-9-26-21.tar.

$ tar -xvf archives-9-26-21.tar

home/kali/code/
home/kali/code/script.sh
home/kali/code/script.py
home/kali/code/tests.py
home/kali/code/lists.py
home/kali/code/parser.py
home/kali/code/main.py

اذا اردنا فك الارشفة لملف ما في مجلد او دليل معين نقوم باستعمال الخيار C و تحديد المكان بعد ذلك.

$ tar -xvf archives-9-26-21.tar -C /home/kali/Py_codes/

home/kali/code/
home/kali/code/script.sh
home/kali/code/script.py
home/kali/code/tests.py
home/kali/code/lists.py
home/kali/code/parser.py
home/kali/code/main.py

جميع ملفات الارشيف تم فك ارشفتها في المجلد Py_codes.

 

فك ضغط و ارشفة ملف tar.gz

نفس الامر السابق مع اضافة الخيار x و تحديد مكان فك الضغط و الارشفة  بالخيار C.

$ tar -xvf script-26-9-21.tar.gz -C /home/kali/Py_files/

home/kali/code/
home/kali/code/script.sh
home/kali/code/script.py
home/kali/code/tests.py
home/kali/code/lists.py
home/kali/code/parser.py
home/kali/code/main.py

 

فك ضغط و ارشفة ملف tar.bz2

لفك المف المضغوط bz2 نقوم بالامر التالي:

$ tar -xvf codes-py.tar.bz2 -C /home/kali/Py_files_bz2

home/kali/code/
home/kali/code/script.sh
home/kali/code/script.py
home/kali/code/tests.py
home/kali/code/lists.py
home/kali/code/parser.py
home/kali/code/main.py

 

عرض قائمة محتويات ملف أرشيف tar في Linux

لسرد محتويات ملف أرشيف tar بدون فك تشفيره نقوم بالامر tar مع الخيار t (list content).

في مثالنا سوف نسرد محتويات الملف archives-9-26-21.tar.

$ tar -tvf archives-9-26-21.tar

drwxr-xr-x kali/kali         0 2021-09-26 00:18 home/kali/code/
-rw-r--r-- kali/kali       227 2021-09-26 00:17 home/kali/code/script.sh
-rw-r--r-- kali/kali       566 2021-09-26 00:17 home/kali/code/script.py
-rw-r--r-- kali/kali       453 2021-09-26 00:17 home/kali/code/tests.py
-rw-r--r-- kali/kali       792 2021-09-26 00:17 home/kali/code/lists.py
-rw-r--r-- kali/kali      3846 2021-09-26 00:17 home/kali/code/parser.py
-rw-r--r-- kali/kali      1358 2021-09-26 00:18 home/kali/code/main.py

 

عرض قائمة محتويات ملف أرشيف tar.gz

نقوم بنفس الامر السابق لسرد محتويات ملف ارشيف tar.gz.

$ tar -tvf Script-26-9-21.tar.gz

drwxr-xr-x kali/kali         0 2021-09-26 00:18 code/
-rw-r--r-- kali/kali       227 2021-09-26 00:17 code/script.sh
-rw-r--r-- kali/kali       566 2021-09-26 00:17 code/script.py
-rw-r--r-- kali/kali       453 2021-09-26 00:17 code/tests.py
-rw-r--r-- kali/kali       792 2021-09-26 00:17 code/lists.py
-rw-r--r-- kali/kali      3846 2021-09-26 00:17 code/parser.py
-rw-r--r-- kali/kali      1358 2021-09-26 00:18 code/main.py

 

عرض قائمة محتويات ملف أرشيف tar.bz2

الامر التالي يقوم بسرد قائمة محتويات الملف ملف الارشيف المضغوط tar.bz2.

$ tar -tvf codes-py.tar.bz2

drwxr-xr-x kali/kali         0 2021-09-26 00:18 code/
-rw-r--r-- kali/kali       227 2021-09-26 00:17 code/script.sh
-rw-r--r-- kali/kali       566 2021-09-26 00:17 code/script.py
-rw-r--r-- kali/kali       453 2021-09-26 00:17 code/tests.py
-rw-r--r-- kali/kali       792 2021-09-26 00:17 code/lists.py
-rw-r--r-- kali/kali      3846 2021-09-26 00:17 code/parser.py
-rw-r--r-- kali/kali      1358 2021-09-26 00:18 code/main.py

 

فك ارشفة ملف واحد من ملف الارشيف tar

لاستخراج ملف واحد من الارشيف نقوم بالامر التالي. في مثالنا سوف نستخرج الملف parser.py من الارشيف archives-9-26-21.tar.

$ tar -xvf archives-9-26-21.tar home/kali/code/parser.py

home/kali/code/parser.py

البعض يفضل استعمال التنسيق التالي

$ tar --extract  --file=archives-9-26-21.tar home/kali/code/parser.py

كما نلاحض نقوم بالامر tar و اضافة مسار الملف داخل ملف الارشيف.

اذا اردنا استخراج عدة ملفات نقوم بالامر التالي كما في المثال:

$ tar -xvf archives-9-26-21.tar "home/kali/code/parser.py" "home/kali/code/main.py"

home/kali/code/parser.py
home/kali/code/main.py

لاستخراج مجلد كامل (Py_files) فقط من ملف ارشيف نقوم بالامر التالي:

$ tar --extract  --file=archives-dir-9-26-21.tar code/Py_files

 

استخراج مجموعة ملفات باستعمال Wildcard

سوف نقوم في هذا المثال باستخراج كل ملفات بايثون و التي تنتهي بامتداد .py.

$ tar -xvf archives.tar --wildcards '*.py'

lists.py
main.py
script.py
tests.py

اذا اردنا استخراج كل الملفات التي لديها الامتداد .py مهما كان مكان تواجدها في الارشيف نقم بالامر التالي:

$ tar -xf archives.tar --wildcards --no-anchored '*.py'
  • --no-anachored : الأنماط تنطبق على أسماء الملفات التي بعد كل /

 

اضافة ملف او مجلد لملف tar

لاضافة ملف او مجلد لملف ارشيف tar مود مسبقا نقوم باضافة الخيار r (append).

اولا لدينا ملف الارشيف التالي:

$ tar -tvf archives-9-26-21.tar

-rw-r--r-- kali/kali       792 2021-09-26 00:17 lists.py
-rw-r--r-- kali/kali      1358 2021-09-26 00:18 main.py
-rw-r--r-- kali/kali      3846 2021-09-26 00:17 parser.py
-rw-r--r-- kali/kali       566 2021-09-26 00:17 script.py
-rw-r--r-- kali/kali       453 2021-09-26 00:17 tests.py
-rw-r--r-- kali/kali       227 2021-09-26 00:17 script.sh

لنقم باضافة ملف و مجلد.

$ tar -rvf archives-9-26-21.tar names.txt
names.txt

$ tar -rvf archives-9-26-21.tar PHP_files
PHP_files/
PHP_files/main.php
PHP_files/index.php

$ tar -tvf archives-9-26-21.tar

-rw-r--r-- kali/kali       792 2021-09-26 00:17 lists.py
-rw-r--r-- kali/kali      1358 2021-09-26 00:18 main.py
-rw-r--r-- kali/kali      3846 2021-09-26 00:17 parser.py
-rw-r--r-- kali/kali       566 2021-09-26 00:17 script.py
-rw-r--r-- kali/kali       453 2021-09-26 00:17 tests.py
-rw-r--r-- kali/kali       227 2021-09-26 00:17 script.sh
-rw-r--r-- kali/kali        61 2021-09-26 01:45 names.txt
drwxr-xr-x kali/kali         0 2021-09-26 01:42 PHP_files/
-rw-r--r-- kali/kali       677 2021-09-26 01:42 PHP_files/main.php
-rw-r--r-- kali/kali       687 2021-09-26 01:42 PHP_files/index.php

ملاحضة: للارشيف tar.bz2 نقوم بنفس الامر.

 

معرفة حجم ملفة الارشيف tar. في مثالنا القادم سوف يضهر الحجم بالكيلو بايت (KB).

$ tar -czf - archives-9-26-21.tar | wc -c
651

$ tar -czf - code_archive.tar.gz | wc -c
552

 

خيارات الامر tar

  •  c : إنشاء ملف أرشيف.
  • x : استخراج ملف أرشيف.
  • v : عرض تقدم ملف الأرشيف.
  • f : اسم ملف الأرشيف.
  • t : عرض محتوى ملف الأرشيف.
  • j : أرشيف مفلتر من خلال bzip2.
  • z : أرشيف مفلتر من خلال gzip.
  • r : إلحاق أو تحديث الملفات أو الدلائل إلى ملفات الأرشيف الموجودة.
  • wildcards : تحديد الأنماط في أمر tar لـ UNIX.

 

نتمنى ان يكون هذا المقال مفيدا, و انكم تعلمتم استخدام الامرtar. للمزيد من اوامر لينكس يمكنكم زيارة :

 

لا تتردد في ترك تعليق على الموضوع.

تذكر أن المساهمات في هذا الموضوع يجب أن تتبع إرشادات المجتمع.


التعليقات:

    لا توجد تعليقات بعد.