بایگانی، فشردهسازی و استخراج فایلها از رایجترین وظایف یک مدیر لینوکس است. اگر تا به حال با فایلهای “tarball” که پسوند .tar، .tar.gz، .xz یا .bz2 دارند کار کردهاید، احتمال زیادی وجود دارد که با استفاده از ابزار .tar ایجاد شده باشد.
در این مقاله، ما نشان خواهیم داد که چگونه میتوانید از این ابزار برای بایگانی، فشردهسازی و استخراج فایلها در سیستمهای لینوکس استفاده کنید . ما برای همه مثالها از اوبونتو ۲۰.۰۴ استفاده خواهیم کرد، اما میتوانید در هر سیستم لینوکسی که از . tarاستفاده میکند، این آموزش را دنبال کنید .tar
tar— مخفف «tape archive» — یک ابزار خط فرمان گنو برای ایجاد و استخراج آرشیوها است.
بایگانی یک فایل واحد است که شامل چندین فایل یا دایرکتوری است. در جوامع متنباز و لینوکس، فایلهای فشرده (tarballs) یکی از رایجترین روشها برای توزیع کد منبع و سایر فایلهای مهم هستند.
علاوه بر ایجاد آرشیو، tarمیتواند فشردهسازی و رفع فشار را با استفاده از چندین ابزار فشردهسازی مختلف مانند gzipو انجام دهد bzip2.
tar در مقابل gzip #
هنگام کار با آرشیوهای لینوکس، احتمالاً در زمینههای مشابه، در مورد tarو زیاد شنیدهاید .gzip
تفاوت اساسی بین این دو ابزار این است: tarاز چندین فایل آرشیو ایجاد میکند در حالی که gzipفایلها را فشرده میکند.
با این حال، این ابزارها متقابلاً منحصر به فرد نیستند. tarمیتوانند gzipبرای فشردهسازی فایلهایی که بایگانی میکنند استفاده شوند. سوئیچ tar‘s باعث میشود که دستور از . استفاده کند .ztargzip
فشردهسازی gzip در مقابل bzip2 و xz #
gzipتنها برنامه فشردهسازی نیست tarکه میتواند از آن استفاده کند. همچنین bzip2از … نیز پشتیبانی میکند xz. جدول زیر برخی از تفاوتهای اساسی بین این ابزارهای فشردهسازی را شرح میدهد.
| gzip | فایل فشرده bzip2 | xz | |
|---|---|---|---|
| الگوریتم فشردهسازی | باد کردن | باروز-ویلر | ال زد ام ای |
| پسوندهای رایج فایلها | .tar.gz، .tgz، .gz | tar.bz2، .bz2 | tar.xz، .xz |
tarسوئیچ فرمان |
-z |
-j |
-J |
بهطورکلی، gzipو bzip2از دیدگاه فشردهسازی و عملکرد قابل مقایسه هستند، اما gzipبهطور گستردهتری استفاده میشوند. .xzمعمولاً بهترین فشردهسازی کلی را ارائه میدهد، اما زمان و منابع بیشتری از رایانه رومیزی لینوکس را نیز مصرف میکند .
توجه: در مثالهای ما، ما بر استفاده از gzip. تمرکز خواهیم کرد. جایگزینی -zبا -jدر دستورات، bzip2به جای gzip از use استفاده میکند. استفاده از -Jinstead of به جای . -zاستفاده خواهد شد .xzgzip
نحوه فشرده سازی یک فایل یا دایرکتوری واحد #
دستور کلی برای فشردهسازی یک فایل یا دایرکتوری در لینوکس به صورت زیر است:
tar -czvf <archive name> </path/to/file/or/directory>
در اینجا معنی هر یک از این سوئیچها آمده است:
c– ایجاد آرشیو.z– بایگانی را از طریق آن اجرا کنیدgizp.v– فهرست کردن فایلها به صورت شفاهی.f– از یک فایل آرشیو مشخص استفاده کنید.
برای مثال، برای فشردهسازی /pepperدایرکتوری به یک آرشیو با نام egg.tar.gz، این دستور را اجرا کنید:
tar -czvf egg.tar.gz /pepper
خروجی مشابه زیر خواهد بود:
tar: Removing leading `/' from member names
/pepper/
/pepper/pepperAndegg.log
/pepper/pepperAndEgg.txt
/pepper/pepperandegg.log

اگر سوئیچ را حذف کنیم vو به جای آن از دستور استفاده کنیم tar -czf egg.tar.gz /pepper، خروجی شامل هر فایل نمیشود. در عوض، شبیه به این خواهد بود:
🇫🇷 سرور مجازی فرانسه 🇫🇷
tar: Removing leading `/' from member names
و اگر هیچ خطایی یا کاراکتری که نیاز به حذف از نام اعضا داشته باشد وجود نداشته باشد – برای مثال، اگر ما در حال فشردهسازی فایلها در دایرکتوری کاری فعلی خود باشیم – هیچ خروجی وجود نخواهد داشت.
توجه: بیش از یک راه برای مشخص کردن سوئیچها وجود دارد tar. متوجه خواهید شد که ما از قبل از مشخص کردن سوئیچهای -خود استفاده میکنیم. اگرچه این یک قرارداد رایج است، اما عموماً لازم نیست. همچنین کار خواهد کرد. همانطور که . ما در بقیه مثالهای خود به قراردادی که در اینجا استفاده کردیم پایبند خواهیم بود، اما به خاطر داشته باشید که بیش از یک راه برای مشخص کردن گزینهها وجود دارد .tartar czvf <archive name> </path/to/file/or/directory>tar -cf <archive name> -vz </path/to/file/or/directory>tar
نحوه فشردهسازی چندین فایل یا دایرکتوری در یک آرشیو واحد #
دستور کلی برای فشردهسازی یک فایل یا دایرکتوری در لینوکس به صورت زیر است:
tar -czvf <archive name> </path/to/file/or/directory1> </path/to/file/or/directory2> ... </path/to/file/or/directoryN>
برای مثال، برای فشردهسازی فایلها one.txt، two.mp4، و three.isoبه آرشیوی با نام egg.tar.gz، این دستور را اجرا کنید:
tar -czvf egg.tar.gz one.txt two.mp4 three.iso

نحوهی مستثنی کردن دایرکتوریها و فایلها هنگام بایگانی #
اگر یک دایرکتوری برای ایجاد آرشیو مشخص کنید، ممکن است بخواهید برخی فایلها را از آرشیو حذف کنید. این --excludeگزینه به شما امکان میدهد الگوهایی را برای حذف از آرشیو خود مشخص کنید. هر فایلی که با الگوهای ارسال شده به این --excludeگزینه مطابقت داشته باشد، در آرشیو tarایجاد شده گنجانده نخواهد شد.
دستور کلی برای حذف فایلها از tarبایگانی عبارت است از:
tar --exclude=<PATTERN> <Options> <archive name> </path/to/directory>
/pepperبرای مثال، فرض کنید این فایلها را در دایرکتوری خود داریم :
- یک.txt
- دو.mp4
- سه.ایزو
- چهار.لاگ
- خروجی.log
و ما میخواهیم همه چیز را به جز فایلهای .log در یک egg.tar.gzآرشیو فشرده کنیم. میتوانیم از این دستور استفاده کنیم:
tar --exclude='*.log' -czvf egg.tar.gz /pepper

در صورت نیاز، میتوانید چندین --excludeالگو را در یک دستور واحد مشخص کنید.
نحوه اضافه کردن فایلها به بایگانی موجود #
اگر یک آرشیو موجود دارید و میخواهید فایلهایی را به آن اضافه کنید، میتوانید از گزینههای -ror استفاده کنید --append. یک دستور کلی برای افزودن فایل به آرشیوهای .tar به صورت زیر است:
tar -rf <tar archive> </path/to/file>
با این حال، -rو با آرشیوهای فشرده سازگار نیستند. این بدان معناست که شما فقط میتوانید از آنها با فایلهای فشردهای که از طریق برنامههای فشردهسازی مانند ، ، یا --appendاجرا نکردهاید، استفاده کنید . اگر سعی کنید از یا روی یک آرشیو فشرده استفاده کنید، ممکن است خطایی مشابه زیر را مشاهده کنید:gzipbzip2xz-r--append
tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now
به دلیل این محدودیت و برخی دیگر از تفاوتهای ظریف -rو--append ، در بسیاری از موارد، ایجاد یک بایگانی جدید با فایلهای اضافی آسانتر است.
نحوه فهرست کردن محتویات یک بایگانی #
-tشما میتوانید با استفاده از گزینههای or ، محتویات یک آرشیو را فهرست کنید --list. دستور کلی برای فهرست کردن محتویات یک آرشیو به صورت زیر است:
tar -tvf <archive>
گزینههای -tand --list روی بایگانیهای فشرده و غیرفشرده کار میکنند.
برای مثال، برای فهرست کردن محتویات یک egg.tar.xzآرشیو در دایرکتوری کاری فعلی خود، این دستور را اجرا کنید:
tar -tvf egg.tar.xz

نحوه استخراج یک آرشیو #
tarسوئیچ ‘s -xبرای استخراج آرشیوها است. دستور کلی برای استخراج آرشیو در لینوکس عبارت است از:
tar -xf <archive>
این tar -xfدستور هم با فایلهای فشرده و هم با فایلهای فشرده نشده کار میکند.
برای مثال، برای استخراج یک egg.tar.gzآرشیو در دایرکتوری کاری فعلی، میتوانیم از این دستور استفاده کنیم:
tar -xf egg.tar.gz

نحوه استخراج یک آرشیو در یک دایرکتوری خاص #
در برخی موارد، ممکن است بخواهید فایلها را در دایرکتوری دیگری غیر از دایرکتوری کاری فعلی خود استخراج کنید. سوئیچ tar‘s -Cدر این مورد مفید است. دستور کلی برای استخراج یک آرشیو در یک دایرکتوری خاص عبارت است از:
tar -xf <archive> -C </path/to/destination>
برای مثال، برای استخراج egg.tar.gzآرشیو خود در /tmp/novinhostمیتوانیم از این دستور استفاده کنیم:
tar -xf egg.tar.gz -C /tmp/novinhost

نتیجه گیری #
حالا که اصول اولیه کار با را میدانید tar، میتوانید مانند یک حرفهای با “tarballs” کار کنید. به خاطر داشته باشید که tarانعطافپذیر است و میتوانید سوئیچهای مختلف را برای تولید نتایج متفاوت و تنظیم خروجی ترکیب کنید. برای بررسی عمیقتر ، به دفترچه راهنمای رسمی GNU tartar مراجعه کنید.
