آیا تفاوت bzip2 ,gzip و xz را میدانید؟

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

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

الگوریتم deflate هم که در فشرده سازی صفحات وب استفاده میشه ترکیبی از دو الگوریتم هافمن و LZ77 هست.

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

با استفاده از برنامه های gzip ,bzip2 و xz در لینوکس میتونید فایلهاتون رو با الگوریتم مورد نظر فشرده کنید.

برنامه های gzip و bzip2 مولتی ترد نیستن، نسخه مولتی ترد اونها pigz و pbzip2

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

 

مقایسه سرعت و میزان فشرده سازی

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

به طور خلاصه

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

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

 

این مقایسه هم بین نسخه مولتی ترد برنامه ها هست

tar

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

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

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

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

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

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

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

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

یه راه دیگه استفاده از سوییچ a هست که نوع آرشیو مورد نظر رو بر اساس پسوند فایل تشخیص میده

 

برای استخراج باید سوییچ x  رو به همراه سوییچ نوع آرشیو ارسال کنیم

اگه تسخه tar سیستمتون بالاتر از 1.22 باشه فقط از سوییچ x استفاده میکنیم

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

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

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

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

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

و روش دوم

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

در برنامه pigz تعداد تردها با سوییچ p- مشخص میشه، اگه این سوییچ رو ارسال نکنید برابر تعداد هسته های CPU ترد ایجاد خواهد شد.

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

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

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

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

 

منابع

1 2

پاسخی بگذارید

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