.\" dictzip.1 -- .\" Created: Sun Jun 22 16:33:39 1997 by faith@acm.org .\" Copyright 1997, 1998 Rickard E. Faith (faith@acm.org) .\" Copyright 2002-2008 Aleksey Cheusov (vle@gmx.net) .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .TH DICTZIP 1 "22 Jun 1997" "" "" .SH "نام (NAME)" dictzip, dictunzip \- فشرده‌سازی (یا باز کردن) فایل‌ها با امکان دسترسی تصادفی .SH "خلاصه دستور (SYNOPSIS)" .nf .BI "dictzip [" options "] " name .br .BI "dictunzip [" options "] " name .fi .SH "توضیحات (DESCRIPTION)" برنامهٔ .B dictzip فایل‌ها را با استفاده از الگوریتم .BR gzip (1) (LZ77) و به‌شیوه‌ای که کاملاً با قالب فایل .B gzip سازگار است، فشرده می‌کند. یک افزونه برای قالب فایل .B gzip (فیلد اضافی «Extra Field»، شرح داده‌شده در بخش 2.3.1.1 از RFC 1952) امکان ذخیرهٔ داده‌های اضافی در سرآیند فایل فشرده را فراهم می‌کند. برنامه‌هایی مانند .B gzip و .B zcat این داده‌های اضافی را نادیده خواهند گرفت. با این حال، .BR dictd (8)، کارساز واژه‌نامه با پروتکل DICT، از این داده‌ها برای انجام دسترسی شبه‌تصادفی روی فایل استفاده می‌کند. فایل‌ها در قالب .B dictzip باید با پسوند «‎.dz» خاتمه یابند تا از فایل‌های معمولی .B gzip که فاقد این اطلاعات ویژه در سرآیند هستند، متمایز شوند. .P طبق RFC 1952، فیلد اضافی به‌صورت زیر مشخص می‌شود: .sp .RS اگر بیت FLG.FEXTRA تنظیم شده باشد، یک «فیلد اضافی» (extra field) با طول کل XLEN بایت در سرآیند وجود دارد. این فیلد شامل مجموعه‌ای از زیرفیلدها است که هر یک ساختاری به‌صورت زیر دارند: .sp .nf +---+---+---+---+==================================+ |SI1|SI2| LEN |... LEN bytes of subfield data ...| +---+---+---+---+==================================+ .fi .sp شناسه‌های SI1 و SI2 یک شناسهٔ زیرفیلد (subfield ID)، معمولاً دو حرف ASCII با مقداری یادافزا (mnemonic) فراهم می‌کنند. Jean-Loup Gailly به نشانی پایگاه ثبت شناسه‌های زیرفیلد را نگهداری می‌کند؛ لطفاً هر شناسهٔ زیرفیلدی را که مایل به استفاده از آن هستید برای او ارسال کنید. شناسه‌های زیرفیلدی با SI2 = 0 برای کاربردهای آینده رزرو شده‌اند. .P مقدار LEN طول داده‌های زیرفیلد را بدون احتساب ۴ بایت اولیه مشخص می‌کند. .RE .sp برنامهٔ .B dictzip از نویسهٔ \(aqR\(aq برای SI1 و از نویسهٔ \(aqA\(aq برای SI2 (کوتاه‌شدهٔ «Random Access» یا دسترسی تصادفی) استفاده می‌کند. پس از فیلد LEN، داده‌ها به‌صورت زیر مرتب شده‌اند: .sp .nf +---+---+---+---+---+---+===============================+ | VER | CHLEN | CHCNT | ... CHCNT words of data ... | +---+---+---+---+---+---+===============================+ .fi .sp مطابق با RFC 1952، تمام داده‌ها به‌صورت ابتدا بایت کم‌ارزش‌تر (least-significant byte first) ذخیره می‌شوند. برای VER با مقدار 1 داده‌ها، تمام مقادیر ۱۶ بیتی (۲ بایت) و از نوع عدد صحیح بدون علامت (unsigned integers) هستند. .P مقدار XLEN (که پیش‌تر در سرآیند مشخص شده است) یک عدد صحیح دو بایتی است، بنابراین طول فیلد اضافی می‌تواند حداکثر 0xffff بایت باشد؛ ۲ بایت از آن برای شناسهٔ زیرفیلد (SI1 و SI2) و ۲ بایت دیگر برای طول زیرفیلد (LEN) استفاده می‌شود. این امر 0xfffb بایت باقی می‌گذارد (0x7ffd مدخل ۲ بایتی یا 0x3ffe مدخل ۴ بایتی). با توجه به اینکه بافر خروجی zip باید ۱۰٪ + ۱۲ بایت بزرگ‌تر از بافر ورودی باشد، می‌توان ۵۸۹۶۹ بایت به‌ازای هر مدخل، یا در صورت استفاده از مدخل‌های ۲ بایتی، حدود ۱٫۸ گیگابایت را ذخیره کرد. اگر این موضوع به یک عامل محدودکننده تبدیل شود، می‌توان نگارش قالب دیگری را برای مدخل‌های ۴ بایتی انتخاب و تعریف نمود. .P برای فشرده‌سازی، فایل به «تکه‌ها»یی (chunks) از داده تقسیم می‌شود؛ هر تکه کمتر از ۶۴ کیلوبایت بوده و می‌تواند در ناحیه‌ای که آن هم کمتر از ۶۴ کیلوبایت طول دارد فشرده شود (با در نظر گرفتن داده‌های فشرده‌ناپذیر \- داده‌ها معمولاً در بلوکی فشرده می‌شوند که بسیار کوچک‌تر از اندازهٔ اولیه است). فیلد CHLEN طول یک «تکه» از داده را مشخص می‌کند. فیلد CHCNT مشخص می‌کند چه تعداد تکه وجود دارد، و کلمات دادهٔ CHCNT مشخص می‌کنند که هر تکه پس از فشرده‌سازی (یعنی در فایل فشردهٔ فعلی) چه طولی دارد. .P برای انجام دسترسی تصادفی روی داده‌ها، آفست (موقعیت) و طول داده‌ها به توابع کتابخانه‌ای ارائه می‌شوند. این توابع تکه‌ای را که داده‌های مورد نظر در آن آغاز می‌شود تعیین کرده و آن تکه را از حالت فشرده خارج می‌کنند. تکه‌های متوالی در صورت لزوم از حالت فشرده خارج می‌شوند. .SH "موازنه‌ها (TRADEOFFS)" .TP .B سرعت (Speed) دسترسی تصادفی واقعی به فایل محقق نمی‌شود، زیرا هرگونه دسترسی، حتی برای یک بایت منفرد، نیازمند آن است که یک تکهٔ ۶۴ کیلوبایتی خوانده شده و از حالت فشرده خارج شود. این روش کندتر از دسترسی به یک فایل متنی ساده است، اما بسیار، بسیار سریع‌تر از انجام دسترسی ترتیبی (سریالی) روی یک فایل کاملاً فشرده‌شده است. .TP .B فضا (Space) برای پایگاه‌های دادهٔ متنی واژه‌نامه که ما با آن‌ها سر و کار داریم، استفاده از تکه‌های ۶۴ کیلوبایتی و حداکثر فشرده‌سازی LZ77 فایلی تولید می‌کند که تنها حدود ۴٪ بزرگ‌تر از فشرده‌سازی همان فایل به‌صورت یک‌باره است. .SH "گزینه‌ها (OPTIONS)" .TP .BR \-d " یا " \-\-decompress از حالت فشرده خارج کردن (استخراج). اگر برنامه با نام .B dictunzip فراخوانی شود، این حالت پیش‌فرض است. .TP .BR \-c " یا " \-\-stdout نوشتن خروجی روی خروجی استاندارد؛ بدون تغییر نگه داشتن فایل‌های اصلی. این گزینه تنها هنگام خارج کردن از فشرده‌سازی در دسترس است (زیرا در زمان فشرده‌سازی، بخش‌هایی از سرآیند پس از نوشتن باید به‌روزرسانی شوند). .TP .BR \-f " یا " \-\-force اجبار به فشرده‌سازی یا استخراج، حتی اگر فایل خروجی از پیش وجود داشته باشد. .TP .BR \-h " یا " \-\-help نمایش راهنما. .TP .BR \-k " یا " \-\-keep حذف نکردن فایل اصلی. .TP .BR \-l " یا " \-\-list به‌ازای هر فایل فشرده، فیلدهای زیر را فهرست می‌کند: type: dzip، gzip یا text (شامل فایل‌هایی با قالب‌های ناشناخته) crc: چکسام CRC date and time: تاریخ و زمان از سرآیند chunks: تعداد تکه‌ها در فایل size: اندازهٔ هر تکه در حالت غیرفشرده compr.: اندازهٔ فشرده uncompr.: اندازهٔ غیرفشرده ratio: نسبت فشرده‌سازی (0.0% در صورت نامشخص بودن) name: نام فایل غیرفشرده برخلاف .BR gzip ، روش فشرده‌سازی شناسایی نمی‌شود. .TP .BR \-L " یا " \-\-license نمایش مجوز .B dictzip و خروج. .TP .BR \-t " یا " \-\-test بررسی صحت و سلامت فایل فشرده. این گزینه پیاده‌سازی نشده است؛ در عوض، اطلاعات سرآیند را فهرست می‌کند. .TP .BR \-v " یا " \-\-verbose حالت پرگو. نمایش اطلاعات اضافی در حین فشرده‌سازی. .TP .BR \-V " یا " \-\-version نگارش. نمایش شمارهٔ نگارش و گزینه‌های زمان ساخت، سپس خروج. .TP .BI \-s " start\fR یا " \-\-start " start" تعیین آفست برای شروع استخراج، با استفاده از اعداد ده‌دهی. مقدار پیش‌فرض ابتدای فایل است. .TP .BI \-e " size\fR یا " \-\-size " size" تعیین اندازهٔ بخشی از فایل برای خارج کردن از حالت فشرده، با استفاده از اعداد ده‌دهی. مقدار پیش‌فرض کل فایل است. .TP .BI \-S " start\fR یا " \-\-Start " start" تعیین آفست برای شروع استخراج، با استفاده از اعداد در مبنای ۶۴ (base64). مقدار پیش‌فرض ابتدای فایل است. .TP .BI \-E " size\fR یا " \-\-Size " start" تعیین اندازهٔ بخشی از فایل برای خارج کردن از حالت فشرده، با استفاده از اعداد در مبنای ۶۴ (base64). مقدار پیش‌فرض کل فایل است. .TP .BI \-p " prefilter\fR یا " \-\-pre " prefilter" تعیین یک فرمان شل برای اجرا به‌عنوان پالایه پیش از فشرده‌سازی یا استخراج یک تکه. پالایه‌های پیش و پس از فشرده‌سازی را می‌توان برای فراهم آوردن فشرده‌سازی بیشتر یا قالب‌بندی خروجی به کار برد. پالایه‌ها نباید اندازهٔ بافر را به‌میزان چشمگیری افزایش دهند. پالایه‌های پیش و پس از فشرده‌سازی برای ارائهٔ عمومی‌ترین رابط ممکن طراحی شده‌اند. .TP .BI \-P " postfilter\fR یا " \-\-post " postfilter" تعیین یک فرمان شل برای اجرا به‌عنوان پالایه پس از فشرده‌سازی یا استخراج. .SH "قدردانی‌ها (CREDITS)" برنامهٔ .B dictzip توسط Rik Faith (faith@cs.unc.edu) نوشته شده است و تحت شرایط مجوز همگانی عمومی گنو (GNU General Public License) توزیع می‌شود. اگر به توزیع تحت شرایط دیگری نیاز دارید، با نویسنده مکاتبه کنید. .P کتابخانه‌های اصلی استفاده‌شده توسط این برنامه (zlib، regex، libmaa) تحت شرایط متفاوتی توزیع می‌شوند، بنابراین ممکن است بتوانید از این کتابخانه‌ها برای برنامه‌هایی که با GPL ناسازگار هستند استفاده کنید \- لطفاً برای اطلاعات بیشتر اعلان‌های حق تکثیر و اطلاعات مجوزی را که همراه کتابخانه‌ها ارائه شده‌اند مشاهده کنید و برای رفع این مسائل با وکیل حقوقی خود مشورت نمایید. .SH "همچنین ببینید (SEE ALSO)" .BR dict (1), .BR dictd (8), .BR gzip (1), .BR gunzip (1), .BR zcat (1)