.TH ddr_lzma 1 "2024-03-10" "Dmitrii Ivanov" "XZ de/compression plugin for dd_rescue" . .SH "نام (NAME)" ddr_lzma \- پلاگین فشرده‌سازی/استخراج داده برای dd_rescue . .SH "خلاصه دستور (SYNOPSIS)" .na .nh .B -L /path/to/libddr_lzma.so[=option[:option[:...]]] .br .B -L lzma=[=option[:option[:...]]] . .SH "توضیحات (DESCRIPTION)" .SS "درباره (About)" قالب XZ یک قالب بایگانی است که از الگوریتم فشرده‌سازی LZMA2، همچنین شناخته‌شده با عنوان الگوریتم زنجیره لِمپِل-زیو-مارکوف (Lempel-Ziv-Markov chain)، استفاده می‌کند. الگوریتم LZMA2 برخی از کاستی‌های الگوریتم بسیار موفق LZMA را برطرف کرده است؛ الگوریتمی که نسبت‌های فشرده‌سازی بالایی ارائه می‌دهد و به سرعت‌های فوق‌العاده‌اش در استخراج (decompression) مشهور است. این قالب در مقایسه با مواردی چون LZO، به بهای کاهش سرعت فشرده‌سازی، برای دستیابی به نسبت‌های فشرده‌سازی بسیار بهتر بهینه‌سازی شده است. پایین‌ترین سطوح پیش‌تنظیم (preset) آن معمولاً چه از نظر نسبت فشرده‌سازی و چه سرعت، بالاترین سطوح gzip و پایین‌ترین سطوح bzip2 را شکست می‌دهند. .PP این پلاگین برای .B dd_rescue نوشته شده است و از رابط پلاگین آن استفاده می‌کند. برای اطلاعات بیشتر دربارهٔ .B dd_rescue صفحهٔ راهنمای .BR dd_rescue(1) را ببینید. . .SH "گزینه‌ها (OPTIONS)" گزینه‌ها با استفاده از نحو ارسال گزینه در .B dd_rescue منتقل می‌شوند: نام پلاگین (lzma) اختیاری است و به دنبال آن یک علامت مساوی (=) می‌آید و گزینه‌ها با دونقطه (:) از هم جدا می‌شوند. پلاگین .B lzma همچنین امکان استفاده از بیشتر گزینه‌های رایج ابزار xz را همراه با چند گزینهٔ اضافی فراهم می‌کند. بخش «مثال‌ها» را در زیر ببینید. . .SS "فشرده‌سازی یا استخراج (Compression or decompression)" پلاگین lzma در dd_rescue (که در ادامه صرفاً به عنوان ddr_lzma نامیده می‌شود تا منعکس‌کنندهٔ بخش‌های متغیر نام فایل libddr_lzma.so باشد)، در صورتی که یکی از فایل‌های ورودی/خروجی دارای پسوند [lt]xz باشد، حالت فشرده‌سازی یا استخراج را به‌طور خودکار انتخاب می‌کند؛ در غیر این صورت می‌توانید پارامترهای .B z یا .B d را به ترتیب برای فشرده‌سازی و استخراج در خط فرمان مشخص کنید. .P پارامتر .B mt به ddr_lzma می‌گوید که فشرده‌سازی/استخراج را در حالت چندنخی (multithreaded) انجام دهد. این کار ممکن است با به‌کارگیری تمامی هسته‌های پردازنده (CPU)، پردازش داده‌ها را تسریع کند. اگر تعداد هسته‌ها قابل شناسایی نباشد، تنها از یک هسته استفاده خواهد شد. همچنین می‌توانید .B mt=N را برای تعیین صریح تعداد نخ‌های مورد استفاده منتقل کنید. .br توجه داشته باشید که liblzma قبل از نسخهٔ 5.2.0 از فشرده‌سازی چندنخی پشتیبانی نمی‌کند، در حالی که liblzma پیش از 5.4.0 از استخراج چندنخی پشتیبانی نمی‌کند. در این صورت این پارامتر نادیده گرفته خواهد شد. .P این پلاگین همچنین از پارامتر .B bench[mark] پشتیبانی می‌کند؛ در صورت تعیین آن، اطلاعاتی دربارهٔ میزان مصرف پردازنده در خروجی نمایش داده می‌شود. .P اگر صرفاً می‌خواهید بررسی یکپارچگی فایل فشرده‌شده با xz را انجام دهید، می‌توانید از .B test استفاده کنید؛ در صورت خرابی داده‌ها، پیامی در کنسول دریافت خواهید کرد. به‌جای test می‌توانید صرفاً از t استفاده کنید. .P پارامتر .B check=XXX را ارسال کنید که در آن XXX می‌تواند یکی از الگوریتم‌های چکسام یکپارچگی زیر باشد: CRC32، CRC64، SHA256، NONE. اگر مقدار NONE مشخص شود، چکسام یکپارچگی در حین فشرده‌سازی محاسبه نخواهد شد. به‌طور پیش‌فرض، CRC32 توسط پلاگین محاسبه می‌شود. .P همچنین اگر می‌خواهید مصرف حافظه را هنگام رمزگشایی محدود کنید، از پارامتر زیر استفاده کنید: .B memlimit=XXX ، که در آن XXX محدودیت حافظه برای رمزگشایی است. پسوندهای معمول k، M، G پشتیبانی می‌شوند. مقادیر کمتر از 1M یا فراتر از اندازهٔ حافظهٔ سیستم پذیرفته نخواهند شد. . .SS "پیش‌تنظیم‌های فشرده‌سازی (Compression presets)" پارامتر .B preset=X ، نسبت فشرده‌سازی را انتخاب می‌کند، که در آن X می‌تواند یک عدد صحیح بین 0 تا 9 (شامل هر دو) باشد. مقدار پیش‌فرض 3 است که از مقدار پیش‌فرض 6 در xz پایین‌تر است، اما پهنای باند بسیار بهتری را ارائه می‌دهد. تأثیر آن بر سرعت و نسبت فشرده‌سازی چشمگیر است؛ مستندات xz را ببینید. توجه داشته باشید که سرعت استخراج در lzma همیشه بسیار مطلوب است، حتی بدون حالت چندنخی. می‌توانید حرف e را به سطح پیش‌تنظیم اضافه کنید تا از پردازندهٔ بیشتری استفاده شود (اما بدون افزایش مصرف حافظه) و داده‌ها بهتر فشرده شوند. این مورد معادل پرچم --extreme در xz است. اگر به دنبال سطوح فشرده‌سازی بهتری نسبت به بالاترین حالت gzip (یا سطوح پایین bzip2) با سرعتی بالاتر هستید، از سطوح 0، 1 و 2 استفاده کنید. حالت چندنخی ممکن است سرعت را باز هم افزایش دهد، گرچه باید آن را روی سیستم خود بیازمایید؛ به ادامه مراجعه کنید. برای دستیابی به بالاترین سرعت فشرده‌سازی (کمترین مصرف CPU) و کمترین میزان مصرف حافظه با فشرده‌سازی بسیار اندک، در عوض از پلاگین lzo استفاده کنید. . .SH "گزارش باگ‌ها و محدودیت‌ها (BUGS/LIMITATIONS)" .SS "بلوغ (Maturity)" این پلاگین از زمان انتشار dd_rescue 1.99.17 تازه است. هنوز به داده‌های ذخیره‌شده با ddr_lzma به‌عنوان تنها نسخهٔ پشتیبان برای داده‌های ارزشمند اتکا نکنید. گزینه‌ها نیز ممکن است در آینده دستخوش تغییر شوند. پس از وقایع پیرامون xz/liblzma در مارس ۲۰۲۴، باید پیش از ارسال فایل‌های فشردهٔ غیرقابل‌اعتماد به این کد، بررسی‌های بیشتری بر روی آن انجام شود. .P داده‌های فشرده نسبت به داده‌های خام در برابر خرابی داده‌ها آسیب‌پذیرتر هستند. توجه داشته باشید که چکسام‌های موجود در قالب فایل xz اجازهٔ تصحیح خطاها را نمی‌دهند، چرا که بایت‌های بعدی وابسته به بایت‌های پیشین هستند. چکسام‌ها صرفاً تشخیص نسبتاً مطمئنی از خرابی داده را ممکن می‌سازند. .P برخلاف ddr_lzo، تلاشی برای بازیابی مطلوب از داده‌های فشردهٔ آسیب‌دیده صورت نگرفته است. ممکن است liblzma در برخی موارد داده‌ها را بازیابی کند، اما روی آن حساب نکنید. .P هنگام تصمیم‌گیری برای انتخاب قالب ذخیره‌سازی فشرده، لطفاً https://www.nongnu.org/lzip/xz_inadequate.html را مطالعه کنید. گرچه ممکن است تمام دلایل مطرح‌شده در آنجا به همان اندازه‌ای که نویسنده بیان می‌کند جدی نباشند، اما معتبر هستند. در حال حاضر، پلاگین lzma تنها گزینهٔ موجود برای فشرده‌سازی بالا در dd_rescue است؛ برای محافظت در برابر خرابی جهت ذخیره‌سازی طولانی‌مدت، استفاده از ابزارهایی مانند par2 را مد نظر قرار دهید. ممکن است در آینده پلاگین‌های lzip، zstd یا موارد دیگری افزوده شوند. برای بسیاری از اهداف، پلاگین آزموده‌شدهٔ lzo همچنان گزینه‌ای منطقی است. .P هنگام استفاده از حالت چندنخی، ممکن است با باگ‌هایی روبه‌رو شوید. مفقود بودن نمادهای توابع در مقداردهی اولیهٔ رمزگشا، یا تنظیم همیشگی memlimit برای رمزگشا روی ۱ بایت از جمله مشکلاتی هستند که ممکن است با آن‌ها مواجه شوید (بسته به سیستمی که استفاده می‌کنید). پیش از اتکا به گزینهٔ mt، آن را بیازمایید. . .SH "مثال‌ها (EXAMPLES)" .TP .BI dd_rescue\ -L\ lzma=z:preset=9\ infile\ outfile داده‌ها را از .IR infile در .IR outfile با پیش‌تنظیم فشرده‌سازی == 9 (بالاترین فشرده‌سازی، کمترین سرعت بدون در نظر گرفتن تنظیمات extreme) فشرده می‌کند. .TP .BI dd_rescue\ -L\ lzma=d:mt:memlimit=1234\ infile\ infile2 فایل .IR infile را به .IR infile2 در حالت چندنخی با محدودیت حافظهٔ معادل ۱۲۳۴ مگابایت استخراج می‌کند. .TP .BI dd_rescue\ -L\ lzma\ infile.xz\ outfile فایل infile.xz را در outfile استخراج می‌کند. (این واقعیت که infile پسوند .xz دارد، باعث می‌شود ddr_lzma فرض کند که فایل فشرده است و می‌خواهید آن را استخراج کنید.) . .SH "همچنین ببینید (SEE ALSO)" .BR dd_rescue (1) .br .BR liblzma\ documentation . .SH "نویسندگان (AUTHORS)" Dmitrii Ivanov . .SH "قدردانی‌ها (CREDITS)" کتابخانه و الگوریتم liblzma توسط پروژهٔ توکانی (The Tukaani Project) نوشته شده است. .br https://xz.tukaani.org/xz-utils .br . .SH "کپی‌رایت و تکثیر (COPYRIGHT)" این پلاگین تحت همان مجوز dd_rescue ارائه می‌شود: مجوز عمومی همگانی گنو (GPL) نسخهٔ ۲ یا ۳ \- به انتخاب شما. . .SH "تاریخچه (HISTORY)" پلاگین ddr_lzma نخستین بار همراه با dd_rescue 1.99.17 (نوامبر ۲۰۲۴) معرفی شد.