با استفاده از دستور zip میتونیم فایلها و فولدرهامون رو فشرده کنیم و یا ازشون یک آرشیو بسازیم. zip در واقع پسوند فایلهای فشردهای هست که بهطور گسترده در همه سیستم عاملهای دنیا (مثل ویندوز، مک، لینوکس، سیمبیان، اندروید و ...) پشتیبانی میشه.
روش کلی استفاده از دستور zip به شرح زیر است:
$ zip [options] [archive] [files]
options: پارامترهای قابل استفاده.
archive: اسم فایل زیپ که قراره ایجاد بشه.
files: فایل(ها) و پوشه (ها) که تصمیم داریم فشردهاش کنیم.
تفاوت فشردهسازی با آرشیو کردن
آرشیو کردن به این معنی است یک تعداد فایل رو بدون اینکه حجمشون تغییر کنه در یک مکان جمعآوری میکنیم، مثلا حاصل جمعآوری ۲۰ فایل ۱۰۰ کیلوبایتی، یک فایل ۲۰۰۰ کیلوبایتی هست. ولی فشردهسازی علاوه بر آرشیو کردن، بسته به فایل اصلی باعث کم شدن مقداری از حجم فایل آرشیو میشه.
فشردهسازی یک فایل
matrix@matrix-desktop:~/Pictures$ ls --group-directories-first -lh total 752K drwx------ 2 matrix matrix 36K Feb 11 18:49 Attractive drwx------ 6 matrix matrix 4.0K Feb 11 18:51 Face drwxrwxr-x 4 matrix matrix 4.0K Feb 2 02:15 Icon drwxrwxr-x 3 matrix matrix 4.0K Feb 15 22:47 Other drwxrwxr-x 2 matrix matrix 4.0K Feb 15 23:03 svg drwxrwxr-x 2 matrix matrix 148K Feb 14 20:30 Wallpaper -rw------- 1 matrix matrix 46K Nov 14 2011 amarok.svg -rw------- 1 matrix matrix 23K Nov 14 2011 chromium.svg -rw------- 1 matrix matrix 22K Nov 14 2011 facebook.svg -rw------- 1 matrix matrix 240K Nov 14 2011 gimp.svg -rw------- 1 matrix matrix 46K Nov 14 2011 gnome-status.svg -rw------- 1 matrix matrix 77K Nov 14 2011 gnomine.svg -rw------- 1 matrix matrix 81K Nov 14 2011 wallpaper.svg matrix@matrix-desktop:~/Pictures$ zip gimp.zip gimp.svg adding: gimp.svg (deflated 61%)
مثال بالا یک فایل زیپ با نام gimp.zip ساخته و فایل gimp.svg رو بهش اضافه میکنه. همونطور که میبینید حجم فایل فشرده شده ۶۱ درصد کمتر از فایل اصلی هست.
فشردهسازی چند فایل
برای فشردهسازی چند فایل کافیه با یک فاصله اونها رو از هم جدا کنیم، همینطور میتونیم از wildcardها استفاده کنیم:
matrix@matrix-desktop:~/Pictures$ zip svg.zip *.svg adding: amarok.svg (deflated 72%) adding: chromium.svg (deflated 76%) adding: facebook.svg (deflated 72%) adding: gimp.svg (deflated 61%) adding: gnome-status.svg (deflated 72%) adding: gnomine.svg (deflated 81%) adding: wallpaper.svg (deflated 76%)
مثال بالا یک فایل زیپ با عنوان svg.zip ساخته و تمام فایلهایی که پسوندشون svg هست رو بهش اضافه میکنه. مقدار فشردهسازی هم جلوی اسم هر فایل نوشته.
فشردهسازی پوشهها با استفاده از پارامتر r-
برای فشرده کردن یک پوشه کافیه اسم اون پوشه رو بنویسین:
matrix@matrix-desktop:~/Pictures$ zip -r folder.zip svg adding: svg/ (stored 0%) adding: svg/gnome-status.svg (deflated 72%) adding: svg/facebook.svg (deflated 72%) adding: svg/amarok.svg (deflated 72%) adding: svg/gimp.svg (deflated 61%) adding: svg/gimp.zip (stored 0%) adding: svg/wallpaper.svg (deflated 76%) adding: svg/chromium.svg (deflated 76%) adding: svg/gnomine.svg (deflated 81%)
تعیین میزان فشردهسازی با استفاده از عددهای ۰ الی ۹
برای اینکه مشخص کنیم فایل مورد نظر تا چه حدی فشرده بشه میتونیم از عددهای ۰ الی ۹ استفاده کنیم، عدد ۰ باعث میشه فایل خروجی اصلا فشرده نشه و فقط آرشیو تهیه میکنه و عدد ۹ بیشترین میزان فشردهسازی رو اعمال میکنه.
matrix@matrix-desktop:~/Pictures$ zip -0 fb.zip facebook.svg adding: facebook.svg (stored 0%) matrix@matrix-desktop:~/Pictures$ zip -9 fb.zip facebook.svg updating: facebook.svg (deflated 72%)
نکته: اگر توجه کنید دستور اول فایل fb.zip رو ایجاد کرد و facebook.svg رو بهش اضافه کرد، وقتی دستور دوم رو زدیم فایل facebook.svg داخل fb.zip بهروز شد و میزان فشردهسازیش تغییر کرد، پس دستور zip فایل رو رونوشت نمیکنه بلکه بهروز میکنه. همینطور اگر یک با یک دستور دیگه، یک فایل دیگه هم به fb.zip نسبت بدیم، محتوای فعلی رو نگه میداره و فایل جدید رو به آرشیو اضافه میکنه.
رمزنگاری بر روی آرشیوها
هرچند الگوریتم استفاده شده در فایلهای zip از پیچیدگی چندانی برخوردار نیست و با یک جستجوی ساده در وب ابزارهای فراوانی جهت رمزگشایی فایلهای زیپ مییابیم، به دو صورت میتوان بر روی فایلهای فشرده گذرواژه تعیین کرد:
۱. استفاده از پارامتر P-
matrix@matrix-desktop:~/Pictures$ zip -P 30li gm.zip gnomine.svg adding: gnomine.svg (deflated 81%)
در مثال بالا یک فایل زیپ داریم با گذرواژه 30li.
اخطار: سعی کنید برای رمزگذاری بر روی آرشیوها از پارامتر P-
استفاده نکنید چرا که مستقیما داخل دستور تایپ میشه و هر کسی با مرور تاریخچه شل مورد استفادتون میتونه به گذرواژه پی ببره!
۲. استفاده از پارامتر e-
matrix@matrix-desktop:~/Pictures$ zip -e gs.zip gnome-status.svg Enter password: Verify password: adding: gnome-status.svg (deflated 72%)
حالا یک فایل gs.zip رمزنگاری شده داریم و کسی هم نمیفهمه رمزش چیه! :)