الامر '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. للمزيد من اوامر لينكس يمكنكم زيارة :
لا تتردد في ترك تعليق على الموضوع.
تذكر أن المساهمات في هذا الموضوع يجب أن تتبع إرشادات المجتمع.
لا توجد تعليقات بعد.