LZ4(1) دستورهای کاربری LZ4(1)

lz4 - فشردهسازی و استخراج بسیار سریع فایلها با الگوریتم LZ4

lz4 [گزینهها] [فایل_ورودی] [فایل_خروجی]
unlz4 فایل...
lz4cat فایل...

دستور unlz4 معادل با lz4 -d است.

دستور lz4cat معادل با lz4 -dcfm است.

هنگام نوشتن اسکریپتهایی که نیاز به بازگشایی فایلها دارند، توصیه میشود همواره به جای نامهای unlz4 و lz4cat از نام اصلی lz4 به همراه آرگومانهای مناسب (lz4 -d یا lz4 -dc) استفاده شود.

ابزار lz4 یک الگوریتم فشردهسازی داده بدون اتلاف با سرعت بسیار بالا است که بر روی سرعت فشردهسازی و بازگشایی دادهها تمرکز دارد. این ابزار به طور معمول سرعتی بیش از ۵۰۰ مگابایت بر ثانیه به ازای هر هسته پردازنده ارائه میدهد. میتوان با افزایش پارامتر سطح فشردهسازی، سرعت را فدای نرخ فشردهسازی بالاتر کرد. در حالی که عملیات بازگشایی تکرشتهای است، سرعت آن به چندین گیگابایت بر ثانیه میرسد که عموماً به اندازه کافی سریع است تا محدود به سرعت ورودی/خروجی (I/O) دیسک باشد. فرمت فایل بومی lz4 پسوند .lz4 است.

دستور lz4 از یک ساختار خط فرمان شبیه، اما نه کاملاً یکسان با gzip(1) پشتیبانی میکند. تفاوتها عبارتند از:

  • دستور lz4 به طور پیشفرض فقط یک فایل را فشرده میکند (گزینه -m را برای چند فایل ببینید).
  • دستور lz4 file1 file2 به معنی فشردهسازی file1 درون file2 است.
  • دستور lz4 file.lz4 به طور پیشفرض به حالت بازگشایی عمل میکند (برای اجبار به فشردهسازی از -z استفاده کنید).
  • دستور lz4 فایلهای اصلی را حفظ میکند (گزینه --rm را برای حذف فایل مبدأ پس از اتمام ببینید).
  • دستور lz4 آمار و وضعیت پیشرفت بلادرنگ را هنگام فشردهسازی یا بازگشایی یک فایل تکی نمایش میدهد (از -q برای بیسدا کردن آن استفاده کنید).
  • هنگامی که مقصدی مشخص نشده باشد، نتیجه به خروجی ضمنی فرستاده میشود که به وضعیت stdout بستگی دارد. هنگامی که stdout کنسول ترمینال نباشد، به خروجی ضمنی تبدیل میشود. در غیر این صورت، اگر stdout ترمینال باشد، خروجی ضمنی برابر با filename.lz4 خواهد بود.
  • تکیه بر خروجی ضمنی در اسکریپتها یک عمل نامناسب در نظر گرفته میشود زیرا محیط اسکریپت ممکن است تغییر کند. همواره در اسکریپتها از خروجی صریح استفاده کنید. گزینه -c تضمین میکند که خروجی حتماً stdout باشد. برعکس، مشخص کردن نام مقصد یا استفاده از -m تضمین میکند که خروجی به ترتیب نام مشخصشده یا filename.lz4 خواهد بود.

رفتارهای پیشفرض را میتوان با دستورات و گزینههای اختیاری زیر تغییر داد:

  • گزینه lz4 -m امکان ارائه چندین نام فایل ورودی را فراهم میسازد که با پسوند .lz4 فشرده خواهند شد. اعلانهای پیشرفت به طور پیشفرض غیرفعال میشوند (از -v برای فعال کردن آنها استفاده کنید). رفتار این حالت شباهت بیشتری به خط فرمان gzip پیدا میکند، با این تفاوت اصلی که فایلهای منبع به طور پیشفرض نگهداری میشوند.
  • به طور مشابه، lz4 -m -d میتواند چندین فایل با الگوی *.lz4 را بازگشایی کند.
  • با استفاده از گزینه --rm میتوان پس از فشردهسازی یا بازگشایی موفق، فایلهای منبع را حذف کرد.
  • در نتیجه، ترکیب lz4 -m --rm رفتاری بسیار نزدیکتر به رفتار gzip ارائه میدهد.

امکان الحاق و اتصال فایلهای .lz4 به همان شکل موجود وجود دارد. ابزار lz4 چنین فایلهایی را طوری بازگشایی میکند که گویی یک فایل واحد .lz4 بودهاند. برای مثال:

lz4 file1  > foo.lz4
lz4 file2 >> foo.lz4

در این صورت دستور lz4cat foo.lz4 معادل با cat file1 file2 خواهد بود.

در برخی موارد، گزینهها را میتوان با دستور کوتاه مانند -x یا دستور بلند مانند --long-word بیان کرد. دستورات کوتاه را میتوان با یکدیگر ترکیب کرد. برای مثال، -d -c معادل -dc است. دستورات طولانی را نمیتوان با هم ترکیب کرد و باید حتماً با یک فاصله از هم جدا شوند.

هنگامی که چندین دستور متناقض در یک خط فرمان صادر شوند، تنها آخرین دستور اعمال خواهد شد.

فشردهسازی. این حالت عملیاتی پیشفرض است هنگامی که هیچ گزینه حالتی مشخص نشده باشد، هیچ حالت دیگری از نام دستور استنباط نشود (برای مثال، unlz4 به معنی --decompress است)، و نام فایل ورودی نیز حالتی را القا نکند (برای مثال، پسوند .lz4 به طور پیشفرض به معنی --decompress است). گزینه -z همچنین میتواند برای اجبار به فشردهسازی فایلی که قبلاً با پسوند .lz4 فشرده شده، استفاده شود.
بازگشایی و استخراج. در صورتی که فایل ورودی پسوند .lz4 داشته باشد نیز این حالت به عنوان عملیات پیشفرض در نظر گرفته میشود.
آزمایش سلامت فایلهای فشرده .lz4. دادههای خارجشده از حالت فشرده دور ریخته میشوند و هیچ فایلی ایجاد یا حذف نمیشود.
حالت بنچمارک (ارزیابی کارایی)، با استفاده از سطح فشردهسازی #.
فهرست کردن اطلاعات فایلهای lz4.. برای دریافت اطلاعات دقیق درباره فایلهای دارای چندین فریم (Frame)، از گزینه -v استفاده کنید. گزینه --list به طور خودکار اصلاحکننده -m را فعال میکند.

-#
سطح فشردهسازی، که در آن # هر مقداری از ۱ تا ۱۲ است. مقادیر بالاتر، سرعت فشردهسازی را فدای نرخ فشردهسازی بیشتر میکنند. مقادیر بالای ۱۲ همانند ۱۲ رفتار میکنند. مقادیر پیشنهادی ۱ برای فشردهسازی سریع (پیشفرض) و ۹ برای فشردهسازی بالا است. موازنه میان سرعت و فشردهسازی بسته به دادههای ورودی تغییر میکند. سرعت بازگشایی در تمامی تنظیمات بسیار سریع باقی میماند.
تغییر به سطوح فشردهسازی فوقسریع. هرچه مقدار بالاتر باشد، سرعت فشردهسازی بیشتر شده و در ازای آن نرخ فشردهسازی کاهش مییابد. اگر =# تعیین نشود، مقدار پیشفرض 1 خواهد بود. این تنظیم سطح فشردهسازی را در صورتی که قبلاً تنظیمی انجام شده باشد بازنویسی میکند. به همین ترتیب اگر بعد از --fast یک سطح فشردهسازی دیگر تعیین شود، بر آن اولویت خواهد داشت.
تنظیم بالاترین سطح فشردهسازی. معادل -12 است.
استفاده از # رشته پردازشی (Thread) برای فشردهسازی. هنگامی که 0 باشد یا مقداری ارائه نشود: به طور خودکار بر اساس تعداد هستههای پردازنده شناساییشده تعیین میشود.
تولید دادههای فشردهشده بهینه‌سازیشده برای سرعت بازگشایی. در نتیجه، دادههای فشرده اندکی حجیمتر خواهند بود (معمولاً حدود ۰٫۵٪)، در حالی که سرعت بازگشایی بسته به مورد استفاده ۵ تا ۲۰ درصد بهبود مییابد. این گزینه تنها در ترکیب با سطوح فشردهسازی بسیار بالا (۱۰ به بالا) کار میکند.
فشردهسازی، بازگشایی یا ارزیابی با استفاده از فرهنگ واژگان dictionaryName. فشردهسازی و بازگشایی برای سازگاری باید از لغتنامه یکسانی استفاده کنند. استفاده از لغتنامه متفاوت در هنگام بازگشایی یا با خطای بازگشایی متوقف میشود یا خطای چکسام ایجاد میکند.
این گزینه چندین اثر دارد:
اگر فایل مقصد از قبل موجود باشد، بدون پرسش آن را رونویسی میکند.
هنگامی که به همراه --decompress استفاده شود و lz4 نتواند نوع فایل مبدأ را تشخیص دهد، فایل مبدأ را بدون تغییر به خروجی استاندارد هدایت میکند. این به lz4cat --force اجازه میدهد تا همانند دستور cat(1) برای فایلهایی که با lz4 فشرده نشدهاند رفتار کند.
اجبار به نوشتن در خروجی استاندارد، حتی اگر مقصد کنسول ترمینال باشد.
فایلهای ورودی چندگانه. پسوند .lz4 به انتهای نام فایلهای فشرده افزوده میشود. این حالت همچنین سطح اعلانها را کاهش میدهد. همچنین برای فهرست کردن چندین فایل قابل استفاده است. رفتار lz4 -m معادل gzip -k است (فایلهای منبع را به طور پیشفرض حفظ میکند).
پیمایش بازگشتی روی دایرکتوریها. این حالت همچنین گزینه -m (فایلهای ورودی چندگانه) را به طور خودکار فعال میکند.
اندازه بلوک [۴-۷] (پیشفرض: ۷)
-B4= ۶۴ کیلوبایت ؛ -B5= ۲۵۶ کیلوبایت ؛ -B6= ۱ مگابایت ؛ -B7= ۴ مگابایت
تولید بلوکهای مستقل (پیشفرض)
وابستگی بلوکها به بلوکهای پیشین (بهبود نرخ فشردهسازی، که در بلوکهای کوچک ملموستر است)
تولید چکسام بلوکها (پیشفرض: غیرفعال)
--[no-]frame-crc
انتخاب چکسام فریم (پیشفرض: فعال)
غیرفعال کردن هر دو چکسام فریم و بلوک
--[no-]content-size
درج اندازه اصلی در هدر (پیشفرض: بدون درج اندازه)
نکته: این گزینه تنها زمانی فعال میشود که اندازه اصلی فایل قابل تعیین باشد (یعنی برای یک فایل). با منابع ورودی با اندازه ناشناخته مانند ورودی استاندارد (stdin) یا پایپ کار نخواهد کرد.
--[no-]sparse
پشتیبانی از حالت فایل اسپارس (پیشفرض: برای فایل فعال، برای خروجی استاندارد غیرفعال)
استفاده از قالب موروثی و قدیمی Legacy (معمولاً برای فشردهسازی کرنل لینوکس)
نکته: گزینه -l با گزینه‌های -m (--multiple) و -r سازگار نیست.

حالت با جزئیات کامل (Verbose)
حذف هشدارها و آمارهای بلادرنگ؛ تعیین دو بار برای نادیده گرفتن خطاها نیز به کار میرود.
نمایش راهنما / راهنمای تفصیلی و خروج
نمایش شماره نسخه و خروج
حفظ فایلهای مبدأ (رفتار پیشفرض)
حذف فایلهای مبدأ پس از فشردهسازی یا بازگشایی موفقیتآمیز
--
در نظر گرفتن تمام آرگومانهای بعدی به عنوان نام فایل

ارزیابی عملکرد فایل(ها) با استفاده از سطح فشردهسازی #
ارزیابی عملکرد چندین سطح فشردهسازی، از b# تا e# (به طور فراگیر)
حداقل زمان ارزیابی به ثانیه [۱-۹] (پیشفرض: ۳)

امکان ارسال برخی پارامترها به lz4 از طریق متغیرهای محیطی وجود دارد. این ویژگی در شرایطی کاربرد دارد که فراخوانی lz4 مشخص است (مثلاً از درون یک اسکریپت)، اما روشی برای ارسال مستقیم پارامترها جهت اثرگذاری بر نشست فشردهسازی وجود ندارد. متغیر محیطی اولویت بالاتری نسبت به پیشفرض فایل اجرایی دارد، اما اولویت آن پایینتر از گزینههای واردشده در خط فرمان زمان اجرا است. هنگامی که به صورت متغیرهای محیطی سراسری تنظیم شوند، روشی مناسب برای اعمال مقادیر پیشفرض سفارشی متفاوت از تنظیمات خود برنامه هستند.

تعیین سطح فشردهسازی پیشفرض که lz4 در صورت عدم تعیین در خط فرمان از آن استفاده میکند. پیشفرض فایل اجرایی عموماً 1 است.
تعیین تعداد پیشفرض رشتهها (Thread) که lz4 برای فشردهسازی استفاده میکند. پیشفرض فایل اجرایی معمولاً 0 است که به معنی تشخیص خودکار بر اساس پردازنده محلی است. این قابلیت تنها زمانی فعال است که lz4 با پشتیبانی از چندرشتگی کامپایل شده باشد. حداکثر تعداد رشتهها با LZ4_NBWORKERS_MAX (پیشفرض 200) محدود شده است.

گزارش اشکالات در: https://github.com/lz4/lz4/issues

Yann Collet

مه ۲۰۲۵ lz4