سرفصل‌های آموزشی
آموزش لینوکس
فشرده‌سازی داده‌ها در لینوکس

فشرده‌سازی داده‌ها در لینوکس

معمولاً به دو دلیل فایل‌ها را فشرده‌سازی می کنند: اول آن که حجم کمتری از فضای هارد دیسک اشغال شود و دوم هم این که زمان به مراتب کمتری برای انتقال فایل‌ها اختصاص یابد. برای فشرده‌سازی فایل‌های در لینوکس، متدهای متعددی مورد استفاده قرار می‌گیرد که در ادامه با رایج ترین آن‌ها آشنا خواهیم شد:

کامند کاربرد gzip پرکاربردترین ابزار فشرده‌سازی فایل‌ها در لینوکس bzip2 فشرده کردن به مراتب بیشتر فایل‌ها نسبت به ابزار gzip xz اثربخش ترین ابزار فشرده‌سازی فایل از دید از دید فضای اختصاص یافته zip به منظور خارج کردن فایل‌های فشرده که در سایر سیستم عامل ها همچون ویندوز فشرده شده اند. tar ابزار tar معمولاً برای گروه بندی فایل‌ها در قالب یک آرشیو و فشرده‌سازی آن مورد استفاده قرار می گیرد.

روش‌های فوق الذکر هم از جهت زمان مورد نیاز برای فشرده‌سازی و هم از جهت حجم فضای اختصاص یافته به فایل فشرده شده با یکدیگر متفاوت اند. به طور کلی، روش‌هایی که بیشترین مقدار فشرده‌سازی را انجام می‌دهند مستلزم صرف زمان بیشتری برای فشرده‌سازی هستند اما در عین حل زمان خارج کردن فایل‌ها از حالت فشرده تفاوت چندانی مابین روش‌های مختلف ندارد.

آشنایی با ابزار gzip

حال که با روش‌های رایج فشرده‌سازی فایل در لینوکس آشنا شدیم، در ادامه قصد داریم ببینیم که با استفاده از ابزار gzip به چه شکل می‌توان اقدام به فشرده‌سازی فایل‌ها نمود:

کامند کاربرد * gzip این کامند کلیه ی فایل‌ها در دایرکتوری که در آن قرار گرفته‌ایم را فشرده می سازد؛ هر فایل فشرده شده پسوند gz. برایش در نظر گرفته می شود. gzip -r projectX کلیه ی فایل‌ها در دایرکتوری فرضی projectX را فشرده می سازد. gunzip foo این دستور کاربری شبیه به دستور gzip -d دارد؛ کاری که این دستورات انجام می‌دهند این است که یک فایل زیپ شده را از حالت فشرده خارج می سازند.

فرض کنیم روی دسکتاپ یک دایرکتوری داریم تحت عنوان sample که داخل آن دو فایل وجود دارد تحت عناوین file1 و file2؛ حال دستور زیر را وارد ترمینال می کنیم:

gzip -r sample/

اکنون هر دو فایل ما به فرمت زیپ درآمده و نام آن ها به file1.gz و file2.gz تبدیل شده اند. برای آن که این فایل ها از حالت زیپ خارج سازیم، وارد پوشه ی sample شده و دستور زیر را وارد می کنیم:

gunzip *

فشرده‌سازی داده‌ها با استفاده از ابزار bzip2

سینتکس کامند bzip2 مشابه ابزار gzip است اما الگوریتم فشرده‌سازی این ابزار متفاوت بوده به طوری می‌تواند فایل‌های به مراتب کم حجم تری ایجاد کند! اما در عین زمان بیشتری برای فرایند فشرده‌سازی را به خود اختصاص خواهد داد و معمولاً برای فایل‌های خیلی حجیم مورد استفاده قرار می‌گیرد. جدول زیر نشانگر کاربردهای رایج این ابزار است:

کامند کاربرد * bzip2 کلیه ی فایل‌های قرار گرفته در دایرکتوری که در آن قرار گرفته‌ایم را فشرده ساخته و پس از فرایند فشرده سازی، پسوند bz2. برای تک تک فایل‌ها در نظر می گیرد. bunzip2 * .bz2 این دستور مشابه bzip2 -d است به طوری که هر دو دستور کلیه ی فایل‌هایی با پسوند bz2. داخل دایرکتوری که داخل آن هستیم را از حالت فشرده خارج می سازند.

برای مثال، دایرکتوری sample که پیش از این ایجاد کردیم را مورد آزمایش قرار می دهیم؛ این بار، ابتدا وارد دایرکتوری sample شده سپس دستور زیر را وارد می سازیم:

bzip2 *

مشاهده می شود که دو فایل قرار گرفته در این پوشه به نام های file1.bz2 و file2.bz2 درآمده اند. برای خارج کردن این فایل ها از فرمت bz2. هم می توان از دستور زیر استفاده کرد:

bunzip2 * .bz2

مشاهده می شود که فایل ها از فرمت bz2. خارج می شوند.

فشرده‌سازی فایل‌ها از طریق ابزار xz

توسعه دهندگان اصلی کرنل لینوکس از این ابزار به منظور فشرده‌سازی فایل‌های آرشیو کرنل استفاده می‌کنند چرا که در حال حاضر خروجی این ابزار به منزله ی کم حجم ترین نسبت به سایر ابزارها است اما در عین حال از سرعت نسبتاً پایین‌تری در مقایسه با سایر روش‌ها برخوردار است. کاربرد این ابزار به شرح زیر است:

کامند کاربرد * xz کلیه ی فایل‌های قرار گرفته در دایرکتوری که در آن قرار گرفته‌ایم را فشرده ساخته و پس از فرایند فشرده سازی، پسوند xz. برای تک تک فایل‌ها در نظر می گیرد. xz foo فایلی تحت عنوان foo را فشرده ساخته و به foo.xz مبدل می‌سازد و پس از موفقیت آمیز بودن فرایند فشرده سازی، فایل foo را حذف می‌کند. xz -dk bar.xz فایل bar.xz را از حالت فشرده خارج ساخته و به bar مبدل می‌سازد و در صورت موفقیت آمیز بودن فرایند خارج سازی از حالت فشرده، فایل bar.xz را حذف می‌کند. xz -d *.xz هر فایل فشرده یی که داری پسوند xz. باشد را از حالت فشرده خارج می‌سازد.

برای تست این ابزار، مجدد از دایرکتوری sample و محتوایات آن استفاده خواهیم کرد؛ برای فشرده سازی دو فایل قرار گرفته در این دایرکتوری، دستور زیر را در ترمینال وارد می کنیم:

xz *

می بینیم که فایل های قبلی حذف شده و فایل های جدیدی با همان نام های قبلی اما با پسوند xz. ایجاد می شوند؛ برای خارج کردن فایل ها از فرمت فشرده هم از دستور زیر استفاده خواهیم کرد:

xz -d *.xz

این دستور، هر فایلی که دارای پسوند xz. باشد را از حالت فشرده خارج می سازد.

استفاده از ابزار zip در لینوکس

برنامه ی zip غالباً برای فشرده‌سازی فایل‌ها در لینوکس به کار گرفته نمی‌شود اما در بیشتر مواقع به منظور خارج کردن فایل‌های فشرده یی که در سایر سیستم عامل ها فشرده شده‌اند به حالت غیرفشرده، مورد استفاده قرار می‌گیرد. برخی از رایج ترین کامندهای این ابزار عبارتند از:

کامند کاربرد zip به برای زیپ کردن فایل های مد نظر مورد استفاده قرار می گیرد. unzip temp.zip کلیه ی فایل‌های قرار گرفته در فایل فشرده ی temp.zip را استخراج کرده و در همان پوشه یی که قرار داریم می‌ریزد.

برای روشن تر شدن کاربردهای ابزار zip، اقدام به فشرده سازی محتویات پوشه ی sample خواهیم کرد:

zip -r temp.zip sample/

در ترمینال، مسیر را به محل دسکتاپ تغییر داده سپس دستور فوق را اجرا می کنیم؛ کاری که دستور بالا انجام می دهد این است که کلیه محتویات دایرکتوری sample را داخل یک فایل زیپ تحت عنوان temp می ریزد. برای آن که فایل temp.zip را از حالت فشرده خارج سازیم هم می توانیم از دستور زیر استفاده نماییم:

unzip temp.zip

استفاده از ابزار tar در لینوکس برای فشرده‌سازی فایل‌ها

tar مخفف واژگان Tape Archive است و در گذشته برای آرشیو کردن فایل‌ها روی نوارهای مغناطیسی استفاده می‌شده است. این ابزار امکانی را در اختیار کاربران لینوکس قرار می‌دهد تا اقدام به فشرده سازی/خارج کردن از حالت فشرده بپردازند. برخی کاربردهای دستور tar عبارتند از:

کامند کاربرد tar xvf mydir.tar کلیه ی فایل‌های قرار گرفته در mydir.tar را داخل دایرکتوری mydir استخراج می‌کند. tar zcvf mydir.tar.gz mydir فایل آرشیوی می‌سازد و با استفاده از ابزار gzip آن را فشرده می‌کند. tar jcvf mydir.tar.bz2 mydir فایل آرشیوی می‌سازد و با استفاده از ابزار bz2 آن را فشرده می‌کند. tar Jcvf mydir.tar.x mydir فایل آرشیوی می‌سازد و با استفاده از ابزار xz آن را فشرده می‌کند. tar xvf mydir.tar.gz تمامی فایل‌های داخل mydir.tar.gz را داخل دایرکتوری mydir استخراج می‌کند.

آشنایی با خانواده ی دستوراتی که با حرف z شروع می‌شوند

زمانی که با فایل‌های فشرده سر و کار داریم، بسیاری از دستوراتی که برای کار با فایل‌های معمولی طراحی شده‌اند کارایی خود را از دست می‌دهند و می بایست از دستورات دیگری استفاده نماییم. این دستورات مکمل، دستوراتی هستند که حرف z ابتدای آن‌ها قرار دارد که از جمله دستورات کاربردی که با حرف z شروع می‌شوند، می‌توان به zcat، zless، zdiff و zgrep اشاره کرد. جدول زیر حاوی برخی از این دستورات به همراه کاربردهایشان است:

کامند کاربرد برای نمایش یک فایل فشرده شده $ zcat compressed-file.txt.gz برای نمایش صفحه به صفحه ی یک فایل فشرده شده $ zless .gz برای جستجو داخل یک فایل فشرده $ zgrep -i less test-file.txt.gz برای مقایسه کردن دو فایل فشرده شده $ zdiff filename1.txt.gz filename2.txt.gz 

    به خاطر داشته باشید
چنانچه ابزاری همچون zless را روی یک فایل غیر فشرده اعمال کنیم، این ابزار کماکان کار خواهد کرد.
online-support-icon