lrzip(1) lrzip(1)

lrzip - برنامه فشرده‌سازی فایل‌های حجیم

lrzip [OPTIONS] <file>
lrzip -d [OPTIONS] <file>
lrunzip [OPTIONS] <file>
lrzcat [OPTIONS] <file>
lrztar [lrzip options] <directory>
lrztar -d [lrzip options] <directory>
lrzuntar [lrzip options] <directory>
lrz [lrz options] <directory>
LRZIP=NOCONFIG [lrzip|lrunzip] [OPTIONS] <file>

برنامه LRZIP ابزاری برای فشرده‌سازی فایل‌هاست که به طور ویژه برای کارایی بالا روی فایل‌های بسیار بزرگ حاوی افزونگی با فواصل طولانی (long distance redundancy) طراحی شده است. دستور lrztar پوسته‌ای برای LRZIP است تا فشرده‌سازی و استخراج دایرکتوری‌ها را ساده‌تر کند.

در اینجا خلاصه‌ای از گزینه‌های lrzip آورده شده است.

General options:
 -c, --check             check integrity of file written on decompression
 -d, --decompress        decompress
 -e, --encrypt[=password] password protected sha512/aes128 encryption on compression
 -h, -?, --help          show help
 -H, --hash              display md5 hash integrity information
 -i, --info              show compressed file information
 -q, --quiet             don't show compression progress
 -Q, --very-quiet        don't show any output
 -r, --recursive         operate recursively on directories
 -t, --test              test compressed file integrity
 -v[v], --verbose        Increase verbosity
 -V, --version           show version
Options affecting output:
 -D, --delete            delete existing files
 -f, --force             force overwrite of any existing files
 -k, --keep-broken       keep broken or damaged output files
 -o, --outfile filename  specify the output file name and/or path
 -O, --outdir directory  specify the output directory when -o is not used
 -S, --suffix suffix     specify compressed suffix (default '.lrz')
Options affecting compression:
 -b, --bzip2             bzip2 compression
 -g, --gzip              gzip compression using zlib
 -l, --lzo               lzo compression (ultra fast)
 -n, --no-compress       no backend compression - prepare for other compressor
 -z, --zpaq              zpaq compression (best, extreme compression, extremely slow)
Low level options:
 -L, --level level       set lzma/bzip2/gzip compression level (1-9, default 7)
 -N, --nice-level value  Set nice value to value (default 19)
 -p, --threads value     Set processor count to override number of threads
 -m, --maxram size       Set maximum available ram in hundreds of MB
                         overrides detected amount of available ram
 -T, --threshold         Disable LZ4 compressibility testing
 -U, --unlimited         Use unlimited window size beyond ramsize (potentially much slower)
 -w, --window size       maximum compression window in hundreds of MB
                         default chosen by heuristic dependent on ram and chosen compression
LRZIP=NOCONFIG environment variable setting can be used to bypass lrzip.conf.
TMP environment variable will be used for storage of temporary files when needed.
TMPDIR may also be stored in lrzip.conf file.
If no filenames or "-" is specified, stdin/out will be used.

این گزینه بررسی یکپارچگی فایلی را که هنگام استخراج روی دیسک نوشته می‌شود، فعال می‌کند. تمامی استخراج‌ها در lrzip به صورت داخلی با بررسی هش crc32 یا md5 (بسته به نسخه بایگانی) آزموده می‌شوند. با این حال، فایل نوشته‌شده روی دیسک ممکن است به دلایل دیگری ناشی از مشکلات فضای کاربری مانند نسخه‌های معیوب کتابخانه‌ها، درایورها، خرابی سخت‌افزار و غیره دچار آسیب شود. فعال کردن این گزینه موجب می‌شود lrzip یک بررسی هش md5 روی فایل نوشته‌شده در دیسک انجام دهد. اگر مقدار md5 در بایگانی ذخیره شده باشد، با آن مقایسه می‌شود؛ در غیر این صورت با مقدار محاسبه‌شده حین استخراج مقایسه می‌گردد. این امر ضمانتی مضاعف بر یکسان بودن فایل نوشته‌شده با فایل اصلی ذخیره‌شده در بایگانی ارائه می‌دهد.
استخراج (خروج از حالت فشرده). اگر از این گزینه استفاده نشود، lrzip به نامی که برای اجرای برنامه استفاده شده نگاه می‌کند. اگر شامل رشته "lrunzip" باشد، گزینه -d به طور خودکار فعال می‌شود. اگر شامل رشته "lrzcat" باشد، گزینه‌های -d -o - به طور خودکار تنظیم می‌شوند.
رمزگذاری. این گزینه رمزگذاری پیشرفته با گذرواژه را با استفاده از ترکیبی از گذرواژه با چندین مرحله هش sha512، سالت تصادفی و رمزگذاری aes128 در حالت CBC فعال می‌کند. گذرواژه‌هایی تا ۵۰۰ نویسه طول پشتیبانی می‌شوند و سازوکار رمزگذاری استفاده‌شده عملاً تضمین می‌کند که یک فایل یکسان ایجادشده با گذرواژه مشابه هرگز خروجی یکسانی نخواهد داشت. علاوه بر این، تعداد مراحل هش گذرواژه بر اساس تاریخ رمزگذاری فایل افزایش می‌یابد که این امر تعداد چرخه‌های پردازنده مورد نیاز برای هر بار تلاش گذرواژه را مطابق با قانون مور افزایش داده و در نتیجه دشواری حملات brute-force را متناسب با توان پردازشی رایانه‌های مدرن نگه می‌دارد.
چاپ صفحه خلاصه گزینه‌ها.
این گزینه مقدار هش md5 محاسبه‌شده هنگام فشرده‌سازی یا استخراج یک بایگانی lrzip را نمایش می‌دهد. به طور پیش‌فرض از نسخه 0.560 به بعد، در تمامی فشرده‌سازی‌ها مقدار md5 محاسبه و در بایگانی ذخیره می‌شود. هنگام استخراج، اگر مقدار md5 یافت شود، محاسبه شده و برای بررسی یکپارچگی استفاده می‌گردد. اگر مقدار md5 در بایگانی ذخیره نشده باشد، محاسبه نخواهد شد مگر اینکه صراحتاً با این گزینه مشخص شود، یا بررسی یکپارچگی (در ادامه) درخواست شده باشد.
این گزینه اطلاعات مربوط به فایل فشرده‌شده را نمایش می‌دهد؛ از جمله اندازه فشرده، اندازه غیرفشرده، نسبت فشرده‌سازی، الگوریتم فشرده‌سازی استفاده‌شده و نوع هش که برای بررسی یکپارچگی داخلی به کار خواهد رفت. توجه داشته باشید که حالت فشرده‌سازی تنها از روی بلوک اول تشخیص داده می‌شود و اگر بلوک اول غیرقابل فشرده‌سازی باشد، بدون فشرده‌سازی نمایش داده می‌شود، حتی اگر بلوک‌های بعدی فشرده‌پذیر باشند. در صورت افزودن گزینه‌های پرگویی -v یا -vv، تفکیک تمامی بلوک‌های داخلی و اطلاعات دقیق‌تر مربوط به آن‌ها نیز نمایش داده خواهد شد.
در صورت تعیین این گزینه، lrzip درصد پیشرفت را در هنگام فشرده‌سازی نشان نخواهد داد. توجه داشته باشید که فشرده‌سازی با الگوریتم lzma (که فشرده‌سازی پیش‌فرض است) به صورت انفجاری رخ می‌دهد؛ یعنی برای دوره‌های کوتاه با سرعت بسیار بالا پیش می‌رود و سپس برای دوره‌های طولانی متوقف می‌شود.
در صورت تعیین این گزینه، lrzip به جز پیام‌های خطا هیچ خروجی دیگری در کنسول نمایش نخواهد داد.
در صورت تعیین این گزینه، lrzip به صورت بازگشتی وارد دایرکتوری‌های مشخص‌شده می‌شود و هر فایل را به طور جداگانه در همان دایرکتوری فشرده یا استخراج می‌کند. توجه داشته باشید که برای فشرده‌سازی بهتر، توصیه می‌شود به جای فشرده‌سازی جداگانه فایل‌ها، آن‌ها را به صورت دستی یا با استفاده از ابزار کمکی lrztar درون یک فایل tar ترکیب کنید.
آزمایش یکپارچگی فایل فشرده‌شده. این کار با استخراج آن در یک فایل موقت و سپس حذف آن انجام می‌شود.
افزایش سطح پرگویی (verbosity). گزینه -vv پیام‌های بیشتری نسبت به -v چاپ خواهد کرد.
چاپ شماره نسخه lrzip.

در صورت تعیین این گزینه، lrzip پس از فشرده‌سازی یا استخراج موفقیت‌آمیز، فایل مبدأ را حذف خواهد کرد. در صورت عدم تعیین این گزینه، فایل‌های مبدأ حذف نمی‌شوند.
در صورت مشخص نشدن این گزینه (پیش‌فرض)، lrzip هیچ فایل موجودی را بازنویسی نخواهد کرد. با تنظیم این گزینه، فایل‌های موجود در صورت نیاز بدون هشدار بازنویسی می‌شوند.
این گزینه فایل‌های خراب یا آسیب‌دیده را به جای حذف، نگه می‌دارد. هنگامی که فشرده‌سازی یا استخراج توسط کاربر یا به دلیل خطا متوقف شود، یا فایل استخراج‌شده در بررسی یکپارچگی مردود شود، معمولاً توسط LRZIP حذف می‌گردد.
تعیین نام فایل خروجی. اگر این گزینه تنظیم نشود، نام فایل خروجی بر اساس نام ورودی و پسوند انتخاب می‌شود. در صورتی که بیش از یک نام فایل در خط فرمان مشخص شده باشد، نمی‌توان از گزینه -o استفاده کرد.
تعیین دایرکتوری خروجی برای نام فایل پیش‌فرض. این گزینه نمی‌تواند با -o ترکیب شود.
تعیین پسوند فشرده‌سازی. پیش‌فرض '.lrz' است.

فشرده‌سازی با Bzip2. از فشرده‌سازی bzip2 برای مرحله دوم استفاده می‌کند، مشابه کاری که rzip اصلی انجام می‌دهد.
فشرده‌سازی با Gzip. از فشرده‌سازی gzip برای مرحله دوم استفاده می‌کند و از توابع compress و uncompress کتابخانه libz بهره می‌برد.
فشرده‌سازی با LZO. در صورت تنظیم این گزینه، lrzip از الگوریتم فشرده‌سازی فوق‌سریع lzo برای مرحله دوم استفاده خواهد کرد. این حالت فشرده‌سازی، کارایی مشابه bzip2 را با سرعتی معادل زمان لازم برای یک کپی ساده از فایل ارائه می‌دهد که ارزش نسبت فشرده‌سازی به زمان بسیار بالایی ایجاد می‌کند.
بدون فشرده‌سازی مرحله دوم. در صورت تنظیم این گزینه، lrzip تنها مرحله اول فشرده‌سازی افزونگی فواصل طولانی را انجام می‌دهد. اگرچه این حالت سریع‌تر از فشرده‌سازی LZO نیست، اما فایلی کوچک‌تر تولید می‌کند که نسبت به فشرده‌سازی‌های بعدی (مثلاً توسط برنامه‌ای دیگر) واکنش بهتری نشان می‌دهد و همچنین زمان فشرده‌سازی بعدی را به طور چشمگیری کاهش می‌دهد.
فشرده‌سازی با ZPAQ. از فشرده‌سازی ZPAQ که از خانواده فشرده‌سازهای PAQ است استفاده می‌کند؛ الگوریتم‌هایی که برای دستیابی به بالاترین نسبت‌های فشرده‌سازی ممکن شناخته شده‌اند اما به بهای بسیار کُند بودن در هر دو عملیات فشرده‌سازی و استخراج (۴ برابر کُندتر از lzma که حالت پیش‌فرض است).

تنظیم سطح فشرده‌سازی از 1 تا 9. پیش‌فرض استفاده از سطح 7 است که فشرده‌سازی متوازن و مناسبی ارائه می‌دهد. سطح فشرده‌سازی همچنین ارتباط زیادی با میزان حافظه مصرفی lrzip دارد. برای جزئیات به گزینه -w مراجعه کنید.
مقدار nice پیش‌فرض 19 است. از این گزینه می‌توان برای تنظیم اولویت زمان‌بندی فرایند پشتیبان‌گیری یا استخراج lrzip استفاده کرد. مقادیر معتبر nice از -20 تا 19 هستند. توجه داشته باشید که این گزینه سرعت فشرده‌سازی را کم یا زیاد نمی‌کند.
تنظیم تعداد پردازنده‌ها برای تعیین تعداد ریسه‌ها (threads) جهت اجرا. به طور معمول lrzip متناسب با تعداد CPUهای شناسایی‌شده مقیاس‌پذیر است. استفاده از این گزینه مقدار شناسایی‌شده را لغو می‌کند، در صورتی که بخواهید از CPUهای کمتری برای کاهش بار کاری سیستم یا بهبود فشرده‌سازی استفاده کنید. تنظیم آن روی 1 فشرده‌سازی را به حداکثر می‌رساند اما تلاشی برای استفاده از بیش از یک CPU نخواهد کرد.
غیرفعال کردن آزمایش آستانه فشرده‌پذیری LZ4 هنگامی که از یک موتور فشرده‌سازی پسین کُندتر استفاده می‌شود. آزمایش LZ4 معمولاً برای فشرده‌سازی‌های پسین کندتر یعنی LZMA و ZPAQ انجام می‌شود. دلیل این امر آن است که اگر داده‌ای اصلاً توسط LZ4 فشرده‌پذیر نباشد، توسط آن‌ها نیز فشرده‌پذیر نخواهد بود. بنابراین اگر یک بلوک نتواند با فشرده‌ساز بسیار سریع LZ4 فشرده شود، lrzip تلاشی برای فشرده‌سازی آن با فشرده‌ساز کُندتر نخواهد کرد و بدین ترتیب در زمان صرفه‌جویی می‌شود. اگر این گزینه فعال شود، آزمایش LZ4 نادیده گرفته شده و در هر صورت تلاش می‌شود تا تک‌تک بلوک‌ها فشرده شوند.
اندازه نامحدود پنجره (Unlimited window size). اگر این گزینه تنظیم شود و فایل فشرده‌شونده در رم در دسترس جا نشود، lrzip از یک بافر دوم متحرک به عنوان "sliding mmap" استفاده می‌کند که داشتن رم نامحدود را شبیه‌سازی می‌نماید. این حالت حداکثر فشرده‌سازی ممکن را در مرحله اول rzip فراهم می‌کند که می‌تواند فشرده‌سازی فایل‌های فوق‌العاده حجیم را هنگامی که بزرگ‌تر از رم در دسترس هستند بهبود بخشد. با این حال، هرچه تفاوت بین رم و اندازه فایل بیشتر باشد، سرعت اجرا به طور تصاعدی کاهش می‌یابد؛ بنابراین بهتر است فقط برای مواردی استفاده شود که کوچک‌ترین اندازه ممکن روی یک فایل بسیار بزرگ مد نظر است و زمان صرف‌شده اهمیتی ندارد.
تنظیم حداکثر اندازه مجاز پنجره فشرده‌سازی به میزان n صد مگابایت. این مقداری از حافظه است که lrzip در مرحله اول پیش‌فشرده‌سازی در آن جستجو می‌کند و عامل اصلی تعیین‌کننده میزان مزیتی است که lrzip نسبت به فشرده‌سازی معمولی با الگوریتم مرحله دوم ارائه می‌دهد. در صورت تنظیم نشدن (توصیه‌شده)، مقدار انتخابی توسط یک سازوکار شهودی داخلی در lrzip تعیین می‌شود که از بیشترین حافظه معقول بدون هیچ سقف سختی استفاده می‌کند. این مقدار روی سیستم‌های ۳۲ بیتی به 2 گیگابایت محدود است. lrzip همواره اندازه پنجره را به بزرگ‌ترین حدی که بدون اتمام حافظه ممکن است کاهش می‌دهد.

دستور "make install" را اجرا کنید یا به سادگی lrzip را در مکانی در مسیر جستجوی (PATH) خود نصب نمایید.

ابزار LRZIP در دو مرحله عمل می‌کند. مرحله اول تکه‌های بزرگ داده‌های تکراری را در فواصل بالقوه بسیار طولانی در فایل ورودی پیدا و کدگذاری می‌کند. مرحله دوم استفاده از یک الگوریتم فشرده‌سازی برای فشرده کردن خروجی مرحله اول است. الگوریتم فشرده‌سازی را می‌توان به گونه‌ای انتخاب کرد که برای دستیابی به کمترین اندازه ممکن (zpaq)، اندازه فشرده مناسب (lzma - پیش‌فرض)، سرعت بالا (lzo)، سازگاری با سیستم‌های قدیمی (bzip2 یا gzip) بهینه‌سازی شود یا کلاً حذف شده و تنها مرحله اول انجام گیرد. یک فایل که فقط در مرحله اول فشرده شده است، تقریباً همیشه می‌تواند هم اندازه و هم سرعت فشرده‌سازی توسط یک برنامه فشرده‌ساز بعدی را بهبود بخشد.

تفاوت کلیدی بین lrzip و سایر الگوریتم‌های شناخته‌شده فشرده‌سازی، توانایی آن در بهره‌گیری از افزونگی در فواصل بسیار دور است. الگوریتم معروف deflate که در gzip به کار می‌رود از یک بافر تاریخچه با حداکثر ۳۲ کیلوبایت استفاده می‌کند. الگوریتم مرتب‌سازی بلوکی مورد استفاده در bzip2 به ۹۰۰ کیلوبایت تاریخچه محدود است. بافر تاریخچه در lrzip می‌تواند هر طولی داشته باشد و حتی محدود به رم در دسترس نیز نمی‌باشد.

امروزه فشرده‌سازی فایل‌هایی که حاوی افزونگی فواصل طولانی هستند بسیار رایج است. برای نمونه، هنگام فشرده‌سازی مجموعه‌ای از دایرکتوری‌های خانگی، چند کاربر ممکن است رونوشت‌هایی از یک فایل یا فایل‌های کاملاً مشابه داشته باشند. همچنین داشتن یک فایل مجزا که شامل بخش‌های بزرگ تکراری در فواصل طولانی باشد متداول است؛ مانند فایل‌های pdf که شامل چندین نسخه تکراری از یک تصویر هستند. بیشتر برنامه‌های فشرده‌سازی قادر به استفاده از این افزونگی نخواهند بود و بنابراین ممکن است به نسبت فشرده‌سازی بسیار کمتری نسبت به آنچه lrzip به دست می‌آورد، برسند.

ابزار LRZIP یک فایل پیکربندی را که شامل تنظیمات پیش‌فرض است شناسایی می‌کند. این پیکربندی در دایرکتوری جاری، /etc/lrzip و $HOME/.lrzip جستجو می‌شود. نام فایل پیکربندی باید lrzip.conf باشد.

به‌طور پیش‌فرض، lrzip یک فایل پیکربندی با نام lrzip.conf را جستجو و استفاده می‌کند. اگر کاربر بخواهد این فایل را نادیده بگیرد، می‌تواند یک متغیر محیطی را پیش از اجرا تنظیم کند:
LRZIP = NOCONFIG [lrzip|lrunzip] [OPTIONS] <file>
که باعث می‌شود lrzip فایل پیکربندی را نادیده بگیرد.

ایده‌های اولیه rzip نخستین بار در سال ۱۹۹۸ هنگامی که روی rsync کار می‌کردم پیاده‌سازی شدند. آن نسخه برای کاربرد عملی بسیار کُند بود و در سال ۲۰۰۳ با نسخه فعلی جایگزین شد. ابزار LRZIP با هدف دستیابی به فشرده‌سازی بهتر و/یا سرعت بیشتر توسط Con Kolivas از طریق ترکیب الگوریتم‌های فشرده‌سازی lzma و lzo با مرحله اول rzip و گسترش پنجره‌های فشرده‌سازی متناسب با افزایش حجم رم ایجاد شد.

مورد شناخته‌شده‌ای وجود ندارد.

lrzip.conf(5), lrunzip(1), lrzcat(1), lrztar(1), lrzuntar(1), lrz(1), bzip2(1), gzip(1), lzop(1), rzip(1), zip(1)

وضعیت خروج در حالت عادی 0 است؛ در صورت بروز خطا وضعیت خروج 1 و برای خطاهای کاربردی (نحوه استفاده) 2 خواهد بود.

ابزار lrzip بر پایه rzip توسط Con Kolivas بازنویسی و توسعه داده شده است.
برنامه rzip توسط Andrew Tridgell نوشته شده است.
الگوریتم lzma توسط Igor Pavlov نوشته شده است.
الگوریتم lzo توسط Markus Oberhumer نوشته شده است.
الگوریتم zpaq توسط Matt Mahoney نوشته شده است.
افزودن خروجی اطلاعاتی، به‌روزرسانی LZMA SDK و افزودن قابلیت‌های چندریسه‌ای lzma توسط Peter Hyman انجام شده است.

اگر مایل به گزارش مشکل یا ارائه پیشنهاد هستید، لطفاً به مخزن گیت در نشانی زیر مراجعه کنید: https://github.com/ckolivas/lrzip

ابزار lrzip تحت مجوز عمومی همگانی گنو (GNU General Public License) نسخه ۲ منتشر شده است. لطفاً برای جزئیات مجوز فایل COPYING را ببینید.

February 2022