| ZIP(1) | General Commands Manual | ZIP(1) |
نام (NAME)
zip - بستهبندی و فشردهسازی (آرشیو کردن) فایلها
خلاصه دستور (SYNOPSIS)
zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b path] [-n suffixes] [-t date] [-tt date] [zipfile [file ...]] [-xi list]
zipcloak (به صفحه راهنمای مجزا مراجعه کنید)
zipnote (به صفحه راهنمای مجزا مراجعه کنید)
zipsplit (به صفحه راهنمای مجزا مراجعه کنید)
نکته: پردازش خط فرمان در zip جهت پشتیبانی از گزینههای طولانی و مدیریت یکپارچهتر تمام گزینهها و آرگومانها تغییر یافته است. ممکن است برخی از دستورات قدیمی که به رفتارهای متناقض پیشین خط فرمان متکی بودند، دیگر کار نکنند.
توضیحات (DESCRIPTION)
دستور zip یک ابزار فشردهسازی و بستهبندی فایل برای Unix، VMS، MSDOS، OS/2، Windows 9x/NT/XP، Minix، Atari، Macintosh، Amiga و Acorn RISC OS است. این ابزار مشابه ترکیبی از دستورات یونیکس tar(1) و compress(1) بوده و با PKZIP (ابزار ZIP نوشته Phil Katz برای سامانههای MSDOS) سازگار است.
برنامه مکمل (unzip(1)) آرشیوهای zip را استخراج و بازگشایی میکند. برنامههای zip و unzip(1) میتوانند با آرشیوهای ایجادشده توسط PKZIP کار کنند (با پشتیبانی از اغلب قابلیتهای PKZIP تا نسخه 4.6). همچنین PKZIP و PKUNZIP میتوانند با آرشیوهای ایجادشده توسط zip کار کنند (با چند استثنا، بهویژه آرشیوهای جریانی، هرچند تغییرات اخیر در استاندارد فایل zip ممکن است سازگاری بهتری فراهم کند). برنامه zip نسخه 3.0 با PKZIP 2.04 سازگار است و همچنین از پسوندهای Zip64 مربوط به PKZIP 4.5 پشتیبانی میکند که امکان فراتر رفتن اندازه آرشیو و همچنین فایلها از محدودیت پیشین ۲ گیگابایت (در برخی موارد ۴ گیگابایت) را فراهم میسازد. دستور zip همچنین در صورتی که کتابخانه bzip2 هنگام کامپایل گنجانده شده باشد، از فشردهسازی bzip2 نیز پشتیبانی میکند. توجه داشته باشید که PKUNZIP 1.10 نمیتواند فایلهای ایجادشده توسط PKZIP 2.04 یا zip 3.0 را استخراج کند. برای استخراج آنها باید از PKUNZIP 2.04g یا unzip 5.0p1 (یا نسخههای جدیدتر) استفاده کنید.
برای مشاهده مثالهایی از کاربردهای متداول zip، بخش مثالها (EXAMPLES) را در انتهای این صفحه ببینید.
آرشیوهای حجیم و Zip64. دستور zip بهطور خودکار از پسوندهای Zip64 استفاده میکند زمانی که فایلهای بزرگتر از ۴ گیگابایت به آرشیو اضافه شوند، یک آرشیو حاوی مدخلهای Zip64 بهروزرسانی شود (اگر آرشیو نهایی همچنان به Zip64 نیاز داشته باشد)، اندازه کل آرشیو از ۴ گیگابایت فراتر رود، یا تعداد مدخلهای درون آرشیو از حدود ۶۴ هزار بیشتر شود. همچنین Zip64 برای آرشیوهایی که از ورودی استاندارد جریان مییابند استفاده میشود زیرا اندازه چنین آرشیوهایی از قبل مشخص نیست، اما گزینه -fz- میتواند برای اجبار zip به ایجاد آرشیوهای سازگار با PKZIP 2 (تا زمانی که به پسوندهای Zip64 نیازی نباشد) به کار رود. برای استخراج فایلهایی که از پسوندهای Zip64 استفاده میکنند، باید از یک unzip سازگار با PKZIP 4.5، مانند unzip 6.0 یا جدیدتر استفاده نمایید.
علاوه بر این، آرشیوهای جریانی، مدخلهای رمزگذاریشده با رمزگذاری استاندارد، یا آرشیوهای چندبخشی ایجادشده با گزینه توقف ممکن است با PKZIP سازگار نباشند، زیرا از توصیفکنندههای داده (data descriptors) استفاده میکنند و PKZIP در زمان نگارش این مستند از آنها پشتیبانی نمیکرد (اگرچه تغییرات جدید در استاندارد zip منتشرشده توسط PKWare اکنون شامل پشتیبانیهایی از قالب توصیفکننده داده مورد استفاده zip است).
Mac OS X. گرچه نسخههای قبلی مک پورت اختصاصی zip خود را داشتند، اما zip از Mac OS X به عنوان بخشی از پورت یونیکس پشتیبانی میکند و اکثر قابلیتهای یونیکس اعمال میشوند. ارجاعات به "MacOS" در ادامه عموماً به نسخههای قدیمیتر از OS X اشاره دارد. پشتیبانی از برخی قابلیتهای مک در پورت یونیکس Mac OS X، مانند چنگالهای منابع (resource forks)، در انتشار بعدی zip پیشبینی شده است.
برای دریافت راهنمای کوتاه درباره zip و unzip، هرکدام را بدون مشخص کردن پارامتر در خط فرمان اجرا کنید.
کاربرد (USE)
این برنامه برای بستهبندی مجموعهای از فایلها جهت توزیع، آرشیو کردن فایلها و صرفهجویی در فضای دیسک از طریق فشردهسازی موقت فایلها یا دایرکتوریهای بدون استفاده کاربرد دارد.
برنامه zip یک یا چند فایل فشردهشده را به همراه اطلاعات مربوط به آنها (نام، مسیر، تاریخ و زمان آخرین تغییر، مجوزها و اطلاعات کنترلی برای بررسی صحت فایل) در یک آرشیو واحد zip قرار میدهد. یک ساختار دایرکتوری کامل را میتوان با یک دستور منفرد در یک آرشیو zip بستهبندی کرد. نسبت فشردهسازی ۲:۱ تا ۳:۱ برای فایلهای متنی متداول است. برنامه zip دارای یک روش فشردهسازی اصلی (deflation) است و همچنین میتواند فایلها را بدون فشردهسازی ذخیره کند. (اگر پشتیبانی از bzip2 اضافه شده باشد، zip میتواند با روش فشردهسازی bzip2 نیز فشرده کند، اما چنین فایلهایی برای بازگشایی به یک نسخه به نسبت جدید از unzip نیاز دارند. زمانی که فشردهسازی bzip2 انتخاب شود، جایگزین deflation به عنوان روش پیشفرض میگردد.) برنامه zip بهطور خودکار برای هر فایلی که قرار است فشرده شود، حالت بهتر از میان این دو (deflation یا ذخیره بدون فشردهسازی؛ یا در صورت انتخاب bzip2، فشردهسازی با bzip2 یا ذخیره ساده) را انتخاب میکند.
قالب دستور. ساختار پایه دستور به این صورت است:
- zip options archive inpath inpath ...
که در آن archive نام آرشیو zip جدید یا موجود است و inpath مسیر دایرکتوری یا فایل است که میتواند شامل نویسههای عام (wildcards) نیز باشد. در صورت ارائه نام یک آرشیو zip موجود، zip مدخلهای همنام در آرشیو zip را جایگزین میکند (بر اساس نامهای نسبی ذخیرهشده در آرشیو) یا مدخلهایی با نامهای جدید اضافه مینماید. برای نمونه، اگر foo.zip وجود داشته باشد و شامل foo/file1 و foo/file2 باشد، و دایرکتوری foo شامل فایلهای foo/file1 و foo/file3 باشد، آنگاه:
- zip -r foo.zip foo
یا به صورت خلاصهتر:
- zip -r foo foo
فایل foo/file1 را در foo.zip جایگزین کرده و foo/file3 را به foo.zip میافزاید. پس از این عمل، foo.zip شامل foo/file1، foo/file2 و foo/file3 خواهد بود، در حالی که foo/file2 نسبت به قبل بدون تغییر باقی مانده است.
بنابراین اگر پیش از اجرای دستور zip آرشیو foo.zip دارای موارد زیر باشد:
- foo/file1 foo/file2
و دایرکتوری foo دارای موارد زیر باشد:
- file1 file3
آنگاه foo.zip شامل موارد زیر خواهد شد:
- foo/file1 foo/file2 foo/file3
که در آن foo/file1 جایگزین شده و foo/file3 جدید است.
فهرستهای فایل با @-. اگر فهرست فایل به صورت -@ مشخص شود [روی MacOS وجود ندارد]، zip فهرست فایلهای ورودی را به جای خط فرمان از ورودی استاندارد دریافت میکند. برای نمونه:
- zip -@ foo
فایلهای فهرستشده به صورت یک مورد در هر خط روی ورودی استاندارد (stdin) را در foo.zip ذخیره میکند.
در یونیکس، این گزینه را میتوان به شکلی قدرتمند در ترکیب با دستور find (1) به کار برد. برای نمونه، جهت آرشیو کردن تمام فایلهای منبع زبان C در دایرکتوری جاری و زیردایرکتوریهای آن:
- find . -name "*.[ch]" -print | zip source -@
(توجه داشته باشید که الگو باید درون نقلقول قرار گیرد تا پوسته از بسط آن جلوگیری کند).
ورودی و خروجی جریانی. دستور zip همچنین یک خط تیره منفرد ("-") را به عنوان نام فایل zip میپذیرد؛ در این حالت فایل zip را در خروجی استاندارد مینویسد و امکان انتقال خروجی (pipe) به برنامهای دیگر را فراهم میسازد. برای نمونه:
- zip -r - . | dd of=/dev/nrst0 obs=16k
خروجی zip را مستقیماً روی یک نوار مغناطیسی با اندازه بلوک مشخصشده مینویسد تا از دایرکتوری جاری نسخه پشتیبان تهیه کند.
دستور zip همچنین خط تیره منفرد ("-") را به عنوان نام فایل ورودی برای فشردهسازی میپذیرد؛ در این حالت فایل را از ورودی استاندارد میخواند و امکان دریافت ورودی از برنامهای دیگر را برای zip مهیا میکند. برای نمونه:
- tar cf - . | zip backup -
خروجی دستور tar را به منظور تهیه نسخه پشتیبان از دایرکتوری جاری فشرده میسازد. این کار معمولاً فشردهسازی بهتری نسبت به مثال پیشین با گزینه -r ارائه میدهد زیرا zip میتواند از دادههای تکراری و افزونگی میان فایلها بهره ببرد. نسخه پشتیبان را میتوان با دستور زیر بازیابی کرد:
- unzip -p backup | tar xf -
زمانی که هیچ نام فایل zip مشخص نشده باشد و stdout یک ترمینال نباشد، zip به عنوان یک فیلتر عمل کرده و ورودی استاندارد را فشرده کرده و به خروجی استاندارد میفرستد. برای نمونه:
- tar cf - . | zip | dd of=/dev/nrst0 obs=16k
معادل است با:
- tar cf - . | zip - - | dd of=/dev/nrst0 obs=16k
آرشیوهای zip ایجادشده به این شیوه را میتوان با برنامه funzip که در بسته unzip ارائه شده، یا با gunzip که در بسته gzip قرار دارد استخراج کرد (البته ممکن است برخی نسخههای gunzip در صورتی که zip از پسوندهای Zip64 استفاده کرده باشد، از آن پشتیبانی نکنند). برای نمونه:
- dd if=/dev/nrst0 ibs=16k | funzip | tar xvf -
جریان را همچنین میتوان در یک فایل ذخیره کرده و سپس از unzip استفاده نمود.
اگر پشتیبانی از Zip64 برای فایلها و آرشیوهای بزرگ فعال باشد و zip به عنوان فیلتر به کار رود، zip یک آرشیو Zip64 ایجاد میکند که برای خواندن آن به یک نسخه unzip سازگار با PKZIP 4.5 یا جدیدتر نیاز است. این امر به دلیل جلوگیری از ابهام در ساختار فایل zip طبق تعریف استاندارد فعلی zip (سند PKWARE AppNote) است؛ جایی که تصمیمگیری برای استفاده از Zip64 باید قبل از نوشتن دادهها برای مدخل اتخاذ شود، اما برای یک جریان ورودی، اندازه دادهها در آن نقطه نامشخص است. اگر مطمئن هستید اندازه دادهها کمتر از ۴ گیگابایت است، میتوانید از گزینه -fz- برای جلوگیری از کاربرد Zip64 استفاده کنید، اما در صورتی که Zip64 واقعاً مورد نیاز باشد، zip با خطا خارج خواهد شد. برنامههای zip 3 و unzip 6 و نسخههای پس از آنها میتوانند آرشیوهای حاوی مدخلهای Zip64 را بخوانند. همچنین zip هنگام کپی کردن مدخلهای آرشیو، در صورت عدم نیاز، پسوندهای Zip64 را حذف میکند (گزینه -U یا --copy را ببینید).
هنگام هدایت خروجی به فایلی دیگر، توجه داشته باشید که تمام گزینهها از جمله -x باید پیش از عملگر هدایت مجدد (redirection) قرار گیرند. برای نمونه:
- zip archive "*.h" "*.c" -x donotinclude.h orthis.h > tofile
فایلهای Zip. هنگام اعمال تغییرات در یک آرشیو zip موجود، zip ابتدا محتویات جدید را در یک فایل موقت مینویسد، و تنها زمانی فایل قدیمی را جایگزین میکند که فرآیند ایجاد نسخه جدید بدون هیچ خطایی تکمیل شده باشد.
اگر نام آرشیو zip فاقد پسوند باشد، پسوند .zip به آن افزوده میشود. اگر نام قبلاً حاوی پسوندی به جز .zip باشد، همان پسوند موجود بدون تغییر حفظ میگردد. با این حال، آرشیوهای چندبخشی (آرشیوهایی که روی چندین فایل تقسیم شدهاند) نیازمند پسوند .zip در آخرین بخش هستند.
پویش و خواندن فایلها. هنگامی که zip شروع به کار میکند، فایلها را برای پردازش بررسی و پویش میکند (در صورت نیاز). اگر این پویش بیش از حدود ۵ ثانیه طول بکشد، zip پیامی مبنی بر "Scanning files" نمایش میدهد و شروع به چاپ نقطههای پیشرفت در هر ۲ ثانیه یا پس از پردازش تعداد معینی مدخل میکند (هرکدام که بیشتر طول بکشد). اگر فاصله میان نقطهها بیش از ۲ ثانیه باشد، نشاندهنده آن است که یافتن هر فایل زمانبر است و برای نمونه میتواند به دلیل کندی اتصال شبکه باشد. (در واقع پویش اولیه فایلها یک فرآیند دو مرحلهای است که در آن پس از پویش دایرکتوری، مرتبسازی انجام میشود و این دو مرحله با یک فاصله میان نقطهها تفکیک میشوند. در صورت بهروزرسانی یک آرشیو موجود، فاصلهای نیز میان پویش فایلهای موجود و فایلهای جدید نمایش داده میشود.) نقطههای پیشرفت پویش فایلها توسط گزینه اندازه نقطه -ds کنترل نمیشوند، اما با گزینه بیصدا -q غیرفعال میگردند. گزینه نمایش فایلها -sf میتواند برای پویش فایلها و بهدست آوردن فهرست آنها بدون پردازش واقعی به کار رود.
اگر zip قادر به خواندن فایلی نباشد، هشداری صادر کرده و به کار خود ادامه میدهد. گزینه -MM را در ادامه ببینید تا با نحوه مدیریت الگوهای مطابقتنیافته و فایلهای غیرقابل خواندن توسط zip آشنا شوید. اگر برخی فایلها نادیده گرفته شده باشند، هشداری در پایان عملیات zip صادر میشود که در آن تعداد فایلهای خواندهشده و تعداد موارد ردشده ذکر میگردد.
حالتهای دستور. اکنون zip از دو نوع حالت دستوری مجزا پشتیبانی میکند: خارجی (external) و داخلی (internal). حالتهای خارجی (افزودن، بهروزرسانی و نوسازی) فایلها را از سیستم فایل (و همچنین از یک آرشیو موجود) میخوانند، در حالی که حالتهای داخلی (حذف و کپی) منحصراً روی مدخلهای موجود در یک آرشیو کار میکنند.
- add بهروزرسانیمدخلهایموجودوافزودنفایلهایجدید.اگرآرشیووجودنداشتهباشد،آنراایجادمیکند.اینحالتپیشفرضاست.
- update (-u)
- بهروزرسانی مدخلهای موجود در صورتی که در سیستم فایل جدیدتر باشند و افزودن فایلهای جدید. اگر آرشیو وجود نداشته باشد، پس از نمایش هشدار یک آرشیو جدید ایجاد میکند.
- freshen (-f)
- بهروزرسانی مدخلهای موجود در آرشیو در صورتی که نسخه جدیدتری در سیستم فایل وجود داشته باشد. فایلهای جدید را به آرشیو اضافه نمیکند.
- delete (-d)
- انتخاب مدخلهایی در یک آرشیو موجود و حذف آنها.
- copy (-U)
- انتخاب مدخلهایی در یک آرشیو موجود و کپی کردن آنها در یک آرشیو جدید. این حالت جدید مشابه update است با این تفاوت که الگوهای خط فرمان، مدخلهای درون آرشیو موجود را انتخاب میکنند نه فایلهای سیستم فایل را؛ همچنین از گزینه --out برای نوشتن آرشیو حاصل در یک فایل جدید استفاده میکند تا آرشیو اصلی دستنخورده باقی بماند.
گزینه جدید همگامسازی فایل (-FS) نیز یک حالت جدید در نظر گرفته میشود، هرچند شبیه به update است. این حالت آرشیو را با فایلهای سیستمعامل همگام میکند؛ تنها در صورتی فایلهای درون آرشیو را جایگزین میکند که زمان یا اندازه فایل سیستمعامل تغییر کرده باشد، فایلهای جدید را اضافه میکند و مدخلهایی از آرشیو را که فایلی متناظر با آنها در سیستمعامل وجود ندارد حذف مینماید. از آنجا که این حالت میتواند مدخلهایی را از آرشیو حذف کند، توصیه میشود پیش از آن یک نسخه پشتیبان از آرشیو تهیه فرمایید.
همچنین گزینه -DF را برای ایجاد آرشیوهای تفاضلی ببینید.
برای آگاهی از جزئیات، به توضیحات هر گزینه در ادامه و بخش مثالها (EXAMPLES) مراجعه کنید.
آرشیوهای چندبخشی (Split archives). برنامه zip نسخه 3.0 و جدیدتر میتواند آرشیوهای چندبخشی بسازد. یک آرشیو چندبخشی، یک آرشیو استاندارد zip است که روی چندین فایل تقسیم شده است. (توجه داشته باشید که آرشیوهای چندبخشی صرفاً فایلهای خردشده به تکهها نیستند، چرا که آفستهای مدخلها اکنون بر مبنای ابتدای هر بخش محاسبه میشوند. بههم چسباندن ساده این تکهها آفستها را نامعتبر میکند، گرچه unzip معمولاً میتواند آن را مدیریت کند. برنامه zip معمولاً از پردازش چنین آرشیو بههمپیوستهای خودداری میکند مگر آنکه از گزینه تعمیر -FF برای تصحیح آفستها استفاده شود.)
یکی از کاربردهای آرشیوهای چندبخشی، ذخیرهسازی یک آرشیو بزرگ روی چندین رسانه جداشدنی است. برای یک آرشیو چندبخشی با ۲۰ فایل، فایلها معمولاً به این صورت نامگذاری میشوند (ARCHIVE را با نام آرشیو خود جایگزین کنید): ARCHIVE.z01، ARCHIVE.z02، ...، ARCHIVE.z19، ARCHIVE.zip. توجه فرمایید که آخرین فایل، همان فایل .zip است. در مقابل، آرشیوهای گسترده (spanned archives) آرشیوهای چنددیسکی قدیمی هستند که عموماً نیازمند دیسکتهای فلاپی بوده و از برچسبهای دیسک برای ذخیره شماره دیسک استفاده میکردند. برنامه zip از آرشیوهای چندبخشی (split) پشتیبانی میکند اما از آرشیوهای گسترده (spanned) خیر، هرچند روشی برای تبدیل آرشیوهای چندبخشی با اندازه مناسب به آرشیوهای گسترده وجود دارد. عکس این موضوع نیز صادق است؛ میتوان فایلهای یک آرشیو گسترده را به ترتیب در فایلهایی با نامهای فوق کپی کرد تا یک آرشیو چندبخشی ساخته شود.
از -s برای تعیین اندازه هر بخش و ایجاد یک آرشیو چندبخشی استفاده کنید. اندازه به صورت یک عدد همراه با پسوند اختیاری k (کیلوبایت)، m (مگابایت)، g (گیگابایت) یا t (ترابایت) داده میشود (پیشفرض m است). گزینه -sp میتواند برای ایجاد مکث در zip میان ساخت بخشها استفاده شود تا مثلاً امکان تعویض رسانه جداشدنی فراهم گردد؛ با این حال توضیحات و هشدارهای مربوط به هر دو گزینه -s و -sp را در ادامه بخوانید.
اگرچه zip آرشیوهای چندبخشی را درجا بهروزرسانی نمیکند، اما گزینه جدید -O (یا --output-file یا --out) را برای بهروزرسانی آرشیوهای چندبخشی و ذخیره آنها در یک آرشیو جدید ارائه داده است. برای نمونه:
- zip inarchive.zip foo.c bar.c --out outarchive.zip
آرشیو inarchive.zip را حتی در صورت چندبخشی بودن میخواند، فایلهای foo.c و bar.c را به آن اضافه میکند، و آرشیو حاصل را در outarchive.zip مینویسد. اگر inarchive.zip چندبخشی باشد، اندازه بخشهای outarchive.zip بهطور پیشفرض با آن یکسان خواهد بود. توجه داشته باشید که اگر outarchive.zip و هر فایل چندبخشی متناظر با آن از قبل وجود داشته باشند، در صورت نیاز بدون هیچ هشداری بازنویسی میشوند. ممکن است این رفتار در آینده تغییر کند.
یونیکد (Unicode). گرچه استاندارد zip ذخیره مسیرها در آرشیو را با یک مجموعه نویسه مشخص الزامی کرده است، اما در عمل برنامههای zip مسیرها را با همان مجموعه نویسه محلی سیستم ذخیره کردهاند. این موضوع زمانی که یک آرشیو در سیستمی با یک مجموعه نویسه ساخته یا بهروزرسانی شود و سپس در سامانهای دیگر با مجموعه نویسهای متفاوت استخراج گردد، مشکلساز میشود. هنگام کامپایل با فعال بودن پشتیبانی یونیکد روی پلتفرمهایی که از نویسههای پهن پشتیبانی میکنند، zip اکنون علاوه بر مسیر محلی استاندارد برای سازگاری با گذشته، نگارش UTF-8 مسیر را نیز ذخیره مینماید. این قابلیت یک مجموعه نویسه مشترک و فراگیر برای ذخیرهسازی مسیرها فراهم میکند تا این مسیرها در سایر سامانههای پشتیبانیکننده از یونیکد به درستی استخراج شده و در سامانههای فاقد آن تا حد ممکن نزدیکترین تطابق حاصل شود.
در سامانههای Win32 که مسیرها در داخل به صورت یونیکد ذخیره میشوند اما با مجموعه نویسه محلی نمایش مییابند، این احتمال وجود دارد که برخی مسیرها هنگام پویش دایرکتوری با مجموعه نویسه محلی نادیده گرفته شوند. نسخه zip دارای پشتیبانی یونیکد اکنون میتواند این مسیرها را خوانده و ذخیره کند. توجه داشته باشید که سامانههای ویندوز 9x و سیستمفایلهای FAT بهطور کامل از یونیکد پشتیبانی نمیکنند.
دقت داشته باشید که پنجرههای ترمینال (کنسول) در ویندوز و یونیکس گاهی اوقات به دلیل نحوه تعویض مجموعه نویسهها برای نمایش در سیستمعامل، ممکن است تمام نویسهها را با دقت نمایش ندهند. با این حال ابزارهای ناوبری دایرکتوری در صورت بارگذاری فونتهای لازم، مسیرهای صحیح را نشان خواهند داد.
قالب خط فرمان. این نسخه از zip پردازش خط فرمان و پشتیبانی از گزینههای طولانی را بهروزرسانی کرده است.
گزینههای کوتاه به این صورت نوشته میشوند:
- -s[-][s[-]...][value][=value][ value]
که در آن s یک گزینه کوتاه یک یا دو حرفی است. یک گزینه کوتاه که مقدار میپذیرد در انتهای آرگومان قرار میگیرد و هرچه بعد از آن بیاید به عنوان مقدار در نظر گرفته میشود. اگر گزینه قابلیت نفی داشته باشد و بلافاصله کاراکتر "-" بعد از آن بیاید، گزینه نفی میشود. گزینههای کوتاه را میتوان به عنوان آرگومانهای مجزا نیز وارد کرد:
- -s[-][value][=value][ value] -s[-][value][=value][ value] ...
بهطور کلی گزینههای کوتاه مقادیر را یا به عنوان بخشی از همان آرگومان یا در آرگومان بعدی دریافت میکنند. کاراکتر اختیاری = نیز پشتیبانی میشود. بنابراین:
- -ttmmddyyyy
و
- -tt=mmddyyyy
و
- -tt mmddyyyy
همگی معتبر هستند. گزینههای -x و -i فهرستی از مقادیر را میپذیرند و از قالبی اندکی متفاوت استفاده میکنند که در ادامه شرح داده شده است. گزینههای -x و -i را ببینید.
گزینههای طولانی به شکل زیر هستند:
- --longoption[-][=value][ value]
که در آن گزینه با -- شروع میشود، دارای نامی چندحرفی است، میتواند شامل یک خط تیره پایانی برای نفی گزینه باشد (اگر گزینه از آن پشتیبانی کند)، و میتواند مقداری داشته باشد که با قرار دادن = قبل از آن (بدون فاصله) مشخص شود. مقادیر همچنین میتوانند پس از آرگومان بیایند. بنابراین:
- --before-date=mmddyyyy
و
- --before-date mmddyyyy
هر دو کار میکنند.
نام گزینههای طولانی را میتوان تا کوتاهترین مخفف منحصربهفرد خلاصه کرد. برای اطلاع از اینکه کدام گزینهها از فرم طولانی پشتیبانی میکنند، توضیحات گزینهها را در ادامه ببینید. برای جلوگیری از سردرگمی، از خلاصه کردن یک گزینه قابل نفی که دارای خط تیره درونی ("-") است دقیقاً در محل خط تیره خودداری کنید اگر قصد نفی آن را دارید (تجزیهکننده خط تیره پایانی را، مانند گزینه --some-option که با --some- استفاده شود، به عنوان بخشی از نام تلقی میکند نه خط تیره نفیکننده). ممکن است این رفتار در آینده تغییر کند تا آخرین خط تیره در --some- به عنوان نفیکننده اعمال شود.
گزینهها (OPTIONS)
- -a
- --ascii
- [سامانههای مبتنی بر EBCDIC] تبدیل فایل به قالب ASCII.
- -A
- --adjust-sfx
- تنظیم آرشیو اجرایی خوداستخراجگر (self-extracting). یک آرشیو اجرایی خوداستخراجگر با افزودن کد اولیه SFX به ابتدای یک آرشیو موجود ایجاد میشود. گزینه -A به zip دستور میدهد آفستهای ذخیرهشده مدخلها در آرشیو را تنظیم کند تا این دادههای پیشدرآمد (preamble) در نظر گرفته شوند.
نکته: آرشیوهای خوداستخراجگر برای Amiga یک حالت خاص هستند. در حال حاضر، تنها پورت Amiga از zip قادر به تنظیم یا بهروزرسانی این موارد بدون خراب کردن آنها است. در صورت نیاز به سایر بهروزرسانیها، میتوان از -J برای حذف کد ابتدایی SFX استفاده کرد.
- -AC
- --archive-clear
- [WIN32] پس از ایجاد آرشیو (و آزمایش آن در صورت استفاده از -T که توصیه میشود)، بیتهای آرشیو (archive bits) فایلهای پردازششده را پاک میکند. هشدار: با پاک شدن این بیتها، وضعیت قبلی از بین میرود. ممکن است بخواهید از گزینه نمایش فایلها -sf برای ذخیره فهرست فایلهای پردازششده استفاده کنید تا در صورت نیاز به تکرار عملیات، فهرست در دسترس باشد. همچنین استفاده از گزینه تطابق اجباری -MM را مد نظر قرار دهید. حتماً گزینه -DF را نیز به عنوان روشی احتمالاً مناسبتر برای پشتیبانگیری افزایشی بررسی کنید.
- -AS
- --archive-set
- [WIN32] فقط
فایلهایی
را شامل
میشود که
بیت آرشیو
آنها فعال
باشد. در
صورت
استفاده از
-AS،
دایرکتوریها
ذخیره
نمیشوند،
هرچند طبق
پیشفرض
مسیرهای
مدخلها،
شامل
دایرکتوریها،
مانند
گذشته
ذخیره شده و
اغلب
برنامههای
unzip
میتوانند
از آنها
برای
بازسازی
پوشهها
بهره ببرند.
بیت آرشیو هنگام تغییر فایل توسط سیستمعامل فعال میشود و در صورت استفاده همزمان با -AC، گزینه -AS میتواند قابلیت پشتیبانگیری افزایشی فراهم آورد. با این حال برنامههای دیگر نیز ممکن است این بیت را تغییر دهند و شاید شاخص کاملاً قابل اعتمادی از فایلهای تغییریافته نسبت به آخرین عملیات آرشیو نباشد. روشهای جایگزین برای پشتیبانگیری افزایشی عبارتند از استفاده از -t بر اساس تاریخ فایلها (گرچه فایلهای قدیمی کپیشده در پوشههای مورد آرشیو را پوشش نمیدهد) و استفاده از -DF برای ایجاد یک آرشیو تفاضلی.
- -B
- --binary
- [VM/CMS و MVS] اجبار به خواندن فایل به صورت دودویی (پیشفرض متنی است).
- -Bn
- [TANDEM] تنظیم گزینههای قالببندی Edit/Enscribe با مقدار n که به این صورت تعریف میشود:
- -b path
- --temp-path path
- استفاده از path مشخصشده برای آرشیو موقت zip. برای نمونه:
- zip -b /tmp stuff *
- آرشیو موقت zip را در دایرکتوری /tmp قرار میدهد و پس از اتمام کار، آن را روی stuff.zip در دایرکتوری جاری کپی میکند. این گزینه زمانی سودمند است که یک آرشیو موجود را بهروزرسانی میکنید و سیستم فایل حاوی آرشیو قدیمی فضای کافی برای نگهداری همزمان هر دو آرشیو قدیم و جدید ندارد. همچنین در برخی موارد جریانی برای جلوگیری از نیاز به توصیفکنندههای داده مفید است. توجه داشته باشید که استفاده از این گزینه ممکن است زمان اضافه جهت کپی فایل آرشیو به سیستم فایل مقصد پس از پایان کار طلب کند.
- -c
- --entry-comments
- افزودن توضیحات یکخطی برای هر فایل. عملیات فایل (افزودن، بهروزرسانی) ابتدا انجام میپذیرد و سپس از کاربر برای هر فایل یک توضیح تکخطی درخواست میشود. توضیح را وارد کرده و Enter را بزنید، یا فقط Enter را فشار دهید تا توضیحی ثبت نشود.
- -C
- --preserve-case
- [VMS] حفظ بزرگی و کوچکی تمام حروف در VMS. نفی این گزینه (-C-) حروف را کوچک میکند.
- -C2
- --preserve-case-2
- [VMS] حفظ حالت حروف ODS2 در VMS. نفی این گزینه (-C2-) حروف را کوچک میکند.
- -C5
- --preserve-case-5
- [VMS] حفظ حالت حروف ODS5 در VMS. نفی این گزینه (-C5-) حروف را کوچک میکند.
- -d
- --delete
- حذف مدخلها از یک آرشیو zip. برای نمونه:
- zip -d foo foo/tom/junk foo/harry/\* \*.o
- مدخل foo/tom/junk، تمام فایلهایی که با foo/harry/ شروع میشوند و تمامی فایلهایی را که به .o ختم میشوند (در هر مسیری) حذف خواهد کرد. دقت کنید که بسط مسیر پوسته با استفاده از بکاسلش مهار شده است تا zip بتواند ستارهها را مشاهده کند و امکان تطبیق روی محتویات آرشیو zip به جای محتویات دایرکتوری جاری برای zip فراهم شود. (بکاسلشها در پلتفرمهای مبتنی بر MSDOS به کار نمیروند.) همچنین میتوان از نقلقول برای اسکیپ کردن ستارهها استفاده کرد:
- zip -d foo foo/tom/junk "foo/harry/*" "*.o"
- عدم اسکیپ ستارهها در سیستمی که پوسته نویسههای عام را بسط میدهد، ممکن است سبب شود ستارهها به فهرستی از فایلهای دایرکتوری جاری تبدیل گردند و همان فهرست برای حذف مدخلها از آرشیو مورد استفاده قرار گیرد.
- در سامانههای MSDOS، گزینه -d هنگام تطبیق نامها در آرشیو zip به بزرگی و کوچکی حروف حساس است. این امر مستلزم آن است که اگر فایلها توسط PKZIP در سامانه MSDOS زیپ شدهاند، نامها با حروف بزرگ وارد شوند. (ما گزینه عدم حساسیت به حروف را برای سیستمهایی با مسیرهای بدون حساسیت در نظر داشتیم، اما این احتمال وجود دارد که آرشیو از سیستمی آمده باشد که بزرگی و کوچکی حروف در آن اهمیت دارد و آرشیو حاوی هر دو فایل Bar و bar به صورت مجزا باشد.) برای نادیده گرفتن حالت حروف در آرشیو، گزینه جدید -ic را ببینید.
- -db
- --display-bytes
- نمایش شمارش زنده بایتها که بایتهای فشردهشده و بایتهای باقیمانده را نشان میدهد.
- -dc
- --display-counts
- نمایش شمارش زنده تعداد مدخلهای فشردهشده و مدخلهای باقیمانده.
- -dd
- --display-dots
- نمایش نقطههای پیشرفت هنگام فشردهسازی هر مدخل (به جز در پورتهایی که نشانگر پیشرفت اختصاصی دارند). برای تنظیم اندازه داده به ازای هر نقطه به گزینه -ds در ادامه مراجعه کنید. پیشفرض یک نقطه به ازای هر ۱۰ مگابایت پردازش فایل ورودی است. گزینه -v نیز نقطهها را نمایش میدهد (قبلاً با نرخی بسیار سریعتر اما اکنون -v نیز به ۱۰ مگابایت تغییر یافته است) و این نرخ نیز توسط -ds تنظیم میشود.
- -df
- --datafork
- [MacOS] تنها گنجاندن شاخه داده (data-fork) فایلهای زیپشده در آرشیو. مناسب برای انتقال فایلها به سایر سیستمعاملها؛ شاخههای منبع (Resource-forks) کاملاً نادیده گرفته میشوند.
- -dg
- --display-globaldots
- نمایش نقطههای پیشرفت برای کل آرشیو به جای تکتک فایلها. دستور
-
zip -qdgds 10m
- بیشتر خروجیها را غیرفعال کرده و تنها به ازای هر ۱۰ مگابایت یک نقطه نمایش میدهد.
- -ds size
- --dot-size size
- تعیین مقدار فایل ورودی پردازششده به ازای هر نقطه نمایشی. برای فعالسازی نمایش نقطهها به -dd مراجعه فرمایید. تعیین این گزینه متضمن فعالسازی -dd است. اندازه در قالب nm است که در آن n یک عدد و m ضریب است. در حال حاضر m میتواند k (کیلوبایت)، m (مگابایت)، g (گیگابایت) یا t (ترابایت) باشد؛ بنابراین اگر n برابر ۱۰۰ و m برابر k باشد، اندازه 100k معادل ۱۰۰ کیلوبایت خواهد بود. مقدار پیشفرض 10 MB است.
- گزینه -v نیز نقطهها را نمایش میدهد و اکنون پیشفرض آن نیز 10 MB است. این نرخ با گزینه حاضر کنترل میشود. اندازه 0 نمایش نقطهها را خاموش میکند.
- این گزینه نقطههای ناشی از پیام "Scanning files" هنگام پویش فایلهای ورودی را کنترل نمیکند. اندازه دوره زمانی نقطه برای آن روی ۲ ثانیه یا تعداد مشخصی مدخل ثابت است (هرکدام که بیشتر طول بکشد).
- -du
- --display-usize
- نمایش اندازه غیرفشرده هر مدخل.
- -dv
- --display-volume
- نمایش شماره بخش (دیسک) که هر مدخل در صورت خواندن از یک آرشیو موجود از آن خوانده شده، و همچنین بخشی که در آن نوشته میشود.
- -D
- --no-dir-entries
- عدم ایجاد مدخل برای دایرکتوریها در آرشیو zip. مدخلهای دایرکتوری بهطور پیشفرض ساخته میشوند تا ویژگیها و مشخصات آنها در آرشیو zip حفظ گردد. متغیر محیطی ZIPOPT میتواند برای تغییر گزینههای پیشفرض استفاده شود؛ برای نمونه در یونیکس با شل sh:
- ZIPOPT="-D"; export ZIPOPT
- (متغیر ZIPOPT میتواند برای هر گزینهای شامل -i و -x با فرمت جدید شرح داده شده در ادامه استفاده شود و میتواند حاوی چندین گزینه باشد.) گزینه -D کوتاهنویسی برای -x "*/" است، اما قبلاً دومی نمیتوانست به عنوان پیشفرض در متغیر محیطی ZIPOPT قرار گیرد چرا که محتوای ZIPOPT در نزدیکی ابتدای خط فرمان درج میشد و فهرست فایلها باید در انتهای خط تمام میشد.
- این نسخه از zip امکان استفاده از گزینههای -x و -i را در ZIPOPT فراهم میسازد اگر از قالب زیر استفاده شود:
- -x file file ... @
- که در آن کاراکتر @ (آرگومانی که صرفاً @ است) فهرست را پایان میدهد.
- -DF
- --difference-archive
- ایجاد آرشیوی شامل تمام فایلهای جدید و تغییریافته از زمان ساخته شدن آرشیو اولیه. برای کارکرد صحیح، فهرست فایلهای ورودی و دایرکتوری جاری باید همانند عملیات zip اولیه باشد.
- برای نمونه، اگر آرشیو موجود با دستور زیر:
- zip -r foofull .
- از دایرکتوری bar ساخته شده باشد، اجرای دستور زیر:
- zip -r foofull . -DF --out foonew
- نیز از همان
دایرکتوری
bar، آرشیو foonew
را تنها با
فایلهایی
ایجاد
میکند که
در foofull وجود
ندارند یا
فایلهایی
که اندازه
یا زمان
آنها با
موارد
موجود در foofull
مطابقت
ندارد.
توجه داشته باشید که متغیر محیطی منطقه زمانی TZ باید بر اساس منطقه زمانی محلی تنظیم شده باشد تا این گزینه به درستی کار کند. تغییر در منطقه زمانی پس از ایجاد آرشیو اصلی میتواند سبب شود هیچیک از زمانها مطابقت پیدا نکنند و در نتیجه تمام فایلها مشمول شوند.
یک رویکرد مناسب برای پشتیبانگیری از یک دایرکتوری میتواند ایجاد یک آرشیو معمولی از محتویات دایرکتوری به عنوان پشتیبان کامل، و سپس استفاده از این گزینه برای ساخت پشتیبانهای افزایشی باشد.
- -e
- --encrypt
- رمزگذاری محتویات آرشیو zip با استفاده از گذرواژهای که در پاسخ به اعلان ترمینال وارد میشود (این گذرواژه نمایش داده نخواهد شد؛ اگر خطای استاندارد متصل به tty نباشد، zip با خطا خارج میشود). اعلان ورود گذرواژه برای جلوگیری از خطای تایپی کاربر تکرار خواهد شد.
- -E
- --longnames
- [OS/2] استفاده از صفت توسعهیافته .LONGNAME (در صورت یافت شدن) به عنوان نام فایل.
- -f
- --freshen
- جایگزینی (نوسازی) یک مدخل موجود در آرشیو zip تنها در صورتی که اخیراً نسبت به نسخه موجود در آرشیو zip تغییر یافته باشد؛ بر خلاف گزینه بهروزرسانی (-u) این گزینه فایلهایی را که از قبل در آرشیو zip وجود ندارند اضافه نمیکند. برای نمونه:
- zip -f foo
- این دستور باید از همان دایرکتوری که دستور اولیه zip اجرا شده بود فراخوانی شود، زیرا مسیرهای ذخیرهشده در آرشیوهای zip همواره نسبی هستند.
- توجه داشته باشید که متغیر محیطی منطقه زمانی TZ باید بر اساس منطقه زمانی محلی تنظیم شده باشد تا گزینههای -f، -u و -o به درستی عمل کنند.
- دلایل این امر اندکی ظریف است اما به تفاوتهای قالب زمان فایلها در یونیکس (همواره بر مبنای GMT) و اغلب سایر سیستمهای عامل (همواره زمان محلی) و ضرورت مقایسه این دو مربوط میشود. یک مقدار نمونه برای TZ برابر است با ``MET-1MEST'' (زمان اروپای مرکزی با تطبیق خودکار برای ساعت تابستانی).
- قالب آن TTThhDDD است که در آن TTT منطقه زمانی مانند MET، مقدار hh تفاوت بین GMT و زمان محلی مانند -1 در بالا، و DDD نام منطقه زمانی در دوران ساعت تابستانی است. در صورتی که ساعت تابستانی وجود ندارد، بخش DDD را حذف کنید. برای نمونه در منطقه زمانی شرقی آمریکا: EST5EDT.
- -F
- --fix .TP
- -FF
- --fixfix تعمیر آرشیو
- zip. گزینه -F میتواند در صورت مفقود شدن بخشهایی از آرشیو مورد استفاده قرار گیرد، اما نیازمند یک دایرکتوری مرکزی (central directory) به نسبت سالم است. آرشیو ورودی مانند معمول پویش میشود، اما zip از برخی مشکلات چشمپوشی خواهد کرد. آرشیو حاصل باید معتبر باشد، اما هرگونه مدخل متناقض کنار گذاشته میشود.
- هنگامی که به صورت دوگانه مانند -FF به کار رود، آرشیو از ابتدا پویش میشود و zip به دنبال امضاهای ویژه برای شناسایی مرزهای میان اعضای آرشیو میگردد. حالت تکی -F در صورتی که آرشیو بیش از حد آسیب ندیده باشد قابل اعتمادتر است، بنابراین ابتدا این گزینه را امتحان کنید.
- اگر آرشیو بیش از حد آسیب دیده باشد یا انتهای آن ناقص و بریده شده باشد، باید از -FF استفاده کنید. این یک تغییر نسبت به zip 2.32 است که در آن گزینه -F قادر به خواندن آرشیوهای بریدهشده بود. گزینه -F اکنون با قابلیت اطمینان بیشتری آسیبهای جزئی را تعمیر میکند و گزینه -FF برای رفع مشکلاتی به کار میرود که سابقاً شاید با -F برطرف میشدند.
- هیچیک از این دو گزینه نمیتوانند آرشیوهایی را که به اشتباه در حالت ascii به جای binary انتقال یافتهاند بازیابی کنند. پس از تعمیر، گزینه -t از دستور unzip ممکن است نشان دهد برخی فایلها دارای CRC نامعتبر هستند. چنین فایلهایی قابل بازیابی نیستند؛ میتوانید آنها را با گزینه -d از برنامه zip از آرشیو حذف نمایید.
- توجه داشته باشید که -FF ممکن است در تعمیر آرشیوهایی که شامل یک آرشیو zip تعبیهشده هستند که بدون فشردهسازی ذخیره شده است با مشکل مواجه شود و بسته به میزان آسیب، ممکن است مدخلهای درون آرشیو تعبیهشده را به جای خود آرشیو شناسایی کند. ابتدا -F را امتحان کنید زیرا این مشکل را ندارد.
- قالب دستورات تعمیر تغییر یافته است. برای نمونه، جهت تعمیر آرشیو آسیبدیده foo.zip:
- zip -F foo --out foofix
- تلاش میکند مدخلها را بهطور عادی بخواند و مدخلهای سالم را در آرشیو جدید foofix.zip کپی کند. اگر این روش کارساز نبود، مثلاً زمانی که آرشیو ناقص شده است یا برخی مدخلها که میدانید در آرشیو هستند نادیده گرفته میشوند، آنگاه دستور زیر را امتحان کنید:
- zip -FF foo --out foofixfix
- و آرشیو حاصل را با آرشیو ایجادشده توسط -F مقایسه نمایید. گزینه -FF ممکن است آرشیوی متناقض ایجاد کند. بسته به اینکه چه بخشی آسیب دیده است، میتوانید سپس از گزینه -F برای تعمیر آن آرشیو استفاده کنید.
- یک آرشیو چندبخشی با فایلهای بخش گمشده را میتوان با استفاده از -F تعمیر کرد اگر آخرین بخش آرشیو (فایل .zip) را در اختیار داشته باشید. اگر این فایل وجود نداشته باشد، باید از -FF برای تعمیر آرشیو استفاده کنید که از شما بخشهای موجود را درخواست خواهد کرد.
- در حال حاضر گزینههای تعمیر قادر به بازیابی مدخلهایی که دارای مجموع مقابلهای (checksum) نادرست هستند یا دچار آسیبهای دیگر شدهاند نیستند.
- -FI
- --fifo
- [Unix] برنامه zip در حالت عادی از خواندن هرگونه FIFO (لولههای نامگذاریشده) مواجهشده صرفنظر میکند، چرا که اگر دادهای به FIFO تزریق نشود، برنامه ممکن است متوقف شود. این گزینه به zip دستور میدهد محتویات هر لوله نامگذاریشده را که پیدا میکند بخواند.
- -FS
- --filesync
- همگامسازی محتویات آرشیو با فایلهای موجود در سیستمعامل. معمولاً هنگام بهروزرسانی آرشیو، فایلهای جدید افزوده شده و فایلهای تغییریافته بهروز میشوند، اما فایلهایی که دیگر در سیستمعامل وجود ندارند از آرشیو حذف نمیشوند. این گزینه حالتی جدید را فعال میکند که مدخلهای آرشیو را در برابر سیستم فایل بررسی مینماید. اگر زمان و اندازه فایل مدخل با فایل سیستمعامل یکسان باشد، مدخل به جای خوانده شدن از سیستم فایل و فشردهسازی مجدد، از آرشیو قدیمی کپی میشود. اگر فایل سیستمعامل تغییر کرده باشد، مدخل مانند گذشته خوانده شده و فشرده میشود. اگر مدخل موجود در آرشیو متناظری در سیستمعامل نداشته باشد، مدخل حذف میگردد. فعالسازی این گزینه آرشیوهایی مشابه آرشیوهای کاملاً نو ایجاد میکند، اما از آنجا که مدخلهای موجود به جای فشردهسازی کپی میشوند، بهروزرسانی یک آرشیو موجود با -FS میتواند بسیار سریعتر از ساخت یک آرشیو جدید باشد. همچنین استفاده از -u را برای بهروزرسانی آرشیو مد نظر قرار دهید.
- برای کارکرد صحیح این گزینه، آرشیو باید از همان دایرکتوری که در آن ایجاد شده بود بهروزرسانی گردد تا مسیرهای نسبی همخوانی داشته باشند. اگر فایلهای اندکی از آرشیو قدیمی کپی میشوند، ساخت یک آرشیو جدید ممکن است سریعتر باشد.
- توجه داشته باشید که متغیر محیطی منطقه زمانی TZ باید مطابق منطقه زمانی محلی تنظیم گردد تا این گزینه به درستی عمل کند. تغییر در منطقه زمانی از زمان ایجاد آرشیو اصلی میتواند به عدم تطابق زمانها و فشردهسازی مجدد تمام فایلها منجر شود.
- این گزینه فایلها را از آرشیو حذف میکند. اگر نیاز به حفظ آرشیو اولیه دارید، ابتدا یک کپی از آن تهیه کنید یا از گزینه --out برای هدایت آرشیو بهروزرسانیشده به فایلی جدید استفاده نمایید. گرچه ممکن است زمان بیشتری ببرد، اما ساخت آرشیو جدید با نامی تازه ایمنتر است، از عدم تطابق مسیرهای آرشیو و سیستمعامل جلوگیری میکند و روش ارجح است.
- -g
- --grow رشد دادن (افزودن به) آرشیو
- zip مشخصشده، به جای ایجاد یک آرشیو جدید. اگر این عملیات با شکست مواجه شود، zip تلاش میکند آرشیو را به حالت اولیهاش بازگرداند. در صورت شکست در بازیابی، ممکن است آرشیو آسیب ببیند و خراب شود. این گزینه زمانی که هیچ آرشیو موجودی نباشد یا دستکم یکی از اعضای آرشیو باید بهروزرسانی یا حذف شود، نادیده گرفته میشود.
- -h
- -?
- --help نمایش اطلاعات راهنمای
- zip (این راهنما همچنین در صورت اجرای zip بدون هیچ آرگومانی نمایش داده میشود).
- -h2
- --more-help
- نمایش راهنمای گستردهتر شامل توضیحات بیشتر درباره قالب خط فرمان، تطبیق الگوها و گزینههای کمتر شناختهشده.
- -i files
- --include files
- تنها شامل کردن فایلهای مشخصشده؛ به عنوان مثال:
- zip -r foo . -i \*.c
- که تنها فایلهایی را که در دایرکتوری جاری و زیردایرکتوریهای آن به .c ختم میشوند شامل خواهد کرد. (نکته برای کاربران PKZIP: دستور معادل عبارت است از:
- pkzip -rP foo *.c
- برنامه PKZIP بازگشت بازگشتی را در پوشههایی غیر از پوشه جاری مجاز نمیداند.) استفاده از بکاسلش مانع از بسط نام فایل توسط پوسته میشود، به طوری که تطبیق نام در تمام سطوح دایرکتوری توسط خود zip انجام میپذیرد. [این مورد برای یونیکس و سایر سیستمهایی است که در آنها \ نویسه بعدی را اسکیپ میکند. در سامانههایی که پوسته * را پردازش نمیکند، از \ استفاده نکنید و دستور بالا به این صورت است:
- zip -r foo . -i *.c
- مثالها مربوط به یونیکس هستند مگر آنکه خلاف آن ذکر شود.] بنابراین برای گنجاندن dir، دایرکتوری که مستقیماً زیر پوشه جاری قرار دارد:
- zip -r foo . -i dir/\*
- یا
- zip -r foo . -i "dir/*"
- را جهت تطبیق مسیرهایی مانند dir/a و dir/b/file.c به کار ببرید [در پورتهای فاقد بسط نویسههای عام در پوسته مانند MSDOS و ویندوز از:
- zip -r foo . -i dir/*
- استفاده میشود.] توجه فرمایید که در حال حاضر اسلش پایانی برای دایرکتوریها ضروری است (مانند
- zip -r foo . -i dir/
- جهت گنجاندن دایرکتوری dir).
- قالب گزینه طولانی برای مثال اول عبارت است از:
- zip -r foo . --include \*.c
- و همان عملکرد گزینه کوتاه را دارد.
- اگرچه ساختار دستوری پیشین نیازمند قرار گرفتن -i در انتهای خط فرمان بود، اما این نسخه در عمل اجازه میدهد -i (یا --include) در هر جایی قرار گیرد. فهرست فایلها در اولین آرگومان بعدی که با - شروع شود، انتهای خط فرمان، یا نشانه پایاندهنده فهرست @ (آرگومانی که صرفاً شامل @ است) خاتمه مییابد. بنابراین برای نمونه میتوان مورد فوق را به این صورت نیز بیان کرد:
- zip -i \*.c @ -r foo .
- باید بین گزینه و اولین فایل فهرست یک فاصله وجود داشته باشد. فقط برای یک فایل میتوانید از قالب تکمقداری استفاده کنید:
- zip -i\*.c -r foo .
- (بدون فاصله بین گزینه و مقدار) یا:
- zip --include=\*.c -r foo .
- قالبهای تکمقداری توصیه نمیشوند زیرا ممکن است گیجکننده باشند و بهویژه ساختار -ifile در صورتی که حرف اول file همراه با i یک گزینه دوحرفی با شروع i بسازد، ممکن است ایجاد مشکل کند. از گزینه -sc استفاده کنید تا ببینید خط فرمان شما چگونه تجزیه و پردازش خواهد شد.
- همچنین دستور زیر امکانپذیر است:
- zip -r foo . -i@include.lst
- که فقط فایلهایی را در دایرکتوری جاری و زیردایرکتوریهای آن شامل میشود که با الگوهای موجود در فایل include.lst مطابقت داشته باشند.
- فایلهای ورودی به -i و -x الگوهایی برای تطبیق با مسیرهای داخلی آرشیو هستند. برای جزئیات الگوها گزینه -R را ببینید.
- -I
- --no-image
- [Acorn RISC OS] عدم پویش
فایلهای
ایمیج (Image). در
صورت
استفاده،
zip
فایلهای
ایمیج
(مانند
پارتیشنهای
DOS یا
آرشیوهای Spark
در زمان
بارگذاری SparkFS)
را به عنوان
پوشه در نظر
نگرفته
بلکه آنها
را به عنوان
فایل منفرد
ذخیره
میکند.
برای نمونه، اگر SparkFS بارگذاری شده باشد، زیپ کردن یک آرشیو Spark منجر به ایجاد فایل zip شامل یک دایرکتوری (و محتویات آن) خواهد شد در حالی که استفاده از گزینه 'I' یک فایل zip شامل خود فایل آرشیو Spark را نتیجه میدهد. بدیهی است این حالت دوم در صورت عدم بارگذاری SparkFS نیز (بدون گزینه 'I') حاصل میشود.
- -ic
- --ignore-case
- [VMS, WIN32] نادیده گرفتن بزرگی و کوچکی حروف هنگام تطبیق مدخلهای آرشیو. این گزینه تنها روی سیستمهایی در دسترس است که در آنها بزرگی و کوچکی حروف در نام فایلها نادیده گرفته میشود. در سیستمهایی با سیستمفایل بدون حساسیت به حروف، این تفاوت معمولاً هنگام تطبیق فایلها روی دیسک نادیده گرفته میشود اما برای حالتهای -f (نوسازی)، -d (حذف)، -U (کپی) و حالتهای مشابه هنگام تطبیق با مدخلهای آرشیو نادیده گرفته نمیشود (در حال حاضر -f در VMS حروف را نادیده میگیرد) زیرا ممکن است مدخلهای آرشیو متعلق به سیستمهایی باشند که بزرگی و کوچکی حروف در آنها اهمیت داشته و نامهایی که تنها در حروف کوچک و بزرگ تفاوت دارند در آرشیو همزمان وجود داشته باشند. گزینه -ic تمام تطبیقها را بدون حساسیت به حروف انجام میدهد. این امر ممکن است سبب شود چندین مدخل آرشیو با یک الگوی خط فرمان تطبیق داده شوند.
- -j
- --junk-paths
- تنها ذخیره نام فایل ذخیرهشده (حذف مسیرها) و عدم ذخیره نام دایرکتوریها. بهطور پیشفرض، zip مسیر کامل (نسبت به دایرکتوری جاری) را ذخیره میکند.
- -jj
- --absolute-path
- [MacOS] ثبت مسیر کامل به همراه نام درایو/حجم (+ Volname). مسیر کامل شامل نام حجم ذخیره خواهد شد. بهطور پیشفرض مسیر نسبی ذخیره میگردد.
- -J
- --junk-sfx
- حذف هرگونه داده الحاقشده به ابتدا (مانند کد SFX) از آرشیو.
- -k
- --DOS-names
- تلاش برای تبدیل نامها و مسیرها جهت انطباق با استاندارد MSDOS، ذخیره صرف مشخصه MSDOS (تنها مشخصه نوشتن کاربر از یونیکس)، و علامتگذاری مدخل به عنوان ساختهشده تحت MSDOS (هرچند چنین نبوده باشد)؛ جهت سازگاری با PKUNZIP تحت MSDOS که قادر به مدیریت برخی نامها نظیر نامهای دارای دو نقطه پیاپی نیست.
- -l
- --to-crlf
- تبدیل نویسه پایان خط LF در یونیکس به توافق استاندارد MSDOS یعنی CR LF. این گزینه نباید روی فایلهای باینری به کار رود. این گزینه میتواند در یونیکس در صورتی استفاده شود که فایل zip برای PKUNZIP تحت MSDOS در نظر گرفته شده باشد. اگر فایلهای ورودی از قبل دارای CR LF باشند، این گزینه یک CR اضافه درج میکند. این کار به این منظور است که دستور unzip -a در یونیکس بتواند یک رونوشت دقیق از فایل اصلی به دست آورد و اثر zip -l را خنثی سازد. گزینه -ll را برای نحوه مدیریت فایلهای دودویی ببینید.
- -la
- --log-append
- الحاق به انتهای فایل لاگ موجود. پیشفرض بازنویسی فایل است.
- -lf logfilepath
- --logfile-path logfilepath
- باز کردن یک فایل گزارش (log) در مسیر تعیینشده. بهطور پیشفرض هر فایل موجود در آن مکان بازنویسی میشود، اما گزینه -la سبب میشود فایل موجود باز شده و اطلاعات گزارش جدید به اطلاعات قبلی ضمیمه گردد. در حالت عادی تنها هشدارها و خطاها در فایل لاگ ثبت میشوند، مگر آنکه گزینه -li نیز داده شده باشد که در آن صورت تمام پیامهای اطلاعاتی نیز ثبت میگردند.
- -li
- --log-info
- گنجاندن پیامهای اطلاعاتی، مانند نام فایلهای در حال زیپ شدن، در لاگ. پیشفرض این است که تنها خط فرمان، هشدارها و خطاها و وضعیت نهایی ثبت گردند.
- -ll
- --from-crlf
- تبدیل پایان خط CR LF استاندارد MSDOS به LF در یونیکس. این گزینه نباید روی فایلهای باینری به کار رود. این گزینه میتواند در MSDOS در صورتی به کار رود که فایل zip برای unzip در یونیکس در نظر گرفته شده باشد. اگر فایل تبدیل شود و بعداً مشخص گردد که فایل باینری بوده است، هشداری صادر میشود و احتمالاً فایل مخدوش شده است. در این نگارش، اگر -ll در اولین بافر خواندهشده از فایل داده باینری تشخیص دهد، zip هشداری صادر کرده و از تبدیل پایان خط برای آن فایل صرفنظر میکند. به نظر میرسد این بررسی تمام فایلهای باینری آزمایششده را شناسایی میکند، اما بررسی اولیه همچنان باقی است و اگر بعداً مشخص شود فایلی باینری بوده، آن هشدار همچنان نمایش داده خواهد شد. اکنون الگوریتم جدیدی برای تشخیص باینری به کار میرود که امکان تبدیل پایان خط برای فایلهای متنی با کدگذاری UTF-8 و موارد مشابه را فراهم میسازد.
- -L
- --license
- نمایش مجوز برنامه zip.
- -m
- --move انتقال فایلهای مشخصشده به آرشیو
- zip؛ در واقع این گزینه دایرکتوریها یا فایلهای هدف را پس از ایجاد آرشیو zip مشخصشده حذف میکند. اگر پوشهای پس از حذف فایلهایش خالی شود، آن دایرکتوری نیز حذف خواهد شد. تا زمانی که zip آرشیو را بدون خطا نساخته باشد، هیچ حذفی صورت نمیگیرد. این ویژگی برای صرفهجویی در فضای دیسک مفید است، اما از آنجا که احتمال خطر دارد، توصیه میشود در ترکیب با -T جهت آزمایش آرشیو پیش از حذف فایلهای ورودی به کار رود.
- -MM
- --must-match
- تمامی الگوهای ورودی باید با دستکم یک فایل مطابقت داشته باشند و تمام فایلهای ورودی یافتشده باید قابل خواندن باشند. در حالت عادی زمانی که یک الگوی ورودی با فایلی مطابقت پیدا نمیکند هشدار "name not matched" صادر میشود و زمانی که یک فایل ورودی پیدا شده اما بعداً مفقود شود یا قابل خواندن نباشد، هشدار مربوطه صادر میگردد. در هر دو حالت zip به ساخت آرشیو ادامه میدهد؛ فایلهای جدید مفقود یا غیرقابل خواندن نادیده گرفته شده و فایلهای موجود در آرشیو بدون تغییر باقی میمانند. پس از ایجاد آرشیو، اگر فایلی غیرقابل خواندن بوده باشد، zip کد خطای OPEN (عدد ۱۸ در اغلب سیستمها) را به جای کد موفقیت عادی (عدد ۰) بازمیگرداند. با فعال بودن -MM، برنامه zip به محض آنکه الگوی ورودی تطابق نیابد (در هر نقطهای که هشدار "name not matched" صادر میشد) یا فایلی غیرقابل خواندن باشد بلافاصله خارج میشود. در هر دو حالت zip با خطای OPEN خارج شده و هیچ آرشیوی ساخته نمیشود.
- این گزینه زمانی مفید است که فهرست مشخصی از فایلها باید زیپ شوند تا هرگونه فایل گمشده یا غیرقابل خواندن به خطا منجر شود. برای استفاده به همراه نویسههای عام کاربرد کمتری دارد، اما در این حالت نیز اگر هر یک از الگوها دستکم با یک فایل تطبیق نداشته باشد یا هر فایل تطبیقیافته غیرقابل خواندن باشد با خطا خاتمه مییابد. اگر میخواهید آرشیو در هر حال ساخته شود و فقط میخواهید بدانید آیا فایلی نادیده گرفته شده است، از -MM استفاده نکنید و صرفاً کد خروجی را بررسی فرمایید. همچنین گزینه -lf میتواند مفید واقع شود.
- -n suffixes
- --suffixes suffixes
- عدم تلاش برای فشردهسازی فایلهایی که دارای suffixes مشخصشده هستند. این فایلها به سادگی به صورت ذخیره عادی (۰٪ فشردهسازی) در فایل zip خروجی ذخیره میشوند تا zip وقت خود را برای تلاش جهت فشردهسازی آنها هدر ندهد. پسوندها با دونقطه (:) یا نقطهویرگول (;) از یکدیگر جدا میشوند. برای نمونه:
- zip -rn .Z:.zip:.tiff:.gif:.snd foo foo
- تمام محتویات را از foo در foo.zip کپی میکند، اما هر فایلی را که به .Z، .zip، .tiff، .gif یا .snd ختم شود بدون تلاش برای فشردهسازی ذخیره مینماید (فایلهای تصویری و صوتی غالباً روشهای فشردهسازی تخصصی خود را دارند). بهطور پیشفرض، zip فایلهایی با پسوندهای موجود در فهرست .Z:.zip:.zoo:.arc:.lzh:.arj را فشرده نمیکند و مستقیماً آنها را ذخیره مینماید. متغیر محیطی ZIPOPT میتواند برای تغییر گزینههای پیشفرض استفاده شود. برای نمونه در یونیکس با csh:
- setenv ZIPOPT "-n .gif:.zip"
- برای تلاش جهت فشردهسازی تمام فایلها از دستور زیر استفاده کنید:
- zip -n : foo
- گزینه حداکثر فشردهسازی -9 نیز فشردهسازی روی تمام فایلها را صرفنظر از پسوند آنها امتحان میکند.
- در سامانههای Acorn RISC OS این پسوندها در واقع انواع فایل (قالب ۳ رقمی شانزدهشانزدهی) هستند. بهطور پیشفرض zip فایلهایی با انواع DDC:D96:68E (یعنی Archives، CFS files و PackDir files) را فشرده نمیسازد.
- -nw
- --no-wild
- عدم انجام پردازش داخلی نویسههای عام (پردازش شل روی نویسههای عام همچنان توسط پوسته انجام میشود مگر اینکه آرگومانها اسکیپ شده باشند). زمانی مفید است که فهرستی از مسیرها خوانده میشود و جایگزینی نویسههای عام مد نظر نیست.
- -N
- --notes
- [Amiga, MacOS] ذخیره یادداشتهای فایل Amiga یا MacOS به عنوان توضیحات فایل zip. این یادداشتها با استفاده از گزینه -N در unzip قابل بازیابی هستند. اگر گزینه -c نیز همزمان به کار رود، اعلان توضیحات تنها برای فایلهایی نمایش داده میشود که فاقد یادداشت فایل هستند.
- -o
- --latest-time
- تنظیم زمان "آخرین تغییر" آرشیو zip به تازهترین زمان "آخرین تغییر" یافتشده در میان مدخلهای درون آرشیو zip. در صورت تمایل میتوان این گزینه را بدون هیچ عملیات دیگری به کار برد؛ برای نمونه:
- zip -o foo
- زمان آخرین تغییر فایل foo.zip را به جدیدترین زمان مدخلهای موجود در foo.zip تغییر میدهد.
- -O output-file
- --output-file output-file
- پردازش
تغییرات
آرشیو طبق
روال
معمول، با
این تفاوت
که به جای
بهروزرسانی
درجا،
آرشیو جدید
را در output-file
مینویسد.
برای
بهروزرسانی
یک آرشیو
بدون تغییر
فایل اولیه
مفید است و
فایل ورودی
باید
متفاوت از
فایل خروجی
باشد.
این گزینه میتواند برای ایجاد آرشیوهای چندبخشی بهروزرسانیشده استفاده شود. همچنین همراه با -U برای کپی مدخلها از آرشیو موجود به یک آرشیو جدید به کار میرود. بخش مثالها (EXAMPLES) را در ادامه ببینید.
کاربرد دیگر آن تبدیل اندازه بخشهای فایلهای zip است. برای نمونه، جهت تبدیل یک آرشیو با بخشهای ۷۰۰ مگابایتی CD به بخشهای ۲ گیگابایتی DVD میتوان از دستور زیر استفاده کرد:
- zip -s 2g cd-split.zip --out dvd-split.zip
- که از حالت کپی بهره میبرد؛ به -U مراجعه فرمایید. همچنین دستور:
- zip -s 0 split.zip --out unsplit.zip
- یک آرشیو
چندبخشی را
به یک آرشیو
تکفایلی
تبدیل
میکند.
حالت کپی، مدخلهای جریانی (که از توصیفکنندههای داده بهره میبرند و با بیشتر ابزارهای unzip سازگارند) را به مدخلهای استاندارد (سازگار با همه ابزارهای unzip) تبدیل میکند، مگر در مواردی که از رمزگذاری استاندارد استفاده شده باشد. برای آرشیوهایی با مدخلهای رمزگذاریشده، ابزار zipcloak مدخلها را رمزگشایی کرده و به مدخلهای عادی تبدیل مینماید.
- -p
- --paths
- گنجاندن مسیرهای نسبی فایل به عنوان بخشی از نام فایلهای ذخیرهشده در آرشیو. این حالت پیشفرض است. گزینه -j مسیرها را نادیده گرفته و صرفاً نام فایلها را ذخیره میسازد.
- -P password
- --password password
- استفاده از password برای رمزگذاری مدخلهای فایل zip (در صورت وجود). این روش ناامن است! بسیاری از سیستمهای چندکاربره امکان مشاهده خط فرمان فعلی سایر کاربران را فراهم میکنند؛ حتی در سیستمهای تککاربره نیز همواره خطر نگاه کردن دیگران به مانیتور وجود دارد. ذخیره رمز عبور متنی به عنوان بخشی از خط فرمان در اسکریپتهای خودکار از این هم خطرناکتر است. تا جای ممکن از اعلان محاورهای و مخفی خط فرمان برای ورود گذرواژه بهره ببرید. (و در جاهایی که امنیت بسیار حیاتی است، از رمزگذاریهای قدرتمندی نظیر Pretty Good Privacy به جای روش رمزگذاری نسبتاً ضعیف استاندارد ابزارهای zipfile استفاده کنید.)
- -q
- --quiet
- حالت بیصدا؛ حذف پیامهای اطلاعاتی و اعلانهای توضیحات. (برای نمونه در اسکریپتهای شل و کارهای پسزمینه کاربرد دارد).
- -Qn
- --Q-flag n
- [QDOS] ذخیره اطلاعات فایل در هدر فایل با تعریف n به این صورت:
- -r
- --recurse-paths
- پیمایش بازگشتی ساختار دایرکتوری؛ برای نمونه:
- zip -r foo.zip foo
- یا خلاصهتر:
- zip -r foo foo
- در این حالت، تمام فایلها و پوشههای موجود در foo در یک آرشیو zip به نام foo.zip ذخیره میشوند، شامل فایلهایی که نامشان با "." شروع میشود، چرا که پیمایش بازگشتی از سازوکار جایگزینی نام فایل پوسته استفاده نمیکند. اگر مایلید فقط زیرمجموعه خاصی از فایلها در دایرکتوری foo و زیرپوشههای آن مشمول شوند، از گزینه -i برای مشخص کردن الگوی فایلهای مورد نظر استفاده کنید. نباید -r را با نام ".*" به کار ببرید، چرا که با ".." مطابقت یافته و تلاش خواهد کرد دایرکتوری والد را زیپ کند (که احتمالاً مد نظر نبوده است).
- چندین دایرکتوری مبدأ مجاز است مانند:
- zip -r foo foo1 foo2
- که ابتدا foo1 و سپس foo2 را با ورود به زیرشاخههای هرکدام زیپ میکند.
- دقت کنید که نویسههای عام در -r معمولاً هنگام ورود به دایرکتوریهای سیستم فایل تحلیل میشوند، اما نویسههای عام -R، -x و -i پس از پویش پوشهها روی مسیرهای داخلی آرشیو اعمال میگردند. برای اینکه نویسههای عام هنگام پیمایش بازگشتی در یونیکس روی فایلهای زیردایرکتوریها اعمال شوند، یا تمامی آنها را اسکیپ کنید یا آرگومانهای دارای نویسه عام را در نقلقول قرار دهید تا zip آنها را دریافت کرده و در حین پیمایش بازگشتی با فایلها تطبیق دهد.
- -R
- --recurse-patterns
- پیمایش بازگشتی ساختار دایرکتوری با شروع از دایرکتوری جاری؛ برای نمونه:
- zip -R foo "*.c"
- در این حالت، تمام فایلهای منطبق با *.c در درخت پوشهها با شروع از دایرکتوری جاری در یک آرشیو zip به نام foo.zip ذخیره میشوند. توجه داشته باشید که *.c با تمام موارد file.c، a/file.c و a/b/.c تطابق مییابد. بیش از یک الگو را میتوان به صورت آرگومانهای مجزا قید کرد. نکته برای کاربران PKZIP: دستور معادل عبارت است از:
- pkzip -rP foo *.c
- الگوها مسیرهای نسبی فایل به همان صورتی هستند که در آرشیو ظاهر میشوند یا پس از زیپ شدن نمایش مییابند و میتوانند حاوی نویسههای عام اختیاری باشند. برای نمونه، اگر دایرکتوری جاری foo باشد و زیر آن دایرکتوریهای foo1 و foo2 قرار داشته باشند و درون foo1 فایل bar.c باشد:
- zip -R foo/*
- پوشههای foo، foo/foo1، foo/foo1/bar.c و foo/foo2 را زیپ میکند.
- zip -R */bar.c
- تنها فایل foo/foo1/bar.c را زیپ خواهد کرد. نکته مربوط به اسکیپ کردن نویسههای عام ذیل -r را ببینید.
- -RE
- --regex
- [WIN32] پیش از نسخه zip 3.0، تطبیق فهرست عبارات باقاعده (regex) در ویندوز بهطور پیشفرض فعال بود. به دلیل سردرگمی ناشی از نیاز به اسکیپ کردن "[" و "]" در نامها، اکنون در ویندوز بهطور پیشفرض غیرفعال است تا این دو نویسه، کاراکترهایی عادی تلقی شوند. این گزینه تطبیق [] را مجدداً فعال میسازد.
- -s splitsize
- --split-size splitsize
- فعالسازی
ساخت آرشیو
چندبخشی و
تعیین
اندازه هر
بخش. یک
آرشیو
چندبخشی،
آرشیوی است
که
میتواند
روی
فایلهای
متعدد
تقسیم شود.
در حین ساخت
آرشیو،
هرگاه
اندازه آن
به اندازه
تعیینشده
برسد، آن
بخش بسته
شده و بخش
بعدی گشوده
میشود.
بهطور کلی
تمام
بخشها به
جز بخش
پایانی به
اندازه
مشخصشده
خواهند بود
و آخرین بخش
شامل هر
مقداری است
که باقی
مانده باشد.
اگر اندازه
کل آرشیو از
این مقدار
کمتر باشد،
یک آرشیو
تکفایلی
ایجاد
میگردد.
آرشیوهای چندبخشی در فایلهای شمارهگذاریشده ذخیره میشوند. برای نمونه اگر نام آرشیو خروجی archive باشد و ۳ بخش مورد نیاز گردد، آرشیو نهایی در ۳ فایل archive.z01، archive.z02 و archive.zip قرار میگیرد. شمارهگذاری این فایلها را تغییر ندهید، در غیر این صورت آرشیو قابل خواندن نخواهد بود زیرا این نامها برای تعیین ترتیب خواندن بخشها استفاده میشوند.
اندازه بخش به صورت یک عدد همراه با یک ضریب اختیاری بیان میشود. در حال حاضر عدد باید یک مقدار صحیح باشد. ضریب میتواند یکی از موارد k (کیلوبایت)، m (مگابایت)، g (گیگابایت) یا t (ترابایت) باشد. از آنجا که کمترین اندازه بخش 64k است، اعداد فاقد ضریب بهطور پیشفرض بر مبنای مگابایت محاسبه میشوند. برای نمونه جهت ساخت آرشیو چندبخشی با نام foo از محتویات دایرکتوری bar با بخشهای ۶۷۰ مگابایتی (مناسب برای رایت روی CD)، دستور:
- zip -s 670m -r foo bar
- میتواند
مورد
استفاده
قرار گیرد.
در حال حاضر بخشهای قدیمی یک آرشیو چندبخشی بهطور خودکار از آرشیو جدید مستثنی نمیشوند، اما میتوان آنها را به شکل صریح استثنا کرد. در صورت امکان، هنگام ساخت آرشیوهای چندبخشی، آرشیوهای ورودی و خروجی را خارج از مسیری که در حال زیپ شدن است نگه دارید.
استفاده از -s بدون -sp تمام بخشها را در مکانی که foo نوشته میشود (در این مثال دایرکتوری جاری) میسازد. این حالت بخشها را همزمان با ساخت آرشیو بهروز میکند که مستلزم قابل نوشتن ماندن همه بخشهاست، اما آرشیوهایی میسازد که توسط هر برنامه unzip پشتیبانیکننده از حالت چندبخشی قابل خواندن است. گزینه -sp را در ادامه جهت فعالسازی حالت توقف ببینید که امکان نوشتن مستقیم روی رسانههای جداشدنی را فراهم میکند.
گزینه -sv میتواند برای فعالسازی گزارش تفصیلی نحوه تقسیمبندی به کار رود. گزینه -sb برای به صدا درآوردن زنگ هشدار هنگام توقف zip برای دریافت رسانه مقصد بعدی به کار میرود.
آرشیوهای چندبخشی را نمیتوان درجا بهروزرسانی کرد، اما گزینه -O (--out) را ببینید که چگونه میتوان آنها را ضمن کپی در آرشیو جدید بهروز کرد. همچنین میتوان با اندازه 0 یا نفی گزینه -s، آرشیو چندبخشی را به تکفایلی تبدیل کرد:
- zip -s 0 split.zip --out single.zip
- برای اطلاعات بیشتر درباره حالت کپی به -U (--copy) مراجعه نمایید.
- -sb
- --split-bell
- در صورت تقسیمبندی و استفاده از حالت توقف، زنگ ترمینال را هنگامی که zip برای هر رسانه مقصد متوقف میشود به صدا درآورد.
- -sc
- --show-command
- نمایش خط فرمان پردازششده شروع zip و خروج. تجزیهکننده جدید خط فرمان، آرگومانها را جابهجا کرده و تمامی گزینهها و مقادیر آنها را پیش از آرگومانهای غیرگزینهای قرار میدهد. این کار اجازه میدهد گزینه در هر جایی از خط فرمان ظاهر شود تا زمانی که مقادیر وابسته به آن همراهش باشند. این گزینه خط فرمان را همانگونه که zip دریافت میکند، شامل آرگومانهای ناشی از متغیرهای محیطی نظیر ZIPOPT نمایش میدهد. در صورت مجاز بودن، گزینههای انتهایی خط فرمان میتوانند گزینههای ابتدایی را بازنویسی کنند.
- -sf
- --show-files
- نمایش فایلهایی که قرار است روی آنها عملیات انجام گیرد و سپس خروج. برای مثال در صورت ساخت آرشیو جدید، فایلهایی را که قرار است اضافه شوند فهرست میکند. اگر گزینه نفی شود (-sf-)، خروجی تنها در یک فایل لاگ باز نوشته میشود. نمایش روی صفحه برای فهرستهای بزرگ توصیه نمیشود.
- -so
- --show-options
- نمایش تمام گزینههای موجود که توسط zip مطابق نحوه کامپایل روی سیستم فعلی پشتیبانی میشوند. از آنجا که این دستور جدول گزینهها را میخواند، تمام گزینهها را شامل میشود. هر خط حاوی گزینه کوتاه (در صورت تعریف)، گزینه طولانی (در صورت تعریف)، قالب هر مقدار متناظر با گزینه، قابلیت نفی گزینه و توضیحی کوتاه است. قالب مقدار میتواند بدون مقدار، مقدار اجباری، مقدار اختیاری، مقدار تکنویسهای، مقدار عددی یا فهرستی از مقادیر باشد. خروجی این گزینه برای آموزش نحوه کاربرد گزینهها نیست بلکه صرفاً نشان میدهد چه گزینههایی در دسترس هستند.
- -sp
- --split-pause
- اگر
تقسیمبندی
با -s فعال
باشد، حالت
مکث را فعال
میکند. این
حالت مانند
-s عمل
میکند اما
از نوشتن
جریانی
استفاده
میکند تا
هر بخش به
محض نوشته
شدن بسته
شود و zip
میان هر بخش
متوقف گردد
تا امکان
تعویض
رسانه یا
مقصد فراهم
شود.
گرچه این حالت امکان نوشتن مستقیم بخشها روی رسانههای جداشدنی را میدهد، از ساختار آرشیو جریانی استفاده میکند که ممکن است توسط برخی ابزارهای unzip خوانده نشود. پیش از اتکا به بخشهای ایجادشده با -sp، آن را با unzip مورد نظر آزمایش کنید.
برای تبدیل یک آرشیو چندبخشی جریانی (ساختهشده با -sp) به یک آرشیو استاندارد، به گزینه --out مراجعه نمایید.
- -su
- --show-unicode
- مانند -sf، اما نسخه یونیکد مسیر را نیز در صورت وجود نمایش میدهد.
- -sU
- --show-just-unicode
- مانند -sf، اما در صورت وجود تنها نسخه یونیکد مسیر را نمایش میدهد، در غیر این صورت نسخه استاندارد مسیر را چاپ میکند.
- -sv
- --split-verbose
- فعالسازی پیامهای تفصیلی گوناگون در حین تقسیمبندی برای نمایش نحوه انجام کار.
- -S
- --system-hidden
- [MSDOS, OS/2, WIN32 و ATARI] گنجاندن فایلهای سیستمی و پنهان.
- -t mmddyyyy
- --from-date mmddyyyy
- عدم پردازش فایلهایی که پیش از تاریخ مشخصشده تغییر یافتهاند، که در آن mm ماه (00-12)، dd روز ماه (01-31)، و yyyy سال است. قالب تاریخ استاندارد ISO 8601 یعنی yyyy-mm-dd نیز پذیرفته میشود. برای نمونه:
- zip -rt 12071991 infamy foo
zip -rt 1991-12-07 infamy foo
- تمامی فایلهای موجود در foo و زیرپوشههای آن را که تاریخ آخرین تغییر آنها در ۷ دسامبر ۱۹۹۱ یا پس از آن بوده است، به آرشیو zip با نام infamy.zip اضافه میکند.
- -tt mmddyyyy
- --before-date mmddyyyy
- عدم پردازش فایلهایی که در تاریخ مشخصشده یا پس از آن تغییر یافتهاند، که در آن mm ماه (00-12)، dd روز ماه (01-31)، و yyyy سال است. قالب تاریخ استاندارد ISO 8601 یعنی yyyy-mm-dd نیز پذیرفته میشود. برای نمونه:
- zip -rtt 11301995 infamy foo
zip -rtt 1995-11-30 infamy foo
- تمامی فایلهای موجود در foo و زیرپوشههای آن را که تاریخ آخرین تغییر آنها پیش از ۳۰ نوامبر ۱۹۹۵ بوده است، به آرشیو zip با نام infamy.zip اضافه میکند.
- -T
- --test آزمایش سلامت فایل zip جدید. در صورت ناموفق بودن بررسی، فایل zip قبلی بدون تغییر میماند و (همراه با گزینه
- -m) هیچ فایل ورودی حذف نمیشود.
- -TT cmd
- --unzip-command cmd
- استفاده از دستور cmd به جای 'unzip -tqq' جهت آزمایش آرشیو در صورت استفاده از گزینه -T. در یونیکس، برای استفاده از یک نسخه unzip در دایرکتوری جاری به جای unzip استاندارد سیستم، میتوان از دستور زیر استفاده کرد:
- zip archive file1 file2 -T -TT "./unzip -tqq"
- در cmd، عبارت {} با نام آرشیو موقت جایگزین میشود، در غیر این صورت نام آرشیو به انتهای دستور الحاق میگردد. کد بازگشتی برای موفقیت (0 در یونیکس) بررسی میشود.
- -u
- --update
- جایگزینی (بهروزرسانی) مدخل موجود در آرشیو zip تنها در صورتی که نسخه آن در سیستم فایل نسبت به نسخه موجود در آرشیو zip جدیدتر باشد. برای نمونه:
- zip -u stuff *
- هر فایل جدیدی را در دایرکتوری جاری اضافه میکند و هر فایلی را که پس از آخرین زمان ساخت یا تغییر آرشیو stuff.zip اصلاح شده است بهروزرسانی مینماید (توجه داشته باشید که zip هنگام انجام این کار تلاش نخواهد کرد فایل stuff.zip را درون خودش فشرده کند).
- دقت داشته باشید که گزینه -u بدون آرگومانهای فایل ورودی، مانند گزینه -f (نوسازی) عمل میکند.
- -U
- --copy-entries
- کپی مدخلها از یک آرشیو به آرشیو دیگر. نیازمند گزینه --out برای مشخص کردن فایلی متفاوت با آرشیو ورودی است. حالت کپی معکوس حذف با -d است. هنگامی که حذف همراه با --out استفاده میشود، مدخلهای انتخابشده از آرشیو حذف شده و سایر مدخلها در آرشیو جدید کپی میشوند؛ در حالی که حالت کپی، فایلهای مورد نظر برای درج در آرشیو جدید را انتخاب میکند. بر خلاف بهروزرسانی با -u، الگوهای ورودی در خط فرمان تنها با مدخلهای درون آرشیو تطبیق داده میشوند نه با فایلهای سیستم فایل. برای نمونه:
- zip inarchive "*.c" --copy --out outarchive
- مدخلهایی
را که
نامشان به
.c ختم
میشود از
inarchive در outarchive
کپی میکند.
نویسه عام
در برخی
سیستمها
باید اسکیپ
شود تا از
جایگزینی
نام
فایلهای
سیستم فایل
که ارتباطی
با
مدخلهای
آرشیو
ندارند
توسط پوسته
جلوگیری
گردد.
اگر هیچ فایل ورودی در خط فرمان نیاید و از --out استفاده شود، حالت کپی پیشفرض در نظر گرفته میشود:
- zip inarchive --out outarchive
- این امر برای نمونه جهت تغییر اندازه بخشهای آرشیو چندبخشی مفید است. رمزگذاری و رمزگشایی مدخلها هنوز در حالت کپی پشتیبانی نمیشود؛ برای این منظور از zipcloak استفاده نمایید.
- -UN v
- --unicode v
- تعیین نحوه
برخورد zip
با نام
فایلهای
یونیکد.
برنامه zip 3.0
اکنون
علاوه بر
مسیر
استاندارد،
نسخه
تبدیلشده
به UTF-8 مسیر را
نیز در
صورتی که
مسیر
کاملاً ASCII
هفتبیتی
نباشد شامل
میشود.
هنگامی که
مدخلی فاقد
مسیر
یونیکد
باشد، zip به
مسیر
استاندارد
فایل رجوع
میکند.
مشکل
استفاده از
مسیر
استاندارد
این است که
این مسیر با
مجموعه
نویسه محلی
zip
ایجادکننده
مدخل ذخیره
شده که ممکن
است حاوی
نویسههایی
باشد که در
مجموعه
نویسه مورد
استفاده unzip
نامعتبر
هستند.
زمانی که zip
آرشیوی را
میخواند،
اگر مدخلی
مسیر
یونیکد نیز
داشته
باشد، zip
اکنون
بهطور
پیشفرض از
مسیر
یونیکد
برای
بازسازی
مسیر
استاندارد
بر اساس
مجموعه
نویسه محلی
جاری
استفاده
میکند.
این گزینه میتواند برای تعیین نحوه برخورد zip در صورت عدم تطابق میان مسیر استاندارد ذخیرهشده و مسیر UTF-8 ذخیرهشده (که ممکن است هنگام بهروزرسانی مسیر استاندارد رخ دهد) به کار رود. در تمام موارد، در صورت عدم تطابق چنین فرض میشود که مسیر استاندارد بهروزتر است و zip از آن استفاده میکند. مقادیر مجاز برای v عبارتند از:
- q - خروج در صورت عدم تطابق مسیرها
- w - هشدار و ادامه با مسیر استاندارد
- i - نادیده گرفتن و ادامه با مسیر استاندارد
- n - بدون یونیکد، عدم استفاده از مسیرهای یونیکد
- حالت
پیشفرض،
هشدار دادن
و ادامه
دادن است.
نویسههایی که در مجموعه نویسه جاری معتبر نیستند به صورت #Uxxxx و #Lxxxxxx اسکیپ میشوند که در آن x نویسهای از ارقام شانزدهشانزدهی اسکی است. اولی در صورتی به کار میرود که یک عدد ۱۶ بیتی برای نمایش نویسه یونیکد کافی باشد و دومی زمانی که نویسه به بیش از ۱۶ بیت نیاز داشته باشد. تنظیم -UN به مقدار:
- e - اسکیپ (escape)
- مانند دستور زیر:
- zip archive -sU -UN=e
- برنامه zip
را وادار
میسازد تا
تمام
نویسههای
غیرقابل
چاپ ASCII
هفتبیتی
را اسکیپ
کند.
در حالت عادی zip در سیستمهایی که UTF-8 مجموعه نویسه جاری است، UTF-8 را مستقیماً در فیلد مسیر استاندارد ذخیره میکند و در غیر این صورت UTF-8 را در فیلدهای اضافی جدید ذخیره مینماید. گزینه:
- u - UTF-8
- مانند دستور:
- zip archive dir -r -UN=UTF8
- برنامه zip را وادار میکند UTF-8 را به صورت بومی در آرشیو ذخیره سازد. توجه داشته باشید که ذخیره مستقیم UTF-8 در سیستمهای یونیکس پشتیبانیکننده، حالت پیشفرض است. این گزینه ممکن است در سیستمهای ویندوز که مسیر اسکیپشده برای یک مسیر معتبر بیش از حد طولانی است و نسخه UTF-8 آن کوتاهتر است مفید باشد، هرچند UTF-8 بومی روی سیستمهای ویندوز با گذشته سازگار نیست.
- -v
- --verbose
- حالت پرگویی (verbose) یا چاپ اطلاعات تشخیصی نسخه برنامه.
- در حالت عادی هنگام اعمال روی عملیات واقعی، این گزینه نمایش نشانگر پیشرفت در حین فشردهسازی را فعال میکند (گزینه -dd را برای جزئیات بیشتر نقطهها ببینید) و اطلاعات تشخیصی تفصیلی درباره ناهنجاریهای ساختاری فایل zip را ارائه میدهد.
- با این حال، هنگامی که -v تنها آرگومان خط فرمان باشد، صفحهای تشخیصی چاپ میشود. این صفحه اکنون حتی در صورت هدایت stdout به یک فایل نیز کار میکند و امکان ذخیره آسان اطلاعات جهت ارسال گزارش باگ به Info-ZIP را مهیا میسازد. صفحه اطلاعات نسخه شامل سربرگ صفحه راهنما با نام برنامه، نسخه و تاریخ انتشار، نشانیهایی از وبسایتهای توزیع Info-ZIP و اطلاعاتی درباره محیط هدف (نوع و نسخه کامپایلر، نسخه سیستمعامل، تاریخ کامپایل و قابلیتهای اختیاری فعالشده در فایل اجرایی zip) است.
- -V
- --VMS-portable
- [VMS] ذخیره مشخصات فایل VMS. (فایلها در انتهای فایل یا EOF بریده میشوند.) هنگامی که آرشیو ساختهشده با -V در یک سامانه غیر VMS استخراج گردد، برخی انواع فایل (بهویژه فایلهای متنی Stream_LF و فایلهای باینری محض نظیر fixed-512) باید بدون دستخوردگی استخراج شوند. فایلهای ایندکسشده و انواع فایل با اندازه رکوردهای تعبیهشده (بهویژه انواع رکوردهای با طول متغیر) احتمالاً در سایر سیستمها خراب به نظر خواهند رسید.
- -VV
- --VMS-specific
- [VMS] ذخیره مشخصات فایل VMS و تمامی بلوکهای اختصاصیافته در یک فایل، شامل هرگونه داده فراتر از EOF. مناسب برای جابهجایی فایلهای دارای ساختار ناقص میان سامانههای VMS. در صورت استخراج آرشیو ساختهشده با -VV در سیستمی غیر از VMS، تقریباً تمام فایلها خراب به نظر خواهند رسید.
- -w
- --VMS-versions
- [VMS] افزودن شماره نسخه فایلها به نام آنها، شامل چندین نسخه از فایلها. پیشفرض تنها استفاده از تازهترین نسخه فایل مشخصشده است.
- -ww
- --VMS-dot-versions
- [VMS] افزودن شماره نسخه فایلها به نام آنها، شامل چندین نسخه با استفاده از قالب .nnn. پیشفرض تنها استفاده از تازهترین نسخه فایل مشخصشده است.
- -ws
- --wild-stop-dirs
- تطبیق نویسههای عام تنها در سطح یک دایرکتوری. در حالت عادی zip مسیرها را به عنوان رشته مدیریت میکند و با فرض مسیرهای:
- /foo/bar/dir/file1.c
- /foo/bar/file2.c
- یک الگوی ورودی نظیر:
- /foo/bar/*
- معمولاً با
هر دو مسیر
مطابقت
مییابد،
به طوری که *
هم با dir/file1.c و
هم با file2.c
مطابقت
پیدا
میکند.
توجه داشته
باشید که در
حالت اول از
مرز
دایرکتوری
(/) عبور شده
است. با
گزینه -ws
هیچ مرز
دایرکتوری
مشمول
تطبیق
نخواهد شد و
نویسههای
عام به یک
سطح
دایرکتوری
محدود
میگردند.
بنابراین
با فعال
بودن -ws،
تنها مسیر
دوم مطابقت
خواهد یافت.
هنگام استفاده از -ws، از ** برای تطبیق از میان مرزهای دایرکتوری (مشابه عملکرد پیشفرض *) استفاده کنید.
- -x files
- --exclude files
- استثنا کردن صریح فایلهای مشخصشده؛ به عنوان مثال:
- zip -r foo foo -x \*.o
- که محتویات foo را در foo.zip قرار میدهد در حالی که تمام فایلهای مختوم به .o را مستثنی میکند. بکاسلش از جایگزینی نام فایل توسط پوسته جلوگیری کرده تا تطبیق نام در تمام سطوح دایرکتوری توسط خود zip انجام پذیرد.
- همچنین دستور زیر امکانپذیر است:
- zip -r foo foo -x@exclude.lst
- که محتویات foo را در foo.zip قرار میدهد در حالی که فایلهای منطبق با الگوهای موجود در فایل exclude.lst را مستثنی میسازد.
- قالبهای گزینه طولانی برای موارد بالا عبارتند از:
- zip -r foo foo --exclude \*.o
- و
- zip -r foo foo --exclude @exclude.lst
- میتوان چندین الگو را مشخص کرد:
- zip -r foo foo -x \*.o \*.c
- اگر فاصلهای بین -x و الگو نباشد، فقط یک مقدار فرض میشود (نه یک فهرست):
- zip -r foo foo -x\*.o
- برای اطلاعات بیشتر درباره گنجاندن و استثنا کردن به -i مراجعه کنید.
- -X
- --no-extra
- عدم ذخیره
صفات اضافی
فایل (صفات
توسعهیافته
در OS/2 و
مشخصات uid/gid و
زمانهای
فایل در
یونیکس).
قالب zip از
فیلدهای
اضافی برای
گنجاندن
اطلاعات
تکمیلی به
ازای هر
مدخل
استفاده
میکند.
برخی
فیلدهای
اضافی
مخصوص
سیستمهایی
خاص هستند
در حالی که
برخی دیگر
برای تمام
سیستمها
کاربرد
دارند.
معمولاً
هنگامی که
zip مدخلها
را از یک
آرشیو
موجود
میخواند،
فیلدهای
اضافی
شناختهشده
را خوانده،
بقیه را حذف
کرده و
فیلدهای
اضافی مختص
آن سیستم را
اضافه
میکند. با
گزینه -X،
برنامه zip
تمام
فیلدهای
قدیمی را
حذف کرده و
تنها
فیلدهای
اضافی
یونیکد و Zip64
را شامل
میشود (در
حال حاضر
این دو فیلد
اضافی را
نمیتوان
غیرفعال
کرد).
نفی این گزینه، -X-، تمام فیلدهای اضافی پیشفرض را شامل میشود و همچنین هرگونه فیلد اضافی ناشناخته را نیز کپی مینماید.
- -y
- --symlinks
- در UNIX و VMS (نسخه 8.3 و بالاتر)، پیوندهای نمادین (symlinks) را به همان شکل پیوند در آرشیو zip ذخیره میکند، به جای آنکه فایل ارجاعشده توسط پیوند فشرده و ذخیره گردد. این کار میتواند از قرار گرفتن چندین نسخه از یک فایل در آرشیو، در حالی که zip درخت دایرکتوریها را پیمایش کرده و به فایلها هم مستقیماً و هم از طریق پیوند دسترسی مییابد، جلوگیری کند.
- -z
- --archive-comment
- درخواست توضیحات چندخطی برای کل آرشیو zip. این توضیح با وارد کردن خطی که تنها شامل یک نقطه باشد، یا با وضعیت انتهای فایل (^D در یونیکس و ^Z در MSDOS، OS/2 و VMS) خاتمه مییابد. توضیحات را میتوان از یک فایل نیز دریافت کرد:
- zip -z foo < foowhat
- -Z cm
- --compression-method cm
- تنظیم روش
پیشفرض
فشردهسازی.
در حال حاضر
روشهای
اصلی
پشتیبانیشده
توسط zip
عبارتند از
store و deflate. روش
فشردهسازی
میتواند
روی موارد
زیر تنظیم
شود:
store - تنظیم روش فشردهسازی روی store، برنامه zip را وادار میکند مدخلها را بدون فشردهسازی ذخیره کند. این کار عموماً سریعتر از فشردهسازی مدخلها است، اما صرفهجویی در فضای دیسک به همراه ندارد. این عملکرد همانند استفاده از -0 (سطح فشردهسازی صفر) است.
deflate - این روش پیشفرض zip است. اگر zip تشخیص دهد که ذخیره ساده بهتر از فشردهسازی deflate است، مدخل بدون فشردهسازی ذخیره خواهد شد.
bzip2 - در صورتی که پشتیبانی از bzip2 هنگام کامپایل گنجانده شده باشد، این روش فشردهسازی نیز در دسترس قرار میگیرد. در حال حاضر تنها برخی ابزارهای جدید unzip از روش فشردهسازی bzip2 پشتیبانی میکنند، بنابراین پیش از اتکا به آرشیوهایی با این روش (روش فشردهسازی ۱۲)، ابزار unzip مورد استفاده خود را بیازمایید.
برای نمونه، جهت افزودن bar.c به آرشیو foo با استفاده از فشردهسازی bzip2:
- zip -Z bzip2 foo bar.c
- روش فشردهسازی را میتوان به صورت خلاصه نیز نوشت:
- zip -Zb foo bar.c
- -#
- (-0, -1, -2, -3, -4, -5, -6, -7, -8, -9)
- تنظیم سرعت
و میزان
فشردهسازی
با استفاده
از رقم
مشخصشده
#، که در آن
-0
نشاندهنده
عدم
فشردهسازی
(ذخیره
مستقیم
تمام
فایلها)،
-1
نشاندهنده
بیشترین
سرعت
فشردهسازی
(فشردهسازی
کمتر) و -9
نشاندهنده
کمترین
سرعت
فشردهسازی
(فشردهسازی
بهینه،
نادیده
گرفتن
فهرست
پسوندها)
است. سطح
فشردهسازی
پیشفرض -6
است.
گرچه هنوز روی آن کار میشود، هدف این است که این تنظیم سرعت فشردهسازی را برای تمام روشها کنترل کند. در حال حاضر تنها روش deflation کنترل میشود.
- -!
- --use-privileges
- [WIN32] استفاده از امتیازات (در صورت اعطا شدن) جهت دستیابی به تمامی جنبههای امنیتی WinNT.
- -@
- --names-stdin
- دریافت فهرست فایلهای ورودی از ورودی استاندارد (stdin). در هر خط تنها یک نام فایل درج شود.
- -$
- --volume-label
- [MSDOS, OS/2, WIN32] گنجاندن برچسب حجم (volume label) درایوی که اولین فایل مورد فشردهسازی را در خود دارد. اگر مایلید فقط برچسب حجم ذخیره شود یا یک درایو خاص مد نظر قرار گیرد، نام درایو را به عنوان اولین نام فایل وارد کنید؛ مانند:
- zip -$ foo a: c:bar
مثالها (EXAMPLES)
سادهترین مثال:
- zip stuff *
آرشیو stuff.zip را (با فرض عدم وجود قبلی) ایجاد کرده و تمام فایلهای موجود در دایرکتوری جاری را به صورت فشرده در آن قرار میدهد (پسوند .zip بهطور خودکار افزوده میشود، مگر آنکه نام آرشیو از قبل شامل نقطه باشد؛ این موضوع امکان تعیین صریح سایر پسوندها را فراهم میسازد).
به دلیل نحوه جایگزینی نام فایلها توسط پوسته در یونیکس، فایلهایی که با "." شروع میشوند مشمول نمیگردند؛ برای گنجاندن این فایلها نیز:
- zip stuff .* *
حتی این دستور نیز زیرپوشههای موجود در دایرکتوری جاری را شامل نخواهد شد.
برای زیپ کردن کل یک دایرکتوری، دستور:
- zip -r foo foo
آرشیو foo.zip را ایجاد میکند که شامل تمامی فایلها و دایرکتوریهای موجود در دایرکتوری foo واقع در دایرکتوری جاری خواهد بود.
شاید بخواهید یک آرشیو zip بسازید که حاوی فایلهای موجود در foo باشد بدون آنکه نام دایرکتوری foo در آن ذخیره شود. میتوانید از گزینه -j برای حذف مسیرها استفاده کنید؛ مانند:
- zip -j foo foo/*
اگر با کمبود فضای دیسک مواجه هستید، ممکن است فضای کافی برای نگهداری همزمان دایرکتوری اصلی و آرشیو فشرده متناظر zip نداشته باشید. در این حالت میتوانید آرشیو را در مراحلی با استفاده از گزینه -m ایجاد کنید. اگر foo شامل زیردایرکتوریهای tom، dick و harry باشد، میتوانید اجرا کنید:
- zip -rm foo foo/tom
zip -rm foo foo/dick
zip -rm foo foo/harry
که در آن دستور نخست foo.zip را ساخته و دو دستور بعدی به آن اضافه میکنند. در پایان اجرای هر دستور zip، فایلهای زیپشده از روی دیسک حذف میشوند و فضا برای اجرای دستور بعدی zip فراهم میگردد.
از -s برای تنظیم اندازه بخشها و ایجاد آرشیو چندبخشی استفاده کنید. اندازه به صورت یک عدد همراه با پسوند اختیاری k (کیلوبایت)، m (مگابایت)، g (گیگابایت) یا t (ترابایت) داده میشود. دستور:
- zip -s 2g -r split.zip foo
یک آرشیو چندبخشی از دایرکتوری foo میسازد که اندازه هر بخش آن حداکثر ۲ گیگابایت است. اگر foo شامل ۵ گیگابایت محتوا باشد و این محتوا بدون فشردهسازی در آرشیو چندبخشی ذخیره گردد (برای سادگی مثال)، این کار سه بخش ایجاد میکند: split.z01 به اندازه ۲ گیگابایت، split.z02 به اندازه ۲ گیگابایت و split.zip به اندازه کمی بیش از ۱ گیگابایت.
گزینه -sp میتواند برای ایجاد توقف میان بخشها به کار رود تا برای نمونه امکان تعویض رسانه جداشدنی فراهم شود؛ اما توضیحات و هشدارهای مربوط به هر دو گزینه -s و -sp را مطالعه فرمایید.
اگرچه zip آرشیوهای چندبخشی را درجا بهروزرسانی نمیکند، اما گزینه جدید -O (--output-file) را برای بهروزرسانی آرشیوهای چندبخشی و ذخیره در آرشیو جدید مهیا ساخته است. برای نمونه:
- zip inarchive.zip foo.c bar.c --out outarchive.zip
آرشیو inarchive.zip را حتی در صورت چندبخشی بودن میخواند، فایلهای foo.c و bar.c را به آن میافزاید و آرشیو حاصل را در outarchive.zip مینویسد. اگر inarchive.zip چندبخشی باشد، outarchive.zip بهطور پیشفرض با همان اندازه بخش تنظیم میشود. توجه داشته باشید که اگر outarchive.zip و هر فایل چندبخشی متناظر با آن از قبل موجود باشند، همواره بدون هشدار بازنویسی خواهند شد. ممکن است این رفتار در آینده تغییر کند.
الگوها (PATTERN MATCHING)
این بخش تنها برای یونیکس اعمال میشود. در آینده اطلاعات مربوط به MSDOS و VMS ارائه خواهد شد. با این حال نویسههای عام ویژه * و [] در ادامه، دستکم برای MSDOS نیز اعمال میگردند.
پوستههای یونیکس (sh، csh، bash و غیره) معمولاً جایگزینی نام فایلها (معروف به "globbing") را روی آرگومانهای خط فرمان انجام میدهند. عموماً کاراکترهای ویژه عبارتند از:
- ?
- تطابق با هر تکنویسه
- *
- تطابق با هر تعداد نویسه (شامل صفر نویسه)
- []
- تطابق با هر نویسهای در محدوده مشخصشده درون براکت (برای نمونه: [a-f], [0-9]). این شیوه تطابق نویسه عام به کاربر اجازه میدهد فهرستی از نویسهها را میان براکت مشخص کند و در صورت تطابق هر نویسه، کل عبارت تطبیق مییابد. برای نمونه:
- zip archive "*.[hc]"
- تمامی
فایلهای
موجود در
دایرکتوری
جاری را که
به .h یا .c
ختم
میشوند
آرشیو
میکند.
محدودههای نویسهها پشتیبانی میشوند:
- zip archive "[a-f]*"
- تمام
فایلهایی
را که با
یکی از حروف
"a" تا "f"
شروع
میشوند به
آرشیو
میافزاید.
نفی نیز پشتیبانی میشود؛ به طوری که هر نویسهای در آن جایگاه که در فهرست نباشد مطابقت پیدا میکند. نفی با افزودن ! یا ^ به ابتدای فهرست صورت میپذیرد:
- zip archive "*.[!o]"
- فایلهایی
را که به ".o"
ختم
نمیشوند
مطابقت
میدهد.
در WIN32، تطبیق با [] باید با گزینه -RE فعال شود تا از سردرگمی ناشی از وجود [ یا ] در نامها جلوگیری به عمل آید.
هنگامی که با این نویسهها مواجه شود (بدون آنکه با بکاسلش یا نقلقول اسکیپ شده باشند)، پوسته به دنبال فایلهای منطبق با الگو نسبت به مسیر جاری میگردد و آرگومان را با فهرستی از نامهای مطابقتیافته جایگزین میسازد.
برنامه zip میتواند همین تطبیق را روی نامهای موجود در آرشیو zip در حال ویرایش، یا در مورد گزینههای -x (استثنا) یا -i (گنجاندن) روی فهرست فایلهای مورد پردازش انجام دهد؛ مشروط بر اینکه با استفاده از بکاسلش یا نقلقول به پوسته اعلام شود از بسط نامها خودداری کند. بهطور کلی، هنگامی که zip با نامی در فهرست فایلهای مورد پردازش روبهرو میشود، ابتدا آن نام را در سیستم فایل جستجو میکند. اگر آن را بیابد، به فهرست فایلهای مورد پردازش میافزاید. اگر آن را نیابد، با استفاده از نویسههای تطبیق الگوی ذکرشده در بالا (در صورت وجود) به دنبال نام در آرشیو zip در حال ویرایش (در صورت وجود) میگردد. به ازای هر تطابق، آن نام را به فهرست فایلهای مورد پردازش اضافه میکند، مگر آنکه نام با الگویی که در گزینه -x داده شده مطابقت داشته باشد، یا با نامهای ارائهشده در گزینه -i همخوانی نداشته باشد.
تطبیق الگو شامل مسیر نیز میشود، بنابراین الگوهایی نظیر \*.o با نامهایی که به ".o" ختم میشوند، صرفنظر از پیشوند مسیر، مطابقت مییابند. توجه داشته باشید که بکاسلش باید پیش از هر نویسه ویژه (یعنی ?*[]) قرار گیرد، یا کل آرگومان درون جفتنقلقول ("") محصور شود.
بهطور کلی، برای مسیرهای دارای نویسه عام از بکاسلش یا جفتنقلقول استفاده کنید تا zip تطبیق الگو را برای مسیرهای فایل انجام دهد، و همواره برای مسیرها و رشتههایی که دارای فاصله یا نویسه عام هستند در -i، -x، -R، -d و -U و هر جای دیگری که نیاز است zip نویسههای عام را پردازش کند، از نقلقول بهره ببرید.
متغیرهای محیطی (ENVIRONMENT)
متغیرهای محیطی زیر توسط zip به شرح زیر خوانده شده و مورد استفاده قرار میگیرند:
- ZIPOPT شامل گزینههای پیشفرضی است که هنگام اجرای zip به کار خواهند رفت. محتویات این متغیر محیطی بلافاصله پس از دستور zip به خط فرمان افزوده میشود.
- ZIP [روی RISC OS و VMS وجود ندارد] متغیر ZIPOPT را ببینید.
- Zip$Options
- [RISC OS] متغیر ZIPOPT را ببینید.
- Zip$Exts
- [RISC OS] شامل پسوندهایی است که با : از هم جدا شدهاند و سبب میشوند فایلهای بومی با یکی از پسوندهای مشخصشده، با جابهجا شدن نام پایه و پسوند به فایل zip اضافه شوند.
- ZIP_OPTS
- [VMS] متغیر ZIPOPT را ببینید.
همچنین ببینید (SEE ALSO)
compress(1), shar(1), tar(1), unzip(1), gzip(1)
پیامهای تشخیصی (DIAGNOSTICS)
وضعیت خروج (یا سطح خطا) تقریبی از کدهای خروج تعریفشده توسط PKWARE است و به استثنای VMS، مقادیر زیر را به خود میگیرد:
- 0
- عادی؛ هیچ خطا یا هشداری شناسایی نشد.
- 2
- پایان غیرمنتظره فایل zip.
- 3
- یک خطای عمومی در ساختار فایل zip شناسایی شد. پردازش ممکن است در هر حال با موفقیت انجام شده باشد؛ برخی فایلهای معیوب ساختهشده توسط سایر برنامههای آرشیو راهحلهای سادهای دارند.
- 4
- برنامه zip هنگام مقداردهی اولیه قادر به تخصیص حافظه برای یک یا چند بافر نبود.
- 5
- خطای شدیدی در ساختار فایل zip شناسایی شد. احتمالاً پردازش بلافاصله متوقف شده است.
- 6
- مدخل برای پردازش بیش از حد بزرگ است (مانند فایلهای ورودی بزرگتر از ۲ گیگابایت بدون استفاده از Zip64، یا تلاش برای خواندن یک آرشیو موجود بسیار حجیم) یا مدخل برای تقسیم با zipsplit بسیار بزرگ است.
- 7
- قالب توضیحات نامعتبر است.
- 8
- دستور zip -T ناموفق بود یا حافظه کافی وجود ندارد.
- 9
- کاربر اجرای zip را زودتر از موعد با control-C (یا معادل آن) متوقف ساخت.
- 10
- برنامه zip هنگام استفاده از یک فایل موقت با خطا مواجه شد.
- 11
- خطای خواندن یا جستجو (read or seek).
- 12
- هیچ کاری برای انجام دادن توسط zip وجود ندارد.
- 13
- فایل zip مفقود یا خالی است.
- 14
- خطا در نوشتن در فایل.
- 15
- برنامه zip نتوانست فایلی را برای نوشتن ایجاد کند.
- 16
- پارامترهای نامعتبر در خط فرمان.
- 18
- برنامه zip نتوانست فایل مشخصشده را برای خواندن باز کند.
- 19
- برنامه zip با گزینههایی کامپایل شده است که روی این سامانه پشتیبانی نمیشوند.
سامانه VMS مقادیر بازگشتی استاندارد یونیکس (یا PC) را به صورت مقادیری متفاوت تفسیر میکند، بنابراین zip آنها را به کدهای وضعیت سبک VMS نگاشت مینماید. بهطور کلی، zip مقادیر VMS Facility = 1955 (0x07A3) و Code = 2* Unix_status و شدت مناسب را (طبق تعریف در ziperr.h) تنظیم میکند. جزئیات بیشتر در مستندات اختصاصی VMS شامل [.vms]NOTES.TXT و [.vms]vms_msg_gen.c آمده است.
گزارش باگها (REPORTING BUGS)
zip 3.0 با PKUNZIP 1.10 سازگار نیست. از zip 1.1 برای تولید فایلهای zip قابل استخراج توسط PKUNZIP 1.10 استفاده کنید.
فایلهای zip تولیدشده با zip 3.0 نباید توسط zip 1.1 یا PKZIP 1.10 بهروزرسانی شوند، اگر شامل اعضای رمزگذاریشده باشند یا در یک لوله (pipe) یا روی دستگاه غیرقابل جستجو (non-seekable) تولید شده باشند. نسخههای قدیمی zip یا PKZIP آرشیوی با قالب نادرست ایجاد خواهند کرد. نسخههای قدیمی میتوانند محتویات فایل zip را فهرست کنند اما در هر حال قادر به استخراج آن نخواهند بود (به دلیل الگوریتم فشردهسازی جدید). اگر از رمزگذاری استفاده نمیکنید و از فایلهای دیسک معمولی بهره میبرید، نیازی به نگرانی درباره این مسئله ندارید.
تحت VMS، تمام قالبهای فایلهای خاص به درستی مدیریت نمیشوند. فقط انتظار میرود فایلهای zip با فرمت stream-LF با zip کار کنند. سایر موارد را میتوان با برنامه BILF متعلق به Rahul Dhesi تبدیل کرد. این نسخه از zip برخی از تبدیلها را در داخل انجام میدهد. هنگام استفاده از Kermit برای انتقال فایلهای zip از VMS به MSDOS، دستور "set file type block" را در VMS وارد کنید. هنگام انتقال از MSDOS به VMS، دستور "set file type fixed" را در VMS تایپ کنید. در هر دو حالت، در MSDOS دستور "set file type binary" را وارد فرمایید.
در برخی نسخههای قدیمیتر VMS، ممکن است zip برای مشخصات فایلی که از نحو DECnet مانند foo::*.* استفاده میکنند متوقف شود.
در OS/2، برنامه zip نمیتواند برخی نامها، نظیر موارد حاوی علامت تعجب یا علامت شارپ (#) را تطبیق دهد. این اشکالی در خود OS/2 است: توابع ۳۲ بیتی DosFindFirst/Next چنین نامهایی را پیدا نمیکنند. برنامههای دیگری نظیر GNU tar نیز تحت تأثیر این باگ قرار دارند.
در OS/2، مقدار صفات توسعهیافته (EA) نمایشدادهشده توسط DIR (جهت سازگاری) مقداری است که توسط نسخه ۱۶ بیتی DosQueryPathInfo() بازگردانده میشود. در غیر این صورت OS/2 1.3 و 2.0 اندازههای متفاوتی را هنگام DIR گرفتن از یک فایل گزارش میکردند. با این حال ساختار بازگرداندهشده توسط DosQueryPathInfo() نسخه ۳۲ بیتی اندکی متفاوت است؛ این تابع از بایتهای لایهگذاری اضافی و اشارهگرهای پیوندی استفاده میکند (یک لیست پیوندی است) تا همه فیلدها برای سازگاری با نسخههای آینده RISC OS/2 روی مرزهای ۴ بایتی قرار گیرند. از این رو مقدار گزارششده توسط zip (که از این اندازه حالت ۳۲ بیتی استفاده میکند) با مقدار گزارششده توسط DIR متفاوت است. zip فرمت ۳۲ بیتی را برای قابلیت حمل ذخیره مینماید، حتی نسخه کامپایلشده با MS-C شانزدهبیتی که روی OS/2 1.3 اجرا میشود، بنابراین حتی این نسخه نیز اندازه حالت ۳۲ بیتی را نمایش میدهد.
نویسنده (AUTHOR)
حق نشر © 1997-2008 Info-ZIP.
در حال حاضر تحت مجوز Info-ZIP توزیع میشود.
حق نشر © 1990-1997 متعلق به: Mark Adler, Richard B. Wales, Jean-loup Gailly, Onno van der Linden, Kai Uwe Rommel, Igor Mandrichenko, John Bush و Paul Kienitz.
حق نشر اولیه:
اجازه استفاده، کپی یا توزیع مجدد این نرمافزار به هر فرد یا موسسهای اعطا میشود، مشروط بر اینکه تمامی فایلهای اصلی گنجانده شوند، برای کسب سود فروخته نشود و این اطلاعیه حق نشر حفظ گردد.
مانند هر چیز دیگری که رایگان است، برنامه ZIP و ابزارهای وابسته به آن "به همان شکلی که هست" (AS IS) ارائه میشوند و فاقد هرگونه ضمانت از هر نوع، چه صریح و چه ضمنی هستند. در هیچ رویدادی دارندگان حق نشر در قبال هرگونه خسارت ناشی از استفاده از این نرمافزار مسئولیتی نخواهند داشت.
لطفاً گزارش باگها و نظرات خود را از طریق صفحه وب زیر ارسال فرمایید: www.info-zip.org. برای گزارش باگها، لطفاً نسخه zip (به zip -h مراجعه کنید)، گزینههای make استفادهشده برای کامپایل آن (به zip -v مراجعه کنید)، ماشین و سیستمعامل مورد استفاده، و هرگونه اطلاعات تکمیلی ممکن را قید فرمایید.
قدردانیها (ACKNOWLEDGEMENTS)
با سپاس از R. P. Byrne برای برنامه Shrink.Pas او که الهامبخش این پروژه بود و الگوریتم shrink از آن برگرفته شد؛ از Phil Katz برای قرار دادن فرمت فایل zip، فرمت فشردهسازی و پسوند نام فایل .ZIP در مالکیت عمومی (public domain)، و برای پذیرش تغییرات جزئی در فرمت فایل؛ از Steve Burg برای توضیحات روشنگرانه در مورد فرمت deflate؛ از Haruhiko Okumura و Leonid Broukhis برای ارائه ایدههای سودمند در الگوریتم فشردهسازی؛ از Keith Petersen، Rich Wales، Hunter Goatley و Mark Adler برای فراهم آوردن لیست پستی و سایت ftp جهت استفاده گروه Info-ZIP؛ و از همه مهمتر، از خود گروه Info-ZIP (فهرستشده در فایل infozip.who) که بدون تلاشهای خستگیناپذیر آنها در آزمایش و رفع عیبها، توسعه یک zip قابل حمل ممکن نبود. در نهایت باید از نخستین مدیر گروه Info-ZIP، یعنی David Kirschbaum، بابت وارد کردن ما به این مخمصه تشکر (یا او را سرزنش!) کنیم. این صفحه راهنما برای یونیکس توسط R. P. C. Rodgers بازنویسی شده و توسط E. Gordon برای zip 3.0 بهروزرسانی گردید.
حق نشر (COPYRIGHT)
حق نشر © 1990-2008
Info-ZIP. تمامی
حقوق محفوظ
است.
توزیع و
استفاده
تحت شرایط
مجوز Info-ZIP مجاز
است.
| 16 June 2008 (v3.0) | Info-ZIP |