بحث فشردهسازی داده و فایل تو هر سیستمعاملی از جمله لینوکس بسیار مهمه؛ اما چرا دستورات فشردهسازی فایل در لینوکس مهمه؟ شاید بتونیم دوتا دلیل بارز رو برای اون نام ببریم: اول، اشغال حداقل فضای هارد دیسک و دوم، انتقال راحتتر و البته سریعتر دادهها. به همین دلیله که امروز همین موضوع رو برای مقاله بلاگ کندو انتخاب کردیم. مسئله اینجاست که همین کار واحد در سیستمعاملهای مختلف به یه شکل انجام نمیشه. لینوکس که بهعنوان یکی از محبوبترین سیستمعاملها شناخته میشه، نسبت به ویندوز روند متفاوتی رو دنبال میکنه.
از همین جهت دستورات فشرده سازی فایل در لینوکس با ویندوز فرق داره. پس کاربران لینوکس باید چه کاری بکنن؟ طی این مقاله شما میتونید دستورات فشرده سازی فایل در لینوکس رو یاد بگیرین و از این پس از شر فایلهای پرحجم کامپیوتر راحت بشین.اگه علاقه مند به یادگیری linux هستید، دوره آموزش لینوکس کندو رو اصلا از دست ندید!
چرا فشردهسازی فایل لازم است؟
قبل از اینکه به سراغ دستورات فشرده سازی فایل در لینوکس بریم، بهتره نگاه دقیقتری به خود این فرآیند، یعنی فشردهسازی داده بندازیم. گفتیم که با فشردهسازی فایل میتونیم فضای کمتری از هارد رو اشغال کنیم و ضمن اون فایلها رو سریعتر انتقال بدیم. فشردهسازی مزایا و قابلیتهای دیگهای هم داره. اگه بخواین دادهها رو به سرورهای دور بفرستین، مطمئنا جابجایی یه فایل جمعوجور و کمحجم خیلی راحتتر از دادههای زیاد و حجیمه.
یکی دیگه از قابلیتهای جالب بکارگیری دستورات فشرده سازی فایل در لینوکس اینه که شما میتونید به کمک اون دادههای قدیمی خودتون رو هم فشرده کنین. شاید بپرسین که این موضوع چه اهمیتی داره. فرض کنین فایلهایی دارین که به ندرت از اونها استفاده میکنین. خب، تو حالت عادی این دادهها حجم زیادی از هارد دیسک رو اشغال میکنن.
تو این شرایط شما میتونین با بکارگیری دستورات فشرده سازی فایل در لینوکس، اون رو compress یا فشرده کنین تا در آینده در صورت نیاز با استخراج یا Extraction فایل فشرده، مجددا از اون استفاده کنین. با انجام این کار هارد دیسک هم از آسیبهای ناشی از اشغالشدن حجم در امان میمونه.
انواع دستورات فشرده سازی فایل در لینوکس
با توجه به اینکه انواع مختلفی از دستورات فشرده سازی فایل در لینوکس وجود داره، روش کار هر یک از اونها هم نسبت به بقیه متفاوته. نه تنها روش کار بلکه حتی سطح و قابلیت فشردهسازی فایلی که دارن هم با همدیگه قابلمقایسه نیست. طی این مقاله ما 5 مورد از دستورات فشرده سازی فایل در لینوکس رو بررسی میکنیم:
- Tar
در گذشته برای آرشیو فایل روی نوارهای مغناطیسی از دستور tar (Tape Archive) استفاده میشد. بعلاوه باید بگیم که tar بطور ویژه یک کامند یا دستور فشردهسازی نیست. این به این معناست که فشردهسازی تنها یکی از قابلیتهای اونه. tar دستهای از فایلها رو تو قالب یه فایل قرار میده. سپس این فایل برای انتقال راحتتر دادهها و یا جهت تهیهی نسخه پشتیبان بکار میروه. تنظیمی تحت عنوان z compression در tar آن رو به یکی از دستورات فشردهسازی فایل در لینوکس تبدیل میکنه.
در ادامهی بکارگیری تنظیم z، tar از gzip برای فشردهسازی فایل استفاده میکنه. بعلاوه تفاوتی نداره چه برای فشردهسازی یه فایل و یا گروهی از فایلها از tar استفاده کنین؛ چون در هر صورت کار چندان پیچیده نیست. دستورات فشردهسازی فایل در لینوکس، اون هم با tar به اینصورته:
$ tar cfz bigfile.tgz bigfile
^ ^
| |
+- new file +- file to be compressed
Big file همون فایلیه که قصد فشردهکردن اون رو دارین و منظور از bigfile.tgz هم فایل جدیدیه که حاصل از فشردهسازی big file هست و با نام جدیدی که برای اون انتخاب کردین، ذخیره میشه.
لیست فایلها که شامل فایل اصلی و فایل فشردهشده هستن رو هم میتونید با دستور ls -l ببینین. بنابراین هر دو فایل باقی میمونن.
$ ls -l bigfile*
-rw-rw-r– 1 shs shs 103270400 Apr 16 16:09 bigfile-rw-rw-r– 1 shs shs 21608325 Apr 16 16:08 bigfile.tgz
بجای پسوند tgz میتونین از tar.gz هم استفاده کنین که فایل فشرده رو واضحتر نشون میده. اگه قصد دارین که بجای یه فایل، گروهی از فایلها رو فشرده کنین، دستورات فشردهسازی فایل در لینوکس مشابه دستور قبلیه. با این تفاوت که باید فایلهای موردنظر رو مشخص کنین:
$ tar cfz bin.tgz bin/*
^ ^
| +– files to include
+ new file
Zip
در بین دستورات فشردهسازی فایل در لینوکس، zip از جمله کامندهاییه که با بکارگیری اون، در نهایت فایل اصلی هم در کنار فایل جدید فشرده باقی میمونه. بعلاوه zip دستور پیچیدهای نداره. کافیه بدونید که آخرین آرگومان تو خط کامند zip هم مثل tar، فایل اصلیه. دستورات فشردهسازی فایل در لینوکس برای zip به این صورته:
$ zip ./bigfile.zip bigfile
updating: bigfile (deflated 79%)
$ ls -l bigfile bigfile.zip
-rw-rw-r– 1 shs shs 103270400 Apr 16 11:18 bigfile
-rw-rw-r– 1 shs shs 21606889 Apr 16 11:19 bigfile.zip
Gzip
فشردهسازی فایل و داده با استفاده از دستور gzip برخلاف اسمی که داره، ترسناک و سخت نیست، بلکه برعکس بهراحتی انجام میشه. اول از هر چیز باید عبارت gzip رو بنویسین و در ادامه نام فایلی که باید فشرده کنین رو بیارید؛ به همین سادگی.
اگه به یاد داشته باشین دستورات فشرده سازی فایل در لینوکس که قبل از این ذکر شدن، همگی در کنار فایل فشردهشده جدید، فایل اصلی رو هم نگه میداشتن؛ اما gzip این طور نیست. دستورات فشردهسازی فایل در لینوکس برای gzip، فایل جدید رو جایگزین فایل قبلی (اصلی) میکنه.
$ gzip bigfile$ ls -l bigfile*
-rw-rw-r– 1 shs shs 21606751 Apr 15 17:57 bigfile.gz
bzip2
bzip2 هم یکی دیگه از دستورات فشردهسازی فایل در لینوکس هست که درست مثل gzip طی روند فشردهسازی، فایل جدید رو جایگزین نسخهی اصلی میکنه. دستور یا کامند اجرای bzip2 از این قراره:
$ bzip bigfile$ ls -l bigfile*
-rw-rw-r– 1 shs shs 18115234 Apr 15 17:57 bigfile.bz2
xz
xz آخرین دستور از دستورات فشردهسازی فایل در لینوکس هست که طی این مقاله به اون میپردازیم. یکی از جدیدترین دستورات طراحیشده برای فشردهسازی داده xz هست که با ساخت فایل فشرده، اون رو بجای فایل اصلی ذخیره میکنه. یکی از تفاوتهای اون با تعدادی از دستورات فشردهسازی فایل در لینوکس، تو مدت زمان انجام عملیات روی فایلهای بزرگتره.
به عبارت دیگه زمان فشردهسازی فایل بزرگ در xz نسبت به متدهای دیگه، طولانیتر هست. با این وجود این به معنای ضعف اون نیست، اتفاقا xz روند قدرتمند و موثری رو به انجام میرسونه. تنها کاری که باید انجام بدید، نوشتن نام فایل اصلی در دستور xz هست. این دستور به این صورت انجام میشه:
$ xz bigfile
$ ls -l bigfile*
-rw-rw-r– 1 shs shs 13427236 Apr 15 17:30 bigfile.xz
مقایسه دستورات فشردهسازی فایل در لینوکس
برای اینکه راجع به استفادهی هر کدوم از این دستورات فشرده سازی فایل در لینوکس که گفته شدن، تصمیم درستی بگیرین، بهتره اونها رو از وجهههای مختلف با همدیگه مقایسه کنین:
- توانایی دستور در کاهش حجم فایل
وقتی از این منظر به 5 دستور بالا در فشردهسازی فایل نگاه کنیم، متوجه میشیم که از بین اونها xz موفقتر هست. به این دلیل که حجم فایل جدید تنها به 13 درصد از حجم فایل اصلی میرسه.
-rw-rw-r– 1 shs shs 103270400 Apr 16 14:01 bigfile
——————————————————
-rw-rw-r– 1 shs shs 18115234 Apr 16 13:59 bigfile.bz2 ~17%
-rw-rw-r– 1 shs shs 21606751 Apr 16 14:00 bigfile.gz ~21%
-rw-rw-r– 1 shs shs 21608322 Apr 16 13:59 bigfile.tgz ~21%
-rw-rw-r– 1 shs shs 13427236 Apr 16 14:00 bigfile.xz ~13%
-rw-rw-r– 1 shs shs 21606889 Apr 16 13:59 bigfile.zip ~21%
- مدت زمان انجام فشردهسازی
مدت انجام عملیات برای دستورات فشردهسازی فایل در لینوکس هم متفاوته. تو این بخش، زمان بهینه برای فشردهکردن فایلهای بزرگ رو میتونین ببینین:
command run-time
tar 4.9 seconds
zip 5.2 seconds
bzip2 22.8 seconds
gzip 4.8 seconds
xz 50.4 seconds
مطابق این بررسی و آمارگیری gzip، tar و zip سرعت بالایی تو فشردهکردن دادهها دارن.
- فایل جدید با فایل فشرده جایگزین میشود یا نه؟
قبلا هم به این موضوع پرداخته شد؛ اما بهتره این بار نگاه دقیقتری به 5 دستور گفتهشده کنار هم بندازیم. در روند فشردهسازی tar و zip فایل اصلی هم در کنار فایل جدید باقی میمونه. این در حالیه که gzip، bzip2 و xz فایل نهایی (فشردهشده) رو با نسخهی اصلی جایگزین میکنن.
سخن پایانی
از اونجایی که کار با لینوکس به مراتب با ویندوز فرق داره، گاهی کاربران در مواجهه با اون به مشکل برمیخورن. به خصوص اگه مسئلهی فشردهسازی فایل یا compress در میون باشه. به همین دلیل تلاش کردیم که تو این مقاله از کندو چند دستور از پرکاربردترین دستورات فشردهسازی فایل در لینوکس رو به شما معرفی کنیم و کار با اونها رو نیز آموزش بدیم. امیدواریم با بکارگیری محتوای این مقاله از بلاگ آموزشگاه مهندسی کندو دیگه مسئلهای از بابت فشردهسازی فایل در لینوکس نداشته باشین.