لینوکس، عشق، برنامه نویسی

لینوکس، عشق، برنامه نویسی

در این وبلاگ مطالبی درباره سیستم عامل لینوکس و همچنین درمورد برنامه نویسی و کامپیوتر مینویسم.

به نام خدا

  

در این مقاله سعی میکنم توضیحات کاملی درباره فایل tar و gz که در لینوکس خیلی استفاه میشه بدم. حتما شما هم در لینوکس با فایل هایی با این اسم برخورد کردین،   my file.tar.gz   اگر می خواید بدونید که منظور از tar و gz چیه، ادامه ی مقاله رو بخونید. (البته این نکته رو همینجا بگم که اون دوتا نقطه ای که در اسم فایل میبینید، جزو اسم فایل هستند و پسوند محسوب نمیشن، چون در لینوکس، بر خلاف ویندوز، چیزی به نام پسوند وجود نداره و فایل ها بر اساس پسوند شناسایی نمیشن)

 

 

فایل tar چیست ؟

اول اینو بگم که tar، مخفف tape archive هست و اسمش از به هم چسباندن حروف اول دو کلمه تشکیل شده t)ape (ar)chive).

فایل های tar، یک نوع فایل archive ( بخوانید آرکایو) هستند که برای ذخیره کردن سایر فایل ها درون خودشون به کار می روند(دقیقا مانند یک مخزن، که آب رو درون خودش ذخیره میکنه)، و هر زمان که لازم شد، میتونید فایل های درون فایل tar رو اکسترکت کنید (دقیقا مانند فایل های rar که در ویندوز استفاده میشه).

فرض کنید که شما 80 تا فایل jpg دارید و می خواید همشو به دوستتون بفرستید(یا از طریق ایمیل و یا از هر طریق دیگه ای)، یک راه حل اینه که بیاید دونه دونه این فایل هارو بفرستید به دوستتون (که این کار منطقی نیست و وقت زیادی از شما میگیره)، راه حل دوم اینه که همه ی اون 80 تا عکس رو تبدیل به یک فایل tar بکنید و برای دوستتون بفرستید( این کار منطقیه، چون هم راحته و هم وقت کمتری می گیره).

از فایل های tar به منظور back up گرفتن نیز استفاده میشه، فرض کنید که شما یک پارتیشن دارید (و یا یک پوشه، فرقی نداره)، و می خواید از کل محتویات اون پارتیشن یا پوشه بک آپ تهیه کنید، برای این منظور میتونید همه ی محتویات مورد نظرتون رو بریزید داخل یک فایل tar و هر زمان که دوس داشتید، محتویات فایل tar رو اکسترکت کنید (به اکسترکت کردن فایل های tar اصطلاحا untar نیز گفته می شود).

در سیستم های لینوکسی، فایل های tar معروفترین نوع archive هستند (در ویندوز، فایل های rar معروف هستن). فایل tar در ابتدا در سال 1979  برای سیستم های یونیکسی ساخته شد (طبق اطلاعات ویکیپدیا) و بعد ها در سیستم عامل لینوکس هم به طور گسترده مورد استفاده قرار گرفت.

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

 

 gz چیست؟  

gz مخفف gzip هست. فایل های gzip برای 1- ذخیره کردن سایر فایل ها درون خود و  2- فشرده سازی اطلاعات استفاده میشه. gzip از واژه ی GNU Zip برگرفته شده. این سه واژه رو (gz، gzip، GNU Zip ) با همدیگه قاطی نکنید. نوع فایل ما gzip هست، در واقع فرمت فایل gzip هست، ولی در اسم گذاری فایل، برای اینکه مشخص بشه که نوع فایل gzip هست، از واژه ی gz استفاده میکنم، در واقع استفاده از واژه ی gz برای راحتی کار خودمون هست وگرنه سیستم عامل لینوکس برای تشخیص نوع فایل، احتیاجی به اسم فایل نداره.  

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

حالا سوالی که برای شما پیش میاد اینه:

سوال: در بالا گفته شد که فایل gzip برای ذخیره کردن سایر فایل ها درون خود و فشرده کردن اونها استفاده میشه، پس چه لزومی هست که ابتدا فایل هارو بریزیم داخل فایل tar و بعدش فایل tar رو تبدیل کنیم به gzip تا فشرده بشه؟ از همون اول همه ی فایل هامون رو بریزیم داخل gzip تا هم فشرده بشه و هم تبدیل به یک فایل بشه

جواب: علتش اینه که فرمت gzip محدودیت داره و نمیتونید چندین فایل رو همزمان تبدیل به یک فایل gzip بکنید، مگر اینکه، ابتدا تمام فایل های مورد نظرتون رو تبدیل به فایل gzip بکنید سپس چندین فایل gzip رو تبدیل به یک فایل gzip بکنید. مثلا اگه سه تا فایل متنی به این شکل داشته باشید، file1 file2 file3، ابتدا همشو تبدیل به فایل gzip میکنید، file1.gz file2.gz file3.gz  ، بعدش این سه فایل gzip رو تبدیل به یک فایل gzip کنید (که در این صورت، فایل های file2.gz و file3.gz به فایل file1.gz اصطلاحا concatnate میشن، ینی می چسبن و موقع اکسترکت کردن هم بصورت بهم چسبیده اکسترکت میشن انگار که اون سه تا فایل از اول یک فایل واحد بودن). به همین دلیل، فایل gzip معمولا برای فشرده کردن یک فایل استفاده میشه.

بخاطر این محدودیت هایی که در بالا گفته شد، شیوه ی متداول به این شکل هست که ابتدا تمام فایل های مورد نیاز خودمون رو میریزیم داخل یک فایل tar (تبدیل به یک فایل tar میکنیم) و سپس اون فایل tar رو تبدیل به فایل gzip میکنیم تا فشرده بشه و حجمش کم بشه.

  

   

شیوه ی ساخت و اکسترکت کردن فایل های  tar و  tarball چگونه هست؟ 

برای ساختن و اکسترکت کردن فایل های tarball، هم میشه از برنامه های گرافیکی استفاده کرد و هم از دستورات ترمینال. در زیر من دستوررات ترمینال برای انجام این کار رو شرح میدم. در ترمینال لینوکس، دستوری وجود داره به نام tar، تمام کارهامون رو با این دستور و سوییچ های اون به راحتی انجام خواهیم داد. این دستور سوییچ های خیلی زیادی داره، پیشنهاد میکنم دستور man tar رو در ترمینال بزنید و همشو بخونید. من تعداد کمی از این سوییچ ها رو توضیح میدم

 

  • سوییچ c: سی مخفف create هست. برای ایجاد فایل تار حتما باید این سوییچ رو به کار ببرید
  • سوییچ f: این سوییچ رو باید بزارید و بعدش یک نام تعیین کنید تا به عنوان نام فایل تولید شده قرار بگیره
  • سوییچ z: این سوییج به دستور tar میگه که بعد اینکه فایل نهایی رو تولید کردی، تبدیل به فایل gzip اش کن تا فشرده بشه ( اگه این سوییچ رو نزارید، فقط فایل tar تولید میشه و دیگه فشرده نمیشه)
  • سوییچ x: برای اکسترکت کردن ( که بهش untar کردن نیز گفته میشه ) استفاده میشه

       

ابتدا یک پوشه ایجاد کنید ( داخل هوم یا روی دسکتاپ، فرقی نداره )، سپس  دو فایل دلخواه رو به داخل این پوشه کپی پیست کنید، یا میتونید دو فایل متنی توش ایجاد کنید، حالا ترمینال رو باز کنید و برید داخل پوشه. ( من توی هوم یه پوشه به نام casper ایجاد کردم و دوتا فایل متنی با نام های file1 و file2 توش ایجاد کردم). یه دستور ls میزنم و خروجیش رو میزارم اینجا :

farhad@kubuntu:~/casper$ ls
file1  file2

برای تبدیل اون دو فایل به فایل tar، کافیه دستور زیر رو بزنید:

farhad@kubuntu:~/casper$ tar cf newfile.tar file1 file2

(می تونستم بجای newfile.tar فقط بنویسم newfile، هیچ مشکلی ایجاد نمیکرد، ولی گذاشتنش باعث راحتی خودمون میشه)

حالا یه دستور ls میزنم و مشاهده میکنید که فایل newfile.tar ساخته شده

farhad@kubuntu:~/casper$ ls
file1  file2  newfile.tar

(دقت کنید که فایل ایجاد شده فقط یه فایل tar هست و tarball نیست، چون من از سوییچ z استفاده نکردم، حالا میخام همون دستور بالا رو بکار ببرم و اینبار سوییچ z رو هم استفاده کنم و یک فایل tarball بسازم)

farhad@kubuntu:~/casper$ tar czf newfile.tar.gz file1 file2

در رابطه با این دستور،  دو  نکته رو می خوام بگم.

۱- اول اینکه موقع نوشتن سوییچ ها، حتما باید سوییچ f در اخر نوشته بشه.

۲- دوم اینکه، وقتی از سوییچ z استفاده کردیم، بهتره به اخر اسم فایل، یه .gz هم اضافه کنیم تا برای خودمون قابل تشخیص باشه که نوع این فایل gzip هست، ولی اضافه نکنیم هم مشکلی پیش نمیاد، میتونیم بجای newfile.tar.gz هر اسم دیگه ای بزاریم، مثلا newfile.tar و یا newfile و یا newfile.gz

حالا اگه دستور بالا رو اجرا کنید میبینید که یه فایل با نام newfile.tar.gz ساخته شده

اینجا لازمه من به یک باگ در نرم افزار گرافیکی پیشفرض (نرم افزار Ark) در کوبونتو ۱۶٫۰۴ که مسعول باز کردن فایل های tar و tarball هست اشاره کنم. اگه موقع استفاده از دستور بالا، بجای  newfile.tar.gz ، هر اسم دیگه ای بزارید، نرم افزار نمیتونه فایل رو درست باز کنه و محتویاتش رو نشون بده. (البته دستور tar هیچ مشکلی با این قضیه نداره و میتونه باز کنه فایلو).

ولی شما برای اینکه نوع یک فایل رو بدونید کافیه دستور   file esme_file رو بزنید تا نوع فایل رو بهتون نشون بده.

بزارید یک بار با هم امتحان کنیم:

من دوباره دستور بالا رو بکار میبرم ولی این بار میخام بجای newfile.tar.gz ، اسم فایل رو newfile بزارم. به این شکل:

farhad@kubuntu:~/casper$ tar czf newfile file1 file2

اینتر رو میزنم تا دستور اجرا بشه و فایل ساخته بشه. حالا روی فایل newfile دوبار کلیک کنید تا نرم افزار ark اونو باز کنه. همونطور که می بینید نمیتونه محتویاتش رو به درستی نشون بده. حالا برای اینکه مطمعن بشیم newfile از نوع gzip هست کافیه این دستور رو بزنیم:

farhad@kubuntu:~/casper$ file newfile

و خروجیش میشه این:

newfile: gzip compressed data, last modified: Sun Sep 11 15:36:48 2016, from Unix

همونطور که میبینید، با اینکه اسم فایل ما newfile هست و پسوند .gz نداره، ولی دستور بالا همچنان فایل مارو به عنوان یه فایل gzip میشناسه.

 

 

نحوه ی اکسترکت کردن فایل های tar و tarball چگونه هست؟ 

اکسترکت کردن این گونه فایل ها هم با دستور tar به راحتی انجام میشه. با استفاده از سوییچ x به راحتی میایم و فایل newfile که در بالا ایجاد کردیم رو اکسترکت میکنیم:

farhad@kubuntu:~/casper$ tar xf newfile

یک نکته رو بگم: با سوییچ x هم میشه فایل های tar و هم فایل های tarball رو اکسترکت کرد

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

بازنشر این مطلب فقط با ذکر منبا مجاز است.

نظرات (۱)

ممنون داداش
پاسخ:
سلام، خاهش میکنم

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی