چند فایل را در یک بایگانی ZIP خصوصی بگذارید
از حداکثر ۲۰۰ فایل یک ZIP استاندارد میسازد، بدون بارگذاری. میتواند بایتها را مستقیم ذخیره یا با DEFLATE فشرده کند، نامهای ناایمن و تکراری را قابل حمل سازد و اندازهٔ دقیق ورودی و بایگانی را گزارش کند.
حداکثر ۲۰۰ فایل غیرخالی، هرکدام تا ۵۰ مگابایت و در مجموع تا ۲۵۰ مگابایت. بایتها در همین زبانه میمانند.
چگونگی کار
ZIP فقط فشردهسازی نیست
بایگانی ZIP یک ظرف هم هست. گاهی هدف کوچککردن نیست؛ میخواهیم چند سند، عکس یا خروجی را با یک نام و یک دریافت تحویل دهیم. JPEG و MP۴ قبلاً ساختار فشرده دارند و قرار دادنشان در ZIP معمولاً صرفاً آنها را بستهبندی میکند.
همهٔ کار در Worker انجام میشود. Store بایتها را مستقیم در ورودی روش ۰ مینویسد. سه حالت دیگر همان ساختار ZIP را با جریان DEFLATE روش ۸ میسازند؛ تفاوت سطحها فقط میزان جستوجوی تکرار است و خوانندهٔ ZIP لازم نیست سطح را بداند.
ساختار از دو سو خوانده میشود
در ابتدای فایل، هر ورودی سربرگ محلی، دادهٔ ذخیره یا فشرده و descriptor دارای CRC-۳۲ و اندازه دارد. نزدیک پایان، فهرست مرکزی همهٔ ورودیها را دوباره نام میبرد تا برنامه بدون پیمایش کل فایل بتواند آنها را پیدا کند. رکورد پایانی جای فهرست و شمار ورودیها را ثبت میکند.
فایلها در قطعههای ۵۱۲ کیلوبایتی به نویسنده داده میشوند. پس از هر قطعه Worker پیشرفت را گزارش و کنترل را آزاد میکند. بدون این yield، نوار پیشرفت یک ورودی ۲۵۰مگابایتی پس از پایان کار حرکت میکرد و دکمهٔ لغو فرصتی برای اجرا نداشت.
نام و حریم خصوصی
پیشوند پوشه کنار گذاشته، نویسهٔ مسیر و کنترل حذف و نامهای رزروشدهٔ ویندوز
ایمن میشوند. مقایسه بدون توجه به بزرگی حروف انجام میشود و برخوردها بهترتیب
report.pdf، report (2).pdf و بعدیها نام میگیرند. این کار جلوی مسیر ../
و بازنویسی بیصدای یک فایل هنگام استخراج را میگیرد.
زمان اصلی فایل هم کپی نمیشود؛ میتواند اطلاعاتی دربارهٔ زمان ساخت افشا کند و برای بازسازی بایتها لازم نیست. همهٔ ورودیها تاریخ ثابت ۱ ژانویهٔ ۱۹۸۰، نخستین تاریخ عادی قابل نمایش در ZIP، میگیرند. ورودی و تنظیم یکسان در نتیجه بایگانی یکسان میسازد.
مراحل انجام کار
- بررسی کن ۱ تا ۲۰۰ فایل غیرخالی انتخاب شده، هیچ فایل بیش از ۵۰ مگابایت نیست و مجموع از ۲۵۰ مگابایت عبور نمیکند.
- هر نام را به basename تخت تبدیل کن، جداکنندهٔ مسیر و نویسهٔ کنترلی را حذف کن، نام رزروشدهٔ ویندوز را ایمن و برخوردهای بدون توجه به بزرگی حروف را شمارهگذاری کن.
- برای هر فایل یک ورودی ZIP آغاز کن؛ Store از روش ۰ و حالتهای سریع، متعادل و کمحجم از DEFLATE روش ۸ با سطحهای ۱، ۶ و ۹ استفاده میکنند.
- فایل را در قطعههای ۵۱۲ کیلوبایتی به نویسنده بده تا CRC-۳۲، رکوردها و پیشرفت را بسازد و میان قطعهها برای دکمهٔ لغو به رویدادها فرصت بده.
- تاریخ ثابت ۱ ژانویهٔ ۱۹۸۰ و دسترسی قابل حمل را روی هر ورودی بگذار، فهرست مرکزی را تمام کن و بایتهای ZIP را برای دریافت آماده ساز.
فرضها
- فایلها بهصورت ورودیهای تخت در ریشهٔ بایگانی قرار میگیرند؛ مسیر پوشه، توضیح و زمان اصلی فایل کپی نمیشود.
- حالت Store بایتهای منبع را تغییر نمیدهد، اما کوچکترشدن ZIP را تضمین نمیکند؛ سربرگ، نام، checksum و فهرست مرکزی اندازه دارند.
- سه سطح فشردهسازی همگی DEFLATE استانداردند. سطح بالاتر میتواند زمان بیشتری بگیرد و روی JPEG، MP۴، PDF یا ZIP تقریباً چیزی کم نکند.
- CRC-۳۲ خرابی تصادفی را هنگام استخراج پیدا میکند، اما امضای رمزنگاری یا اثبات منشأ نیست.
- ابزار رمزگذاری یا گذرواژه اضافه نمیکند؛ هرکس فایل ZIP را داشته باشد میتواند نام و محتوای ورودیها را ببیند.
- بایتهای منبع و بایگانی در حال رشد در Worker مرورگر نگه داشته میشوند؛ به همین دلیل سقفها صریحاند.
پرسشهای رایج
آیا فایلها پیش از ساخت ZIP بارگذاری میشوند؟
نه. Worker همین مرورگر Fileهای انتخابی را میخواند و رکوردهای ZIP را روی دستگاه مینویسد. آزمون صفحه در صورت ارسال فایل انتخابی در درخواست شبکه شکست میخورد.
برای JPEG، PDF یا MP۴ کدام حالت بهتر است؟
معمولاً «ذخیره بدون فشردهسازی دوباره». این قالبها از قبل فشردهاند و DEFLATE اغلب با صرف زمان، کاهش محسوسی ایجاد نمیکند و گاهی فایل را کمی بزرگتر میسازد.
آیا حالت Store محتوای فایل را عوض میکند؟
نه. روش ۰ بایتهای دقیق منبع را در ورودی ZIP میگذارد. خود بایگانی سربرگ و CRC دارد، اما استخراج هر ورودی همان بایتهای آغازین را بازمیگرداند.
آیا نام فایل میتواند هنگام استخراج پوشه بسازد؟
نه. همهٔ نامها به basename تخت تبدیل و بخش مسیر حذف میشود. نام تکراری پسوندی با شمارهٔ ترتیبی در پرانتز میگیرد تا فایل دیگری را نپوشاند.
آیا این ابزار روی ZIP گذرواژه میگذارد؟
نه. ورودیهای معمولی Store یا DEFLATE میسازد و ZipCrypto یا AES را پیادهسازی نمیکند. برای محرمانگی از برنامهای با رمزگذاری احرازشده استفاده کنید.
آیا CRC-۳۲ موفق منشأ فایل را ثابت میکند؟
نه. CRC-۳۲ برای کشف خطای تصادفی کنار هر ورودی ذخیره میشود و ویرایشگر میتواند هم داده و هم CRC را عوض کند. برای منشأ، امضای دیجیتال یا SHA-۲۵۶ از یک مسیر مستقل لازم است.