استخراج فایل‌های tar.xz در لینوکس چگونه انجام می‌گیرد؟ فرمان مناسب برای استفاده از فایل linux-5.6.13.tar.xz چیست؟ چطور می‌توان تمام فایل‌های یک دایرکتوری را از حالت فشرده خارج کرد؟ اینها سؤالاتی هستند که می‌خواهیم در این مطلب به آنها پاسخ دهیم.

فرمان‌های tar و xz برای استخراج و فشرده‌سازی فایل‌های tar.xz و آ‌رشیوهای .txz در سیستم‌عامل لینوکس به کار می‌روند.

نحوه استخراج فایل‌های tar.xz در لینوکس

قالب کار به صورت زیر است:

۱) نصب xz با استفاده از فرمان dnf install xz در یک توزیع لینوکس CentOS، RHEL یا فدورا

۲) کاربران لینوکس دبیان یا اوبونتو می‌تواندد از فرمان apt install xz-utils استفاده کنند.

۳) استخراج فایل‌های tar.xz  با استفاده از فرمان tar -xf backup.tar.xz

۴) به عنوان مثال برای خارج‌کردن فایل filename.tar.xz از حالت فشرده، می‌توانید از فرمان زیر استفاده کنید.


xz -d -v filename.tar.xz

روند نصب

XZ یک مجموعه نرم‌افزاری متن‌باز برای فشرده‌کننده‌های بهینه داده و از جمله فرمت‌های LZMA و xz است. این فرمت‌ها در میان توسعه‌دهندگان متن‌باز بسیار محبوب هستند. این موضوع به این دلیل است که نرخ فشردگی در آنها بالاتر از گزینه‌هایی مانند gzip و bzip2 است. فرمان tar در صورتی کار می‌کند که xz در سیستم نصب شده باشد. بنابراین، باید حتماً آن را نصب کنیم.

نصب xz در لینوکس دبیان / اوبونتو

برای این منظور می‌توانید از فرمان apt یا apt-get استفاده کنید.


$ sudo apt install xz-utils

نمونه خروجی


Reading package lists... Done

Building dependency tree

Reading state information... Done

0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 5 not upgraded.

Need to get 82.5 kB of archives.

After this operation, 0 B of additional disk space will be used.

Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 xz-utils amd64 5.2.4-1 [82.5 kB]

Fetched 82.5 kB in 1s (60.3 kB/s)

(Reading database ... 284817 files and directories currently installed.)

Preparing to unpack .../xz-utils_5.2.4-1_amd64.deb ...

Unpacking xz-utils (5.2.4-1) over (5.2.4-1) ...

Setting up xz-utils (5.2.4-1) ...

Processing triggers for man-db (2.9.1-1) ...

نصب xz در لینوکس CentOS/RHEL/Fedora

برای این منظور برنامه ترمینال را باز کرده و سپس فرمان NA یا dnf را به صورت زیر اجرا کنید.


$ sudo dnf install xz

## On an older version of CentOS/RHEL try yum ##

$ sudo yum install xz

نمونه خروجی در سیستم CentOS نسخه ۶


Loaded plugins: fastestmirror

Setting up Install Process

Loading mirror speeds from cached hostfile

* base: centos.excellmedia.net

* extras: centos.excellmedia.net

* updates: centos.excellmedia.net

Resolving Dependencies

--> Running transaction check

---> Package xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6 will be installed

--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================

Package  Arch         Version                                  Repository  Size

=================================================================================

Installing:

xz       x86_64       4.999.9-0.5.beta.20091007git.el6         base       137 k

Transaction Summary

=================================================================================

Install       1 Package(s)

Total download size: 137 k

Installed size: 477 k

Is this ok [y/N]: y

Downloading Packages:

xz-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm            | 137 kB     00:00

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Installing : xz-4.999.9-0.5.beta.20091007git.el6.x86_64                    1/1

Verifying  : xz-4.999.9-0.5.beta.20091007git.el6.x86_64                    1/1

Installed:

xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6

Complete!

نصب xz در لینوکس OpenSUSE/SUSE اینترپرایز

برای این منظور می‌توانیم از فرمان zipper استفاده کنیم.


$ sudo zypper install xz

نصب بسته xz در OpenSUSE برای استخراج فایل‌های tar.xz

نصب بسته xz در OpenSUSE برای استخراج فایل‌های tar.xz

نمونه‌ها

اکنون که xz را نصب کرده‌ایم، می‌توانیم به صورت مستقیم از فرمان tar به صورت زیر برای استخراج فایلی به نام linux-5.6.13.tar.xz استفاده کنیم.


$ tar -xf linux-5.6.13.tar.xz

$ tar -xvf linux-5.6.13.tar.xz

$ tar -Jxvf linux-5.6.13.tar.xz

## extract tar.xz files aka .txz file ##

$ tar --xz -xf archive.txz

استخراج فایل‌های tar.xz در لینوکس با استفاده از فرمان tar

استخراج فایل‌های tar.xz در لینوکس با استفاده از فرمان tar

استخراج یک فایل خاص از آرشیو tar.xz

می‌توانیم با فرمت زیر، یک فایل خاص را از آرشیو backup.tar.xz  خارج کنیم.


$ tar -xf backup.tar.xz resume.pdf

$ tar -xf backup.tar.xz babys-3rd-cake-day.jpg sales.txt

امّا گاهی نام فایل را به صورت کامل ندانیم. بنابراین، ابتدا باید با گزینه –t لیستی از محتویات آرشیو تهیه کنیم.


$ tar -tvf backup.tar.xz

## filter out tar listing option using the grep command/egrep command ##

$ tar -tvf backup.tar.xz | grep file1

$ tar -tvf backup.tar.xz | egrep 'file.txt|data.doc|cake.jpg'

نمونه خروجی


drwxrwxr-x root/root         0 2020-05-14 11:29 linux-5.6.13/

-rw-rw-r-- root/root     15844 2020-05-14 11:29 linux-5.6.13/.clang-format

-rw-rw-r-- root/root        59 2020-05-14 11:29 linux-5.6.13/.cocciconfig

-rw-rw-r-- root/root        71 2020-05-14 11:29 linux-5.6.13/.get_maintainer.ignore

-rw-rw-r-- root/root        62 2020-05-14 11:29 linux-5.6.13/.gitattributes

-rw-rw-r-- root/root      1746 2020-05-14 11:29 linux-5.6.13/.gitignore

-rw-rw-r-- root/root     15266 2020-05-14 11:29 linux-5.6.13/.mailmap

-rw-rw-r-- root/root       496 2020-05-14 11:29 linux-5.6.13/COPYING

-rw-rw-r-- root/root     99724 2020-05-14 11:29 linux-5.6.13/CREDITS

drwxrwxr-x root/root         0 2020-05-14 11:29 linux-5.6.13/Documentation/

-rw-rw-r-- root/root        13 2020-05-14 11:29 linux-5.6.13/Documentation/.gitignore

drwxrwxr-x root/root         0 2020-05-14 11:29 linux-5.6.13/Documentation/ABI/

-rw-rw-r-- root/root      3821 2020-05-14 11:29 linux-5.6.13/Documentation/ABI/README

اگر می‌خواهید تمام فایل‌های سورس‌کد Perl یا Python را استخراج کنید، فرمان‌های زیر به کار شما می‌آیند.


$ tar --wildcards '*.py' -xvf webroot.tar.xz

$ tar --wildcards '*.pl' -xvf centos-7-sysadmin-scripts.txz

مفهوم گزینه‌های فرمان tar

-x : استخراج یا دریافت فایل از یک آرشیو

-f archive.tar.xz : استفاده از این آرشیو یا دستگاه برای استخراج فایل

-J OR –xz : فیلتر کردن آرشیو در فرمان ایکس‌زد. بر این اساس، ما ایکس‌زد را از طریق برنامه مدیریت بسته‌ها نصب می‌کنیم.

-v : حالت گسترده و نمایش فرآیند.

-t : لیست‌کردن فایل درون آرشیو ذخیره شده

–wildcards : در حالت عادی «وایلد‌کارت‌»‌ها کارآیی اصلی خود را نخواهند داشت. بنابراین، برای استخراج فایل‌ها می‌توانید این گزینه را به کار ببرید.

به عنوان مثال برای استخراج تمام تصاویر با پسوند .webp می‌توان از گزینه –wildcards ‘*.webp’ در فرمان tar استفاده کرد.

نحوه استخراج فایل‌های tar.xz با استفاده از فرمان xz

تا به اینجا در مورد استخراج فایل‌های tar.xz با استفاده از فرمان tar صحبت کردیم. ولی باید توجه داشت که می‌توان مستقیماً‌ از فرمان xz نیز برای فشرده‌سازی و استخراج فایل‌ها نیز استفاده کرد. فرمان tar با فراخوانی داخلی xz یا با یک API ارائه شده توسط libs کارها را انجام می‌دهد. اکنون بیایید چند نکته و ترفند در مورد فرمان xz مرور کنیم.

از حالت فشرده خارج‌کردن فایل .tar.xz


$ xz --decompress filename.tar.xz

$ xz -v -d archives.tar.xz

استخراج فایل با mysql.sql.xz و جایگزین شده با mysql.sql


$ xz -v -d mysql.sql.xz

فشرده‌سازی tarball به عنوان فایل tar.xz

فشرده‌کردن یک فایل با نام mysql.sql و جایگزین آن با mysql.sql.x به منظور صرفه‌جویی در فضای دیسک.


$ xz mysql.sql

قالب کار برای یک tarball به صورت زیر خواهد بود.


$ xz -v -z filename.tar

به همین ترتیب می‌توانید از فرمان tar برای مقاصد گوناگون استفاده کنید.


$ tar -cvJf {your-filename-here.tar.xz} file1 file2

$ tar -cvJf {your-filename-here.tar.xz} /path/to/dir1 ./dir2

$ sudo tar -cvJf /efs/backups/14-05-2020/production-webroot.tar.xz /var/www/

$ sudo tar --xz -cvf /efs/backups/aws-us-west-www-prod-42-etc.txz /etc/

استفاده از فرمان tar برای استخراج فایل‌های tar.xz

استفاده از فرمان tar برای استخراج فایل‌های tar.xz

جمع‌بندی

در این ‌آموزش کوتاه، نحوه استخراج فایل‌های tar.xz و .txz که فرمت‌های محبوبی در سیستم‌عامل لینوکس هستند را مرور کردیم. به خاطر داشته باشید که فرمان tar در صورتی کار می‌کند که xz در سیستم با پکیج منیجر نصب شده باشد. برای کسب اطلاعات بیشتر در مورد پروژه xz می‌توانید به صفحه رسمی این پروژه نیز مراجعه کنید.

منبع: Cybercity.biz