| MKSQUASHFS(1) | دستورهای کاربری | MKSQUASHFS(1) |
نام (NAME)
mksquashfs - ابزاری برای ایجاد و الحاق به سیستمفایلهای squashfs
خلاصه دستور (SYNOPSIS)
mksquashfs source1 source2 ... FILESYSTEM [OPTIONS] [-e list of exclude dirs/files]
توضیحات (DESCRIPTION)
سیستمفایل Squashfs یک سیستمفایل فقطخواندنی به شدت فشرده برای لینوکس است. این سیستمفایل از فشردهسازی gzip/xz/lzo/lz4/zstd برای فشردهسازی فایلها، inodeها و دایرکتوریها استفاده میکند. Inodeها در این سیستم بسیار کوچک هستند و تمامی بلوکها برای به حداقل رساندن بار اضافی دادهها فشرده و بستهبندی میشوند. اندازههای بلوک بزرگتر از 4K تا حداکثر 1Mbytes پشتیبانی میشوند (اندازه بلوک پیشفرض 128K است).
سیستمفایل Squashfs برای استفاده عمومی به عنوان سیستمفایل فقطخواندنی، مصارف آرشیوی (مانند مواردی که ممکن است از یک فایل .tar.gz استفاده شود)، و در سیستمهای دارای محدودیت حافظه/دستگاه بلوکی (مانند سیستمهای جاسازیشده) که نیاز به بار سربار کم دارند، در نظر گرفته شده است.
گزینهها (OPTIONS)
گزینههای فشردهسازی سیستمفایل:
- -b BLOCK-SIZE
- تنظیم بلوک داده روی BLOCK-SIZE. پیشفرض 128 Kbytes است. به صورت اختیاری میتوان پسوندهای K، KB، Kbytes یا M، MB، Mbytes را برای مشخص کردن به ترتیب کیلوبایت یا مگابایت اضافه کرد.
- -comp COMP
- انتخاب فشردهساز COMP. برای دریافت گزینههای فشردهساز COMP، دستور -help-comp COMP، یا برای تمام فشردهسازها ALL را اجرا کنید. فشردهسازهای موجود: gzip (پیشفرض)، lzo، lz4، xz، zstd، lzma.
- -noI
- جدول inode فشرده نشود.
- -noId
- جدول uid/gid فشرده نشود (با -noI به صورت ضمنی اعمال میشود).
- -noD
- بلوکهای داده فشرده نشوند.
- -noF
- بلوکهای قطعه (fragment) فشرده نشوند.
- -noX
- ویژگیهای گسترده فشرده نشوند.
- -no-compression
- هیچیک از دادهها یا فرادادهها فشرده نشوند. این معادل با مشخص کردن -noI، -noD، -noF و -noX است.
گزینههای ساخت سیستمفایل:
- -tar
- خواندن فایل tar فشردهنشده از ورودی استاندارد (stdin).
- -no-strip
- عملکردی مشابه با tar داشته باشد و دایرکتوریهای پیشین را از فایلهای منبع حذف نکند.
- -tarstyle
- نام جایگزین برای -no-strip.
- -cpiostyle
- عملکردی مشابه با cpio داشته باشد و مسیر فایلها را از ورودی استاندارد (stdin) بخواند.
- -cpiostyle0
- مشابه -cpiostyle، اما نام فایلها با کاراکتر null خاتمه یافته باشند. قابل استفاده با اقدام -print0 در find.
- -no-exports
- سیستمفایل از طریق NFS قابل صدور (exportable) نباشد (پیشفرض -tar).
- -exports
- سیستمفایل از طریق NFS قابل صدور باشد (پیشفرض).
- -no-sparse
- فایلهای پراکنده (sparse) شناسایی نشوند.
- -no-tailends
- انتهای فایلها (tail ends) در قطعات بستهبندی نشوند (پیشفرض).
- -tailends
- انتهای فایلها در قطعات بستهبندی شوند.
- -no-fragments
- از قطعات (fragments) استفاده نشود.
- -no-duplicates
- بررسی فایلهای تکراری انجام نشود.
- -no-hardlinks
- فایلها پیوند سخت (hardlink) نشوند، در عوض نسخههای تکراری ذخیره گردند.
- -keep-as-directory
- در صورت مشخص شدن یک دایرکتوری منبع، دایرکتوری ریشهای شامل آن دایرکتوری ساخته شود، به جای اینکه فقط محتویات آن قرار گیرد.
گزینههای زمان سیستمفایل:
- -mkfs-time TIME
- تنظیم برچسب زمانی ساخت سیستمفایل روی TIME. مقدار TIME میتواند "inode" باشد (به معنی استفاده از جدیدترین برچسب زمانی inode)، یا یک عدد صحیح ۳۲ بیتی بدون علامت که ثانیههای پس از مبدا یونیکس (1970-01-01) را نشان میدهد، یا یک رشته که برای پردازش به دستور "date" ارسال میشود. هر مقدار رشتهای که دستور date تشخیص دهد قابل استفاده است؛ مانند "now"، "last week" یا "Wed Feb 15 21:02:39 GMT 2023".
- -inode-time TIME
- تنظیم برچسب زمانی تمام فایلها و دایرکتوریها روی TIME. مقدار TIME میتواند "inode" باشد (به معنی استفاده از جدیدترین برچسب زمانی inode)، یا یک عدد صحیح ۳۲ بیتی بدون علامت بیانگر ثانیههای پس از مبدا، یا رشتهای که برای پردازش به دستور "date" تحویل داده میشود؛ مانند "now"، "last week" یا "Wed Feb 15 21:02:39 GMT 2025". این گزینه برچسب زمانی -root-time را نیز تنظیم و بازنویسی میکند.
- -root-time TIME
- تنظیم زمان دایرکتوری ریشه روی TIME. مقدار TIME میتواند "inode" (استفاده از جدیدترین برچسب زمانی inode)، عدد صحیح ۳۲ بیتی بدون علامت بیانگر ثانیههای پس از مبدا، یا رشتهای قابل فهم برای دستور "date" باشد؛ مانند "now"، "last week" یا "Wed Feb 15 21:02:39 GMT 2025".
- -repro
- ساخت یک تصویر سیستمفایل بازتولیدپذیر (reproducible). این معادل با -mkfs-time inode است که با تنظیم زمان ساخت سیستمفایل روی جدیدترین برچسب زمانی inode به بازتولیدپذیری میرسد. بدیهی است در صورت تغییر برچسبهای زمانی یا محتوا، تصویر بازتولیدپذیر نخواهد بود.
- -repro-time TIME
- ساخت یک تصویر سیستمفایل بازتولیدپذیر. این معادل با مشخص کردن همزمان -mkfs-time TIME و -inode-time TIME است که با تنظیم همه برچسبهای زمانی روی TIME به بازتولیدپذیری دست مییابد. این گزینه در شرایطی که برچسبهای زمانی ممکن است تغییر کنند و به همین دلیل -repro قابل استفاده نیست، کاربرد دارد.
گزینههای دسترسیهای سیستمفایل:
- -all-root
- مالکیت تمام فایلها و دایرکتوریها به کاربر root واگذار شود.
- -root-mode MODE
- تنظیم مجوزهای دایرکتوری ریشه روی MODE. مقدار MODE میتواند نمادین یا هشتهشتی (octal) باشد (بخش مشخصات حالت نمادین را ببینید). حالت پیشفرض ریشه ugo=rwx یا 0777 هشتهشتی است.
- -root-uid USER
- تنظیم مالک دایرکتوری ریشه روی USER مشخصشده. مقدار USER میتواند یک uid عددی یا نام کاربری باشد.
- -root-gid GROUP
- تنظیم گروه دایرکتوری ریشه روی GROUP مشخصشده. مقدار GROUP میتواند یک gid عددی یا نام گروه باشد.
- -force-file-mode MODE
- تنظیم اجباری مجوزهای تمام فایلها (غیر دایرکتوری) روی MODE. مقدار MODE میتواند نمادین یا هشتهشتی باشد (بخش مشخصات حالت نمادین را ببینید).
- -force-dir-mode MODE
- تنظیم اجباری مجوزهای تمام دایرکتوریها روی MODE. مقدار MODE میتواند نمادین یا هشتهشتی باشد (بخش مشخصات حالت نمادین را ببینید).
- -force-uid USER
- تنظیم اجباری uid تمام فایلها و دایرکتوریها روی USER مشخصشده. مقدار USER میتواند uid عددی یا نام کاربری باشد.
- -force-gid GROUP
- تنظیم اجباری gid تمام فایلها و دایرکتوریها روی GROUP مشخصشده. مقدار GROUP میتواند gid عددی یا نام گروه باشد.
- -uid-gid-offset VALUE
- انتقال و جابهجایی تمامی مقادیر uid و gid به میزان VALUE. مقدار VALUE باید یک عدد صحیح مثبت باشد.
گزینههای شبهفایل سیستمفایل:
- -p PSEUDO-DEFINITION
- افزودن تعریف شبهفایل. این تعریف باید داخل علامت نقلقول (کوتیشن) قرار گیرد. برای جزئیات ساختار، بخش "فرمت تعریف فایل شبهساختگی" را ببینید.
- -pd "d mode uid gid"
- مشخص کردن یک دایرکتوری شبهپیشفرض که در تعاریف شبهفایل در صورت عدم وجود دایرکتوری در مسیر استفاده خواهد شد. این کار اجازه میدهد تعاریف شبهفایل بدون نیاز به تعریف تکتک دایرکتوریهای موجود در مسیر بیان شوند. تعریف باید داخل نقلقول باشد.
- -pd "D time mode uid gid"
- مشخص کردن یک دایرکتوری شبهپیشفرض که در صورت عدم وجود دایرکتوری در مسیر در تعاریف استفاده خواهد شد. نوع D علاوه بر mode، uid و gid اجازه مشخص کردن برچسب زمانی را نیز میدهد.
- -pf PSEUDO-FILE
- افزودن فهرستی از تعاریف شبهفایل از PSEUDO-FILE؛ برای stdin از - استفاده کنید. تعاریف شبهفایل در این حالت نباید داخل نقلقول باشند.
- -pseudo-override
- باعث میشود مقادیر uid و gid شبهفایلها بر گزینههای -all-root، -force-uid و -force-gid اولویت داشته و آنها را بازنویسی کنند.
گزینههای فیلتر سیستمفایل:
- -sort SORT-FILE
- مرتبسازی فایلها طبق اولویتهای مندرج در SORT-FILE. در هر سطر یک فایل یا دایرکتوری به همراه اولویت درج میشود. اولویت بین -32768 تا 32767 و اولویت پیشفرض 0 است.
- -ef EXCLUDE-FILE
- فهرست دایرکتوریها/فایلهای مستثنیشده (نادیده گرفتهشده). در هر سطر یک مورد.
- -wildcards
- امکان استفاده از نویسههای عمومی گسترده پوسته (globbing) در فایلها/دایرکتوریهای مستثنیشده.
- -regex
- امکان استفاده از عبارات باقاعده POSIX در فایلها/دایرکتوریهای مستثنیشده.
- -max-depth LEVELS
- حداکثر پیمایش تا LEVELS سطح دایرکتوری هنگام پویش سیستمفایل.
- -one-file-system
- عدم عبور از مرزهای سیستمفایل. اگر دایرکتوری از مرز عبور کند، یک دایرکتوری خالی برای هر نقطه سوار کردن (mount point) ایجاد میشود. اگر فایلی از مرز عبور کند نادیده گرفته میشود.
- -one-file-system-x
- عدم عبور از مرزهای سیستمفایل. مشابه گزینه -one-file-system با این تفاوت که دایرکتوریها نیز در صورت عبور از مرز نادیده گرفته میشوند.
گزینههای ویژگیهای گسترده (xattrs) سیستمفایل:
- -no-xattrs
- ویژگیهای گسترده ذخیره نشوند.
- -xattrs
- ویژگیهای گسترده ذخیره شوند (پیشفرض).
- -xattrs-exclude REGEX
- مستثنی کردن تمام نامهای xattr منطبق با REGEX. مقدار REGEX یک عبارت باقاعده POSIX است، برای نمونه -xattrs-exclude '^user.' ویژگیهای گسترده فضای نام کاربر را نادیده میگیرد.
- -xattrs-include REGEX
- شامل کردن تمام نامهای xattr منطبق با REGEX. مقدار REGEX یک عبارت باقاعده POSIX است، برای نمونه -xattrs-include '^user.' ویژگیهای گسترده فضای نام کاربر را در بر میگیرد.
- -xattrs-add NAME=VAL
- افزودن ویژگی گسترده با نام NAME و مقدار VAL به فایلها. اگر xattr کاربر باشد به فایلها و دایرکتوریهای عادی اضافه میشود (راهنمای man 7 xattr را ببینید). در غیر این صورت به تمام فایلها افزوده خواهد شد. مقدار VAL به صورت پیشفرض باینری (توالی بایتهای تفسیرنشده) تلقی میشود، اما میتواند با پیشوند 0s مشخص شود که با فرمت base64 تفسیر میگردد، یا با پیشوند 0x که به عنوان هگزادسیمال در نظر گرفته میشود. علاوه بر این میتواند با پیشوند 0t آغاز شود که شبیه به انکودینگ باینری است اما بکاسلشها رفتاری ویژه دارند و یک بکاسلش به دنبال ۳ رقم هشتهشتی میتواند هر نویسه ASCII را نشان دهد که برای کدهای کنترلی کاربرد دارد. این گزینه میتواند چندین بار برای افزودن چندین xattr تکرار شود.
گزینههای زمان اجرای Mksquashfs:
- -version
- چاپ نسخه، مجوز و پیام حق نشر.
- -exit-on-error
- خطاهایی که معمولاً نادیده گرفته میشوند را مرگبار (fatal) تلقی کند و خارج شود.
- -quiet
- عدم نمایش خروجیهای پرحرف و مفصل.
- -info
- چاپ نام فایلهای نوشتهشده در سیستمفایل روی خروجی استاندارد (stdout). این گزینه به طور خودکار نوار پیشرفت را غیرفعال میکند. برای خروجی در فایل بدون غیرفعال شدن نوار پیشرفت، -info-file را ببینید.
- -info-file FILE
- چاپ نام فایلهای نوشتهشده در سیستمفایل درون پرونده FILE. این گزینه نوار پیشرفت را غیرفعال نمیکند.
- -no-progress
- نوار پیشرفت نمایش داده نشود.
- -progress
- نمایش نوار پیشرفت هنگام استفاده از گزینه -info.
- -percentage
- نمایش درصد به جای نوار پیشرفت کامل. قابل استفاده با dialog --gauge و موارد مشابه.
- -throttle PERCENTAGE
- کاهش نرخ ورودی I/O به میزان درصد مشخصشده. از این گزینه میتوان برای کاهش مصرف I/O و پردازنده Mksquashfs استفاده کرد.
- -limit PERCENTAGE
- محدود کردن نرخ ورودی I/O به درصد مشخصشده. این گزینه میتواند مصرف I/O و CPU ابزار Mksquashfs را کاهش دهد (جایگزینی برای -throttle).
- -processors NUMBER
- استفاده از NUMBER پردازنده. به طور پیشفرض از تمام پردازندههای در دسترس استفاده خواهد شد.
- -mem SIZE
- استفاده از SIZE حافظه فیزیکی برای حافظههای موقت (کش). از K، M یا G به ترتیب برای مشخص کردن کیلوبایت، مگابایت یا گیگابایت استفاده کنید.
- -mem-percent PERCENT
- استفاده از PERCENT درصد از حافظه فیزیکی برای کشها. پیشفرض 25% است.
- -mem-default
- چاپ میزان حافظه مصرفی پیشفرض بر حسب مگابایت.
- -single-reader
- استفاده از یک ریسه (thread) منفرد برای خواندن فایلها. این کار فایلها را به صورت ترتیبی از منبع (منابع) میخواند.
- -small-readers N
- استفاده از N ریسه برای خواندن موازی فایلهای کوچک (فایلهای کوچکتر از اندازه یک بلوک) از منبع (منابع) (پیشفرض 4).
- -block-readers N
- استفاده از N ریسه برای خواندن موازی فایلهای بلوکی (فایلهای با اندازه یک بلوک یا بزرگتر) از منبع (منابع) (پیشفرض 4).
- -overcommit PERCENT
- اجازه به اجرای موازی PERCENT درصد ریسه بیشتر از پردازندههای موجود. این کار ممکن است بهرهوری CPU را بالا ببرد. پیشفرض 0% است، زیرا معمولاً overcommit به دلیل سربار جابهجایی (thrashing) کارایی را کاهش میدهد. مقدار درصد بر اساس ریزدانگی تعداد پردازندهها است؛ مثلاً ۴ پردازنده گامهای ۲۵ درصدی و ۲۰ پردازنده گامهای ۵ درصدی دارند.
گزینههای الحاق به سیستمفایل:
- -noappend
- عدم الحاق به سیستمفایل موجود.
- -root-becomes NAME
- هنگام الحاق فایلها/دایرکتوریهای منبع، ریشه اصلی به یک زیردایرکتوری در ریشه جدید به نام NAME تبدیل شود، به جای اینکه موارد منبع جدید به ریشه اصلی اضافه گردند.
- -no-recovery
- فایل بازیابی (recovery) تولید نشود.
- -recovery-path NAME
- استفاده از NAME به عنوان دایرکتوری ذخیرهسازی فایل بازیابی.
- -recover NAME
- بازیابی دادههای سیستمفایل با استفاده از فایل بازیابی NAME.
گزینههای اقدامات سیستمفایل:
- -action ACTION@EXPRESSION
- ارزیابی EXPRESSION روی هر فایل و دایرکتوری، و اجرای ACTION در صورت بازگرداندن TRUE.
- -log-action ACTION@EXPRESSION
- مشابه -action، اما ثبت وقایع نتایج ارزیابی عبارت و اقدامات انجامشده.
- -true-action ACTION@EXPRESSION
- مشابه -action، اما فقط ثبت عباراتی که TRUE برمیگردانند.
- -false-action ACTION@EXPRESSION
- مشابه -action، اما فقط ثبت عباراتی که FALSE برمیگردانند.
- -action-file FILE
- مشابه action، اما خواندن اقدامات از پرونده FILE.
- -log-action-file FILE
- مشابه -log-action، اما خواندن اقدامات از پرونده FILE.
- -true-action-file FILE
- مشابه -true-action، اما خواندن اقدامات از پرونده FILE.
- -false-action-file FILE
- مشابه -false-action، اما خواندن اقدامات از پرونده FILE.
گزینههای فقط مربوط به فایل Tar:
- -default-mode MODE
- فایلهای tar معمولاً مجوزهای دایرکتوریهای واسط را ذخیره نمیکنند. این گزینه مجوزهای پیشفرض دایرکتوری را روی MODE تنظیم میکند. مقدار MODE میتواند نمادین یا هشتهشتی باشد (بخش مشخصات حالت نمادین را ببینید). حالت پیشفرض u=rwx,go=rx یا 0755 هشتهشتی است. این گزینه حالت دایرکتوری ریشه را نیز مشخص میکند.
- -default-uid VALUE
- فایلهای tar اغلب uid دایرکتوریهای واسط را ذخیره نمیکنند. این گزینه مالک پیشفرض دایرکتوری را به جای کاربری که Mksquashfs را اجرا کرده روی VALUE قرار میدهد. مقدار VALUE میتواند یک uid عددی یا نام کاربری باشد. این گزینه uid دایرکتوری ریشه را نیز تنظیم میکند.
- -default-gid VALUE
- فایلهای tar اغلب gid دایرکتوریهای واسط را ذخیره نمیکنند. این گزینه گروه پیشفرض دایرکتوری را به جای گروه کاربری که Mksquashfs را اجرا کرده روی VALUE تنظیم میکند. مقدار VALUE میتواند یک gid عددی یا نام گروه باشد. این گزینه gid دایرکتوری ریشه را نیز تعیین میکند.
- -ignore-zeros
- امکان اتصال چند فایل tar به یکدیگر و ارسال آنها به Mksquashfs. معمولاً یک فایل tar دارای دو بلوک متوالی ۵۱۲ بایتی پر از صفر است که به معنی پایان فایل (EOF) است و Mksquashfs با برخورد به آنها پس از اولین فایل tar متوقف میشود. این گزینه باعث میشود Mksquashfs از بلوکهای پر شده با صفر چشمپوشی کند.
- -numeric-owner
- استفاده از مقادیر عددی uid و gid درون فایل tar به جای نام کاربر یا نام گروه. این گزینه زمانی مفید است که نام کاربری یا گروه روی سیستمی که Mksquashfs روی آن در حال اجراست به uid یا gid متفاوتی متناظر میشود و این رفتار بازنگاشت نامطلوب است.
گزینههای تخصصی (ممکن است سیستمفایل را غیرقابل سوار کردن کنند):
- -stream
- خروجی سیستمفایل به جای فایل به خروجی استاندارد (STDOUT) فرستاده شود. این امکان میدهد خروجی با لوله (pipe) به برنامهای دیگر یا از طریق ssh به جای دیگر منتقل شود. سیستمفایل Squashfs جریانی حاصله یک سیستمفایل عادی نخواهد بود زیرا ابربلوک (super block) در انتهای آن قرار میگیرد. اما بعداً میتوان آن را با گزینه -fix اصلاح کرد و Unsquashfs نسخه 4.7.3 و جدیدتر میتواند سیستمفایلهای جریانی اصلاحنشده را مستقیماً بخواند. برای FILESYSTEM خروجی در خط فرمان از - استفاده کنید. با گزینه -stream تشخیص فایلهای تکراری غیرفعال میشود.
- -fix FILESYSTEM
- اصلاح FILESYSTEM تولیدشده با گزینه -stream.
- -nopad
- سیستمفایل با افزودن بایتهای پرکننده به مضربی از 4K تراز (pad) نشود.
- -offset OFFSET
- نادیده گرفتن OFFSET بایت در ابتدای FILESYSTEM. به صورت اختیاری میتوان پسوند K، M یا G را به ترتیب برای مشخص کردن کیلوبایت، مگابایت یا گیگابایت اضافه کرد. پیشفرض 0 بایت است.
- -o OFFSET
- مترادف -offset.
گزینههای راهنما:
- -help
- چاپ خلاصه راهنما در صفحهبندیکننده (یا خروجی استاندارد در صورت عدم اتصال به ترمینال).
- -help-option REGEX
- چاپ اطلاعات راهنما برای گزینههای منطبق با REGEX در صفحهبندیکننده (یا stdout).
- -help-section SECTION
- چاپ اطلاعات راهنما برای بخش SECTION در صفحهبندیکننده (یا stdout). اگر SECTION دقیقاً با نام یک بخش مطابقت نداشته باشد، به عنوان یک عبارت باقاعده در نظر گرفته شده و تمام بخشهای منطبق نمایش داده میشوند. از "list" به عنوان نام بخش برای دریافت فهرست بخشها و نامهای آنها استفاده کنید.
- -help-comp COMP
- چاپ گزینههای فشردهساز برای COMP. از "list" برای دریافت فهرست فشردهسازهای موجود و از "all" برای دریافت گزینههای تمام فشردهسازها استفاده کنید.
- -help-all
- چاپ اطلاعات راهنما برای تمامی گزینهها و بخشهای Mksquashfs در صفحهبندیکننده (یا stdout).
- -Xhelp
- چاپ گزینههای فشردهساز برای فشردهساز انتخابشده.
- -h
- شکل کوتاه -help.
- -ho REGEX
- شکل کوتاه -help-option.
- -hs SECTION
- شکل کوتاه -help-section.
- -ha
- شکل کوتاه -help-all.
- -no-pager
- عدم استفاده از صفحهبندیکننده برای نمایش اطلاعات راهنما.
- -cols WIDTH
- استفاده از WIDTH ستون برای نمایش اطلاعات راهنما. زمانی که خروجی به ترمینال متصل نیست مفید است.
گزینههای گوناگون:
- -fstime TIME
- نام جایگزین برای -mkfs-time.
- -always-use-fragments
- نام جایگزین برای -tailends.
- -root-owned
- نام جایگزین برای -all-root.
- -noInodeCompression
- نام جایگزین برای -noI.
- -noIdTableCompression
- نام جایگزین برای -noId.
- -noDataCompression
- نام جایگزین برای -noD.
- -noFragmentCompression
- نام جایگزین برای -noF.
- -noXattrCompression
- نام جایگزین برای -noX.
- -pseudo-dir
- نام جایگزین برای -pd.
فرمت تعریف فایل شبهساختگی (PSEUDO FILE DEFINITION FORMAT)
- -p "filename d mode uid gid"
- ایجاد یک دایرکتوری.
- -p "filename m mode uid gid"
- تغییر filename.
- -p "filename b mode uid gid major minor"
- ایجاد یک دستگاه بلوکی.
- -p "filename c mode uid gid major minor"
- ایجاد یک دستگاه نویسهای.
- -p "filename f mode uid gid command"
- ایجاد فایل از خروجی استاندارد (stdout) دستور command.
- -p "filename s mode uid gid symlink"
- ایجاد یک پیوند نمادین.
- -p "filename i mode uid gid [s|f]"
- ایجاد یک سوکت (s) یا FIFO (f).
- -p "filename x name=val"
- ایجاد یک ویژگی گسترده.
- -p "filename h linkname"
- ایجاد یک پیوند سخت به linkname، با دنبال کردن پیوندهای نمادین.
- -p "filename l linkname"
- ایجاد یک پیوند سخت به linkname.
- -p "filename L pseudo_filename"
- مشابه قبل، اما پیوند به شبهفایل.
- -p "filename D time mode uid gid"
- ایجاد دایرکتوری با برچسب زمانی time.
- -p "filename M time mode uid gid"
- تغییر یک فایل با برچسب زمانی time.
- -p "filename B time mode uid gid major minor"
- ایجاد دستگاه بلوکی با برچسب زمانی time.
- -p "filename C time mode uid gid major minor"
- ایجاد دستگاه نویسهای با برچسب زمانی time.
- -p "filename F time mode uid gid command"
- ایجاد فایل با برچسب زمانی time.
- -p "filename S time mode uid gid symlink"
- ایجاد پیوند نمادین با برچسب زمانی time.
- -p "filename I time mode uid gid [s|f]"
- ایجاد سوکت/fifo با برچسب زمانی time.
مشخصات حالت نمادین (SYMBOLIC MODE SPECIFICATION)
حالت نمادین با فرمت [ugoa]*[[+-=]PERMS]+ است. مقادیر PERMS به صورت [rwxXst]+ یا [ugo] هستند و توالی میتواند با ویرگول (کاما) تکرار شود.
ترکیبی از حروف ugoa مشخص میکند کدام بیتهای دسترسی تحت تأثیر قرار میگیرند؛ u یعنی کاربر (user)، g یعنی گروه (group)، o یعنی دیگران (other)، و a یعنی همه (all یا ugo).
حرف بعدی +، - یا = است. حرف + به معنی اضافه کردن به بیتهای مجوز موجود، - به معنی حذف بیتها از بیتهای مجوز موجود، و = به معنی تنظیم بیتهای مجوز است.
بیتهای مجوز (PERMS) ترکیبی از [rwxXst] هستند که بیتهای مورد نظر را برای ترکیب ugoa مشخصشده تنظیم، اضافه یا حذف میکنند؛ r به معنی خواندن، w به معنی نوشتن و x به معنی اجرا برای فایلها یا جستجو برای دایرکتوریها است. X معنای ویژهای دارد؛ اگر فایل یک دایرکتوری باشد معادل x یا جستجو است، اما اگر فایل غیر دایرکتوری باشد فقط در صورتی اعمال میشود که اجازه اجرا از قبل برای کاربر، گروه یا دیگران تنظیم شده باشد. فلگ s شناسه کاربر یا گروه را هنگام اجرا تنظیم میکند (SUID/SGID)، و فلگ t روی یک دایرکتوری حذف محدودشده (sticky bit) را تنظیم میکند، یا در گذشته برای فایلهای غیر دایرکتوری آنها را چسبنده (sticky) میساخت.
بیتهای مجوز همچنین میتوانند u، g یا o باشند که بیتهای مجوز را به ترتیب از کاربر، گروه یا دیگرانِ همان فایل دریافت میکنند.
وضعیت خروج (EXIT STATUS)
- 0
- ابزار Mksquashfs سیستمفایل را با موفقیت تولید کرد.
- 1
- خطاهای مرگبار رخ داد، Mksquashfs متوقف شد و سیستمفایلی تولید نکرد (یا در صورت الحاق، بهروزرسانی نکرد).
فشردهسازهای موجود و گزینههای ویژه فشردهساز (COMPRESSORS AVAILABLE AND COMPRESSOR SPECIFIC OPTIONS)
gzip (پیشفرض):
- -Xcompression-level COMPRESSION-LEVEL
- مقدار COMPRESSION-LEVEL باید رقمی بین 1 .. 9 باشد (پیشفرض 9).
- -Xwindow-size WINDOW-SIZE
- مقدار WINDOW-SIZE باید مقداری بین 8 .. 15 باشد (پیشفرض 15).
- -Xstrategy strategy1,strategy2,...,strategyN
- فشردهسازی با استفاده از استراتژیهای strategy1,strategy2,...,strategyN به ترتیب و انتخاب بهترین فشردهسازی. استراتژیهای موجود: default، filtered، huffman_only، run_length_encoded و fixed.
lzo:
- -Xalgorithm ALGORITHM
- به طوری که ALGORITHM یکی از این موارد باشد: lzo1x_1، lzo1x_1_11، lzo1x_1_12، lzo1x_1_15، lzo1x_999 (پیشفرض).
- -Xcompression-level COMPRESSION-LEVEL
- مقدار COMPRESSION-LEVEL باید رقمی بین 1 .. 9 باشد (پیشفرض 8). فقط برای الگوریتم lzo1x_999 اعمال میشود.
lz4:
- -Xhc
- فشردهسازی با استفاده از فشردهسازی بالای LZ4 (High Compression).
xz:
- -Xbcj filter1,filter2,...,filterN
- فشردهسازی با استفاده از فیلترهای filter1,filter2,...,filterN به نوبت (علاوه بر حالت بدون فیلتر)، و انتخاب بهترین فشردهسازی. فیلترهای موجود: x86، arm، armthumb، arm64، powerpc، sparc، ia64، riscv.
- -Xdict-size DICT-SIZE
- استفاده از DICT-SIZE به عنوان اندازه لغتنامه XZ. اندازه لغتنامه را میتوان به صورت درصدی از اندازه بلوک، یا به صورت یک مقدار مطلق تعیین کرد. اندازه لغتنامه باید کوچکتر یا مساوی اندازه بلوک و ۸۱۹۲ بایت یا بزرگتر باشد. همچنین باید بتوان آن را در هدر xz به عنوان 2^n یا 2^n+2^(n+1) ذخیره کرد. اندازههای نمونه لغتنامه عبارتند از 75%، 50%، 37.5%، 25%، یا 32K، 16K، 8K و غیره.
zstd:
- -Xcompression-level COMPRESSION-LEVEL
- مقدار COMPRESSION-LEVEL باید بین -131072 .. -1 یا 1 .. 22 باشد (پیشفرض 15). سطوح فشردهسازی منفی متناظر با گزینه --fast در zstd هستند.
lzma:
- (بدون گزینه) (منسوخشده - بدون پشتیبانی در کرنل)
متغیرهای محیطی (ENVIRONMENT)
- SQFS_CMDLINE
- در صورت مقداردهی، به عنوان دایرکتوری نوشتن فایل sqfs_cmdline استفاده میشود که حاوی آرگومانهای خط فرمان ارائهشده به Mksquashfs است. هر آرگومان خط فرمان داخل نقلقول قرار میگیرد تا در صورت وجود فاصله هیچ ابهامی به وجود نیاید. اگر فایل از قبل موجود باشد، خط فرمان به انتهای فایل اضافه میشود.
- SOURCE_DATE_EPOCH
- در صورت مقداردهی، به عنوان برچسب زمانی ساخت سیستمفایل استفاده میشود. همچنین هر برچسب زمانی فایلی که بعد از SOURCE_DATE_EPOCH باشد به SOURCE_DATE_EPOCH محدود میشود. برای اطلاعات بیشتر https://reproducible-builds.org/docs/source-date-epoch را ببینید.
- PAGER
- در صورت مقداردهی، به عنوان نام برنامهای که برای نمایش متن راهنما استفاده میشود به کار میرود. این مقدار میتواند یک دستور ساده یا یک مسیر کامل باشد. پیشفرض /usr/bin/pager است.
مثالها (EXAMPLES)
- mksquashfs DIRECTORY IMAGE.SQFS
- ایجاد سیستمفایل Squashfs از محتویات DIRECTORY، و نوشتن خروجی در IMAGE.SQFS. ابزار Mksquashfs از فشردهساز پیشفرض (معمولاً gzip) و اندازه بلوک 128 Kbytes استفاده خواهد کرد.
- mksquashfs DIRECTORY FILE1 FILE2 IMAGE.SQFS
- ایجاد سیستمفایل Squashfs شامل DIRECTORY و FILE1 و FILE2. اگر چندین منبع در خط فرمان مشخص شوند، در قالب یک دایرکتوری منفرد ترکیب خواهند شد.
- mksquashfs DIRECTORY IMAGE.SQFS -b 1M -comp zstd
- استفاده از اندازه بلوک 1 Mbyte و فشردهسازی Zstandard برای ساخت سیستمفایل.
- mksquashfs DIRECTORY IMAGE.SQFS -all-time now
- تنظیم تمام برچسبهای زمانی فایلها و دایرکتوریها روی "now" (زمان جاری) در سیستمفایل.
- mksquashfs DIRECTORY IMAGE.SQFS -force-uid phillip -force-gid phillip
- تنظیم مالکیت تمام فایلها و دایرکتوریهای سیستمفایل به "phillip".
- mksquashfs DIRECTORY IMAGE.SQFS -force-file-mode ugo+r,go-w
- قابل خواندن کردن تمام فایلها برای همه، اما فقط قابل نوشتن توسط کاربر مالک، بدون اثرگذاری بر سایر بیتهای مجوز.
- mksquashfs DIRECTORY IMAGE.SQFS -e file1 file2
- مستثنی کردن file1 و file2 از DIRECTORY هنگام ایجاد سیستمفایل. بدون تطبیق الگوهای عمومی برای فایلها.
- mksquashfs DIRECTORY IMAGE.SQFS -wildcards -e "*.gz"
- مستثنی کردن هر فایلی در DIRECTORY که با الگوی عام "*.gz" مطابقت دارد.
- mksquashfs DIRECTORY IMAGE.SQFS -wildcards -e "... *.gz"
- مستثنی کردن فایلهای منطبق بر الگوی عام "*.gz" در هر کجای DIRECTORY و زیردایرکتوریهای آن. علامت اولیه "..." نشان میدهد که الگوی عام "غیر مقید" (non-anchored) است و در هر نقطهای مطابقت داده خواهد شد.
توجه: هنگام انتقال نامهای دارای کاراکترهای عام به Mksquashfs، آنها باید در نقلقول قرار گیرند (مانند مثالهای فوق) تا اطمینان حاصل شود که توسط پوسته پردازش و باز نمیشوند.
استفاده از تعاریف فایل شبهساختگی
- mksquashfs DIRECTORY IMAGE.SQFS -p "build_dir d 0644 0 0"
- ایجاد یک دایرکتوری به نام "build_dir" در سیستمفایل خروجی.
- mksquashfs DIRECTORY IMAGE.SQFS -p "version.txt l /tmp/build/version"
- ایجاد یک ارجاع به نام "version.txt" به فایلی خارج از DIRECTORY، که طوری عمل میکند گویی پرونده "/tmp/build/version" قبل از فراخوانی Mksquashfs کپی شده یا پیوند سخت خورده است.
- mksquashfs DIRECTORY IMAGE.SQFS -p "date.txt f 0644 0 0 date"
- ایجاد فایلی به نام "date.txt" که حاوی خروجی استاندارد (stdout) اجرای دستور "date" است.
- mksquashfs DIRECTORY IMAGE.SQFS -p "\"hello world\" f 0644 0 0 date"
- مشابه مثال بالا، اما نشان میدهد که نام فایلها در صورت قرار گرفتن داخل علامت نقلقول میتوانند دارای فاصله باشند. برای محافظت در برابر پوسته، باید قبل از علامتهای نقلقول از بکاسلش استفاده کرد.
- mksquashfs - IMAGE.SQFS -p "input f 0644 root root dd if=/dev/sda1 bs=1024" -p "/ d 0644 0 0"
- ایجاد فایلی شامل محتویات پارتیشن /dev/sda1. معمولاً اگر به Mksquashfs یک دستگاه، fifo یا سوکت نامگذاریشده داده شود، همان فایل ویژه را درون سیستمفایل Squashfs قرار میدهد؛ دستور بالا اجازه میدهد ورودی از این فایلهای ویژه گرفته شده و در سیستمفایل قرار گیرد. توجه داشته باشید که هیچ منبع دیگری جز فایل شبهساختگی وجود ندارد، بنابراین منبع خط فرمان "-" است. اگر منبع دیگری جز فایلهای شبهساختگی وجود نداشته باشد، دایرکتوری ریشه (/) نیز باید همانطور که در این مثال دیده میشود تعریف گردد.
- unsquashfs -pf - IMAGE.SQFS | mksquashfs - NEW.SQFS -pf -
- تبدیل کد (Transcode) تصویر IMAGE.SQFS به NEW.SQFS از طریق ارسال خروجی شبهفایل از Unsquashfs به Mksquashfs با استفاده از لولهکشی stdout و stdin. این دستور میتواند سیستمفایلهای قدیمیتر Squashfs را تبدیل کند یا الگوریتم فشردهسازی، اندازه بلوک و غیره را بدون نیاز به استخراج در دایرکتوری یا فایل واسط تغییر دهد.
توجه: تعاریف شبهفایل باید درون علامت نقلقول قرار گیرند (مانند مثالهای فوق) تا اطمینان حاصل شود که به عنوان یک آرگومان واحد به Mksquashfs تحویل داده میشوند و توسط پوسته پردازش نمیگردند.
استفاده از گزینههای ویژگی گسترده
- mksquashfs DIRECTORY IMAGE.SQFS -no-xattrs
- عدم ذخیره هیچگونه ویژگی گسترده در سیستمفایل Squashfs. تمام ویژگیهای گسترده در فایلهای منبع نادیده گرفته خواهند شد.
- mksquashfs DIRECTORY IMAGE.SQFS -xattrs-include "^user."
- فیلتر کردن ویژگیهای گسترده در فایلهای منبع، و فقط ذخیره ویژگیهای گسترده فضای نام کاربر در سیستمفایل Squashfs.
- mksquashfs DIRECTORY IMAGE.SQFS -xattrs-exclude "^user."
- فیلتر کردن ویژگیهای گسترده در فایلهای منبع، و عدم ذخیره هرگونه ویژگی گسترده در فضای نام کاربر در سیستمفایل Squashfs.
- mksquashfs DIRECTORY IMAGE.SQFS -xattrs-add "user.comment=hello world"
- افزودن ویژگی گسترده به نام "user.comment" با محتوای "hello world" به تمام فایلها و دایرکتوریهای سیستمفایل Squashfs.
- mksquashfs DIRECTORY IMAGE.SQFS -xattrs-add "user.comment=0thello world\012"
- افزودن ویژگی گسترده به نام "user.comment" به تمام فایلها و دایرکتوریها، اما در این حالت محتوای ویژگی گسترده "hello world" به همراه یک کاراکتر خط جدید در انتها (012 در مبنای ۸) خواهد بود.
- mksquashfs DIRECTORY IMAGE.SQFS -xattrs-add "user.comment=0saGVsbG8gd29ybGQ="
- افزودن ویژگی گسترده به نام "user.comment" به تمام فایلها و دایرکتوریها، که در آن مقدار به صورت کدگذاری base64 ارائه شده و نشاندهنده "hello world" است.
- mksquashfs DIRECTORY IMAGE.SQFS -action "-xattrs-include(^user.) @ type(f)"
- فیلتر کردن ویژگیهای گسترده اما فقط در فایلهای عادی (نوع f)، و ذخیره ویژگیهای گسترده منحصراً در فضای نام کاربر.
- mksquashfs DIRECTORY IMAGE.SQFS -p "hello_world x user.comment=0tsalve mundi\012"
- افزودن ویژگی گسترده به نام "user.comment" به فایل به نام "hello_world"، با محتوای "salve mundi" به همراه یک کاراکتر خط جدید انتهایی (012 هشتهشتی).
استفاده از اقدامات (Actions) برای عدم فشردهسازی، تغییر ویژگیها و غیره
- mksquashfs DIRECTORY IMAGE.SQFS -action "uncompressed @ (name(*.jpg) || name(*.mpg) ) || (name(*.img) && filesize(>=1G))"
- مشخص میکند که هر فایلی که با الگوهای عام "*.jpg" و "*.mpg" مطابقت دارد نباید فشرده شود. به علاوه، مشخص میکند هر فایلی که با الگوی عام "*.img" تطابق داشته و اندازه ۱ گیگابایت یا بزرگتر دارد نیز نباید فشرده شود. این نشان میدهد که عملگرهای آزمایشی میتوانند با عبارات منطقی ترکیب شوند.
- mksquashfs DIRECTORY IMAGE.SQFS -action "chmod(o+r)@! perm(o+r)"
- اگر هر فایلی در DIRECTORY برای "دیگران" قابل خواندن نباشد، در سیستمفایل Squashfs برای دیگران قابل خواندن شود.
- mksquashfs DIRECTORY IMAGE.SQFS -action "uid(phillip)@! perm(o+r)"
- مشابه قبل، تطبیق روی تمام فایلهایی که برای "دیگران" قابل خواندن نیستند، اما در این حالت مالک فایل در سیستمفایل Squashfs به "phillip" تغییر مییابد.
- mksquashfs DIRECTORY IMAGE.SQFS -action "prune @ type(l) && ! exists"
- حذف هرگونه پیوند نمادین در DIRECTORY که به خارج از DIRECTORY اشاره میکند؛ یعنی در سیستمفایل Squashfs غیرقابل حل (شکسته) خواهد بود.
- mksquashfs DIRECTORY IMAGE.SQFS -action "exclude @ depth(3)"
- ایجاد سیستمفایل Squashfs شامل دو سطح بالایی (محتویات DIRECTORY و زیردایرکتوریهای بلاواسطه آن)، و مستثنی کردن هر موردی در سطح ۳ یا پایینتر.
- mksquashfs DIRECTORY IMAGE.SQFS -action "-xattrs-include(^user.) @ type(f)"
- فیلتر کردن ویژگیهای گسترده اما فقط در فایلهای عادی (نوع f)، و فقط ذخیره ویژگیهای گسترده در فضای نام کاربر.
توجه: اقدامات (actions) باید درون علامت نقلقول قرار گیرند (مانند مثالهای فوق) تا اطمینان حاصل شود که به صورت یک آرگومان منفرد به Mksquashfs تحویل داده شده و توسط پوسته پردازش نمیشوند.
نویسنده (AUTHOR)
نوشتهشده توسط Phillip Lougher <phillip@squashfs.org.uk>
حق نشر (COPYRIGHT)
حق نشر © 2026 Phillip Lougher <phillip@squashfs.org.uk>
این برنامه یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط «مجوز عمومی همگانی گنو» منتشرشده توسط بنیاد نرمافزارهای آزاد؛ نسخه ۲ یا (به انتخاب خودتان) هر نسخه بالاتری، دوباره توزیع کنید یا تغییر دهید.
این برنامه به این امید توزیع میشود که مفید باشد، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر «مجوز عمومی همگانی گنو» را مشاهده کنید.
همچنین ببینید (SEE ALSO)
unsquashfs(1), sqfstar(1), sqfscat(1)
فایل README برای انتشار نسخه 4.7.5 بسته Squashfs-tools و توصیف قابلیتهای جدید در این نشانی قابل مطالعه است: https://github.com/plougher/squashfs-tools/blob/master/Documentation/4.7.5/README.md
راهنمای استفاده از MKSQUASHFS در این نشانی قابل مطالعه است: https://github.com/plougher/squashfs-tools/blob/master/Documentation/4.7.5/USAGE-MKSQUASHFS.md
فایل تغییرات (CHANGELOG) برای ابزارهای Squashfs در این نشانی قابل دسترسی است: https://github.com/plougher/squashfs-tools/blob/master/CHANGES.md
فایل ACTIONS-README برای زیرسیستم اقدامات در این نشانی قابل مطالعه است: https://github.com/plougher/squashfs-tools/blob/master/Documentation/4.7.5/ACTIONS-README.md
| March 2026 | mksquashfs version 4.7.5 |