باز کردن فایل های فشرده tar.gz. یا tar.bz2. روی لینوکس — راهنمای کاربردی

۱۱۷۳ بازدید
آخرین به‌روزرسانی: ۲۹ شهریور ۱۴۰۲
زمان مطالعه: ۵ دقیقه
باز کردن فایل های فشرده tar.gz. یا tar.bz2. روی لینوکس — راهنمای کاربردی

فایل‌های tar در واقع آرشیوهای فشرده هستند. زمانی که با توزیع‌های لینوکس مانند اوبونتو کار می‌کنید و یا حتی هنگامی که از ترمینال macOS استفاده می‌کنید، به طور مکرر با این فایل‌ها سر و کار خواهید داشت. در این مقاله روش استخراج فایل و یا untur کردن آن‌ها را با هم مرور می‌کنیم.

معنی tar.gz. یا tar.bz2. چیست؟

فایل‌هایی که پسوند tar.gz. یا tar.bz2. دارند فایل‌های آرشیو فشرده هستند. یک فایل با پسوند tar. صرفاً آرشیو غیر فشرده است، اما چنین فایل‌هایی به ندرت مشاهده می‌شوند.

بخش tar. در پسوند فایل ابتدای عبارت «tape archive» است و به همین دلیل است که این نوع از فایل‌ها به صورت فایل‌های tar نامیده می‌شوند. تاریخ پیدایش این نوع فایل به سال 1979 یعنی زمانی که دستور tar ایجاد شد و به مدیران سیستم امکان آرشیو کردن فایل‌ها روی یک نوار مغناطیسی را می‌داد باز می‌گردد. چهل سال بعد ما همچنان از دستور tar برای استخراج فایل‌های tar روی هارد درایوهای خودمان استفاده می‌کنیم. البته شاید هنوز فردی در جایی از این دنیا باشد که از دستور tar روی نوارهای مغناطیسی استفاده کند.

بخش دوم پسوند gz. یا bz2. نشان دهنده این است که آرشیو به ترتیب با استفاده از الگوریتم‌های فشرده‌سازی gzip یا bzip2 فشرده‌سازی شده است. دستور tar با هر دوی این فایل‌ها کار می‌کند و از این رو مهم نیست که از کدام روش فشرده‌سازی استفاده کرده باشید. این دستور هر کجا که پوسته Bash استفاده شده باشد قابل اجرا است. کافی است از دستور tar مناسب به همراه گزینه‌های مربوطه استفاده کنید.

استخراج فایل از فایل‌های tar

فرض کنید دو فایل از یک آلبوم موسیقی را دانلود کرده‌اید. یک فایل به صورت ukulele_songs.tar.gz و دیگری به صورت guitar_songs.tar.bz2 نامگذاری شده‌اند. این فایل‌ها در دایرکتوری Downloads قرار دارند:

استخراج فایل

در ادامه می‌خواهیم این آهنگ‌ها را از حالت فشرده استخراج کنیم:

tar -xvzf ukulele_songs.tar.gz

زمانی که فایل‌ها استخراج شدند، در پنجره ترمینال فهرست می‌شوند:

استخراج فایل

گزینه‌های خط فرمان

گزینه‌های خط فرمان استفاده شده به شرح زیر هستند:

  • x- اختصار Extract: بازیابی فایل‌ها از فایل tar.
  • v- اختصار Verbose: فایل‌هایی که در حال استخراج هستند را نمایش می‌دهد.
  • z- اختصار Gzip: از gzip برای نافشرده‌سازی فایل tar بهره می‌گیرد.
  • f- اختصار File: نام فایل tar که می‌خواهیم دستور tar با آن کار کند. پس از این گزینه باید نام فایل فشرده بیاید.

فایل‌های موجود در دایرکتوری را با دستور ls فهرست‌بندی کنید تا ببینید که یک دایرکتوری به نام Ukulele Songs ایجاد شده است. فایل‌های استخراج شده در این دایرکتوری قرار دارند.

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

استخراج فایل

اینک نوبت به استخراج ترانه‌های گیتار می‌رسد. به این منظور ما تقریباً از همان دستور قبلی استفاده می‌کنیم؛ به جز این که یک تغییر مهم اتفاق افتاده است. پسوند bz2. به ما اعلام می‌کند که این فایل‌ها با استفاده از دستور bzip2 فشرده‌سازی شده‌اند. این بار به جای گزینه z– باید از گزینه j– در دستور نافشرده‌سازی استفاده کنیم.

tar -xvjf guitar_songs.tar.bz2

استخراج فایل

این بار نیز فایل‌ها چنان که استخراج شده‌اند در ترمینال فهرست‌بندی می‌شوند. به بیان روشن‌تر گزینه‌های خط فرمان مورد استفاده برای دستور tar در مورد فایل‌های tar.bz2. به شرح زیر هستند:

  • x- اختصار Extract: بازیابی فایل‌ها از فایل tar.
  • v- اختصار Verbose: نمایش فایل‌های در زمان استخراج از لیست.
  • j- اختصار Bzip2: استفاده از bzip1 برای نافشرده‌سازی فایل‌های tar.
  • f- اختصار File: نام فایل tar که دستور tar قرار است با آن کار کند.

اگر فایل‌ها را در دایرکتوری Downloads فهرست کنیم، خواهیم دید که یک دایرکتوری دیگر به نام Guitar Songs ایجاد شده است.

استخراج فایل

انتخاب مکان استخراج فایل‌ها

اگر بخواهیم فایل‌ها را در مکانی به جز دایرکتوری جاری استخراج کنیم، می‌توانیم مکان مقصد را با استفاده از گزینه C– و در ادامه تعیین دایرکتوری مشخص کنیم.

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/

اکنون اگر به دایرکتوری Documents/Songs نگاه کنیم، می‌بینیم که دایرکتوری Guitar Songs در آنجا ایجاد شده است.

استخراج فایل

توجه داشته باشید که دایرکتوری مقصد باید از قبل موجود باشد، دستور tar در صورتی که دایرکتوری مقصد وجود نباشد، آن را ایجاد نخواهد کرد. اگر لازم است دستور tar ابتدا یک دایرکتوری ایجاد کرده و سپس فایل‌ها را در آن استخراج کند، می‌توانید از دستور زیر استفاده کنید:

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

گزینه p– به معنی parents باعث می‌شود که دستور mkdir یک دایرکتوری والد که موردنیاز است را ایجاد کند و بدین ترتیب مطمئن می‌شویم که دایرکتوری مقصد موجود است.

بررسی فایل‌های tar پیش از استخراج آن‌ها

تا به اینجا گام‌های استخراج فایل‌ها را به صورت نادیده و برحسب اطلاعات قبلی استخراج کرده‌ایم. البته می‌توان محتوای یک فایل tar را پیش از استخراج کردن با استفاده از گزینه t– مشاهده کرد. در این حالت معمولاً بهتر است که خروجی را از طریق دستور less به صورت pipe دربیاوریم.

tar -tf ukulele_songs.tar.gz | less

دقت کنید که ما نیازی به استفاده از گزینه z– برای لیست کردن فایل‌ها نداریم. ما تنها گزینه z– را زمانی اضافه می‌کنیم که فایل‌ها را از یک فایل tar.gz. استخراج کنیم. به طور مشابه، نیازی به استفاده از گزینه j– برای لیست کردن فایل‌ها در فایل tar.bz2 هم نداریم.

استخراج فایل

با اسکرول کردن روی خروجی می‌توانیم ببینیم که همه چیز درون فایل tar در واقع درون یک دایرکتوری به نام Ukulele Songs قرار دارد. درون این دایرکتوری فایل‌ها و دایرکتوری‌های دیگری وجود دارند.

استخراج فایل

همچنین می‌بینیم که دایرکتوری Ukulele Songs شامل دایرکتوری‌هایی است که به صورت Random Songs ،Ramones و Possibles نامگذاری شده‌اند.

برای استخراج همه فایل‌ها از یک دایرکتوری درون یک فایل tar می‌توانید از دستور زیر استفاده کنید. دقت کنید که مسیر درون علائم نقل قول قرار گرفته است، چون در مسیر از کاراکتر «فاصله» (space) استفاده شده است.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"

استخراج فایل

برای استخراج یک فایل منفرد کافی است مسیر و نام فایل را ذکر کنید:

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

استخراج فایل

می‌توان گزیده‌ای از فایل‌ها را با استفاده از کاراکترهای Wildcard استخراج کرد. در این حالت کاراکتر * به معنی هر رشته‌ای از کاراکترها و ? به معنی یک کاراکتر منفرد است. استفاده از کاراکترهای وایلدکارد نیازمند به‌کارگیری گزینه wildcards-- است:

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

استخراج فایل

استخراج فایل‌ها بدون استخراج دایرکتوری‌ها

اگر نمی‌خواهید ساختار دایرکتوری موجود در فایل tar روی هارد درایو شما ایجاد شود، می‌توانید از گزینه strip-components-- استفاده کنید. این گزینه نیازمند یک پارامتر عددی است. عددی که در این پارامتر تعیین می‌شود تعداد سطوحی از دایرکتوری‌ها که باید نادیده گرفته شوند را تعیین می‌کند. فایل‌های موجود در دایرکتوری‌های نادیده گرفته شده همچنان استخراج خواهند شد؛ اما ساختار دایرکتوری روی هارد درایو بازتولید نمی‌شود.

اگر گزینه strip-components=1-- را در فایل tar مثال خودمان استفاده کنیم، دایرکتوری فوقانی Ukulele Songs درون فایل tar روی هارد درایو مقصد ایجاد نمی‌شود. در این حالت، فایل‌ها و دایرکتوری‌هایی که در آن دایرکتوری استخراج خواهند شد مستقیماً در دایرکتوری مقصد استخراج می‌شوند.

tar -xvzf ukulele_songs.tar.gz --strip-components=1

استخراج فایل

تنها دو سطح از دایرکتوری درون فایل tar مثالی ما قرار دارند. بنابراین اگر از strip-components=2-- استفاده کنیم؛ همه فایل‌ها در دایرکتوری مقصد استخراج می‌شوند و هیچ دایرکتوری دیگری ایجاد نمی‌شود.

tar -xvzf ukulele_songs.tar.gz --strip-components=2

استخراج فایل

اگر نگاهی به صفحه راهنمای لینوکس (+) بیندازید، می‌بینید که tar یکی از دستورهایی است که دارای بیشترین گزینه‌های خط فرمان است. خوشبختانه این امر موجب شده است که بتوانیم فایل‌های tar.gz. و tar.bz2. را با میزان مناسبی از کنترل روی آن‌ها استخراج کنیم و به این منظور کافی است چند گزینه معدود را به خاطر بسپاریم.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۵ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
howtogeek
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *