آیا تفاوت bzip2 ,gzip و xz را میدانید؟ – معرفی و مقایسه برنامه های فشرده سازی در لینوکس

در لینوکس ما برنامه های gzip, bip2 و xz رو برای فشرده سازی داریم.

gzip از الگوریتم LZ77 و bzip2 از الگوریتم Burrows-Wheeler و xz از الگوریتم LZMA استفاده میکنه. الگوریتم deflate هم که در فشرده سازی صفحات وب استفاده میشه ترکیبی از دو الگوریتم هافمن و LZ77 هست.

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

gzip

برای فشرده سازی در gzip داریم

  • k- حذف نکردن فایل ورودی بعد از فشرده سازی یا استخراج
  • f- جایگزین کردن فایل خروجی اگر وجود داشته باشد

برای فشرده سازی چند فایل یا دایرکتوری میتونید آدرس اون رو آخر دستور اضافه کنید

برای استخراج از سوییچ d- استفاده میکنیم

gzip به صورت پیش فرش مولتی ترد نیست، برنامه pigz نسخه مولتی ترد این برنامه هست، سوییچ p- تعداد تردها برای استفاده در فشرده سازی یا استخراج رو مشخص میکنه، اگه مقداری نزارید برنامه به تعداد هسته های cpu ترد استفاده میکنه.

برای به دست آوردن تعداد هسته های cpu از دستور  nproc --all استفاده کنید.

اینجا ما ۳۲ میزاریم

مثل gzip میتونید چند فایل و یا دایرکتوری رو برای ورودی انتخاب کنید

برای فشرده سازی دایرکتوری باید سوییچ r- رو اضافه کنید

برای استخراج از سوییچ d- استفاده میکنیم

bzip2

برای فشرده سازی در bzip2 داریم

  • z- فشرده سازی
  • سوییچ های k و f مانند gzip هست.

برای استخراج از سوییچ d- استفاده میکنیم

pbzip2 نسخه مولتی ترد bzip2 هست، سوییچ p- تعداد تردها برای استفاده در فشرده سازی یا استخراج رو مشخص میکنه، اگه مقداری نزارید برنامه به تعداد هسته های cpu ترد استفاده میکنه. توجه کنید که تعداد تردها رو بدون فاصله بعد از سوییچ قرار بدید.

برای استخراج از سوییچ d- استفاده میکنیم

در صورت اینکه تعداد ترد رو برای pigz و pbzip2 مشخص نکنید برنامه به تعداد هسته های cpu ترد ایجاد میکنه.

xz

برای فشرده سازی در xz داریم

برای نهایت فشرده سازی سوییچ e- یا extreme– رو اضافه کنید.

  • سوییچ های z ,k و f مانند gzip هست.

برای استخراج از سوییچ d- استفاده میکنیم

xz قابلیت فشرده سازی و استخراج به صورت مولتی ترد رو هم داره، سوییچ T- تعداد تردها رو مشخص میکنه، اگه ۰ بزارید یعنی برنامه به تعداد هسته های cpu ترد استفاده کنه.

برای استخراج هم از سوییچ d- استفاده میکنیم

برای اینکه میزان فشرده سازی رو در برنامه های بالا مشخص کنید باید عدد اون رو به عنوان سوییچ اضافه کنید، 1 برای کمترین میزان فشرده سازی و 9 برای بیشترین مقدار فشرده سازی، مقدار پیش فرض 6 هست.

برای مقایسه این الگوریتم ها ما یک فایل متنی با حجم ۲.۱ گیگابایت رو با هرکدوم از این برنامه ها فشرده و دوباره استخراج کردیم که این نتایجش هست

xz multithread xz pbzip2 bzip2 pigz gzip
2100 MB 2100 MB  2100 MB  2100 MB  2100 MB 2100 MB input file size
 800 MB  800 MB 820 MB  820 MB 990 MB  990 MB output file size
549 s  1745 s  71 s  201 s  34 s  123 s compress time
43 s 44 s 50 s 99 s 12 s 26 s decompress time

 

به طور خلاصه

  • gzip کمترین درصد فشرده سازی، سریعترین عملکرد در فشرده سازی، سریعترین عملکرد در استخراج فایل فشرده شده
  • bzip2 مقام دوم در درصد فشرده سازی ، مقام دوم در مدت زمان فشرده سازی با اختلاف زیاد نسبت به مقام سوم یعنی xz، مقام سوم در مدت زمان استخراج فایل فشرد شده
  • xz بیشترین درصد فشرده سازی، کندترین عملکرد در فشرده سازی، مقام دوم در مدت زمان استخراح فایل فشرده شده

اینجا هم مقایسه دیگه ای بین این الگوریتمها انجام شده

 

tar

برای فشرده سازی و در کل مدیریت آرشیو ها، بهتره به جای برنامه های بالا از tar استفاده کنید که هر سه الگورینم بالا رو داره

برای فشرده سازی داریم

  • f- مشخص کردن نام فایل خروجی
  • a- انتخاب برنامه فشرده ساز از روی پسوند فایل خروجی
  • c- ساختن فایل فشرده – فشرده سازی
  • v- نمایش لیست فایلهایی که در حال پردازش هست

بعد از اینکه نام فایل خروجی رو مشخص کردیم میتونیم هر چند تا فایل یا دایرکتوری رو برای فشرده سازی انتخاب کنیم برای مثال

tar برخلاف برنامه های بالا به صورت پیش فرض فایل رو بعد از فشرده سازی پاک نمیکنه

فایل خروجی ما data.tar.gz هست چون سوییچ a- رو وارد کردیم برنامه، gzip رو از پسوند فایل تشخیص میده به این صورت که

  • gz برای gzip
  • bzip2 برای bzip2
  • xz هم برای xz

یه راه دیگه مشخص کردن دقیق نوع برنامه فشرده ساز هست

  • z برای gzip
  • j برای bzip2
  • J برای xz

دستور اول رو به این صورت هم میشه نوشت

برای استخراج هم از سوییچ x استفاده میکنیم

برای دیدن محتویات آرشیوی که با tar درست شده

  • t- لیست کردن فایل های داخل آرشیو
  • f- مشخص کردن نام فایل ورودی

برای استخراج فایل فشرده شده در یک دایرکتوری خاص هم  از سوییچ C- استفاده میکنیم

tar مولتی ترد نیست اما میشه کاری کرد که از یک برنامه خاص برای فشرده سازی و استخراج استفاده کنه یعنی از برنامه های pigz و pbzip2

روش اول استفاده از سوییچ I , –use-compress-program- هست

و روش دوم

وقتی خروجی رو – میزارید یعنی تو stdout قرار بده که با اپراتور پایپ ارسال میشه به برنامه فشرده ساز

tar فقط آرشیو هایی که توسط خودش ایجاد شده رو میتونه پردازش کنه

برای اطلاعات بیشتر راهنمای رسمی tar رو ببینید.

 

منابع

1 2

جستجو در کل مطالب سایت

نوشته های مشابه