'\" t .\" Title: hardlink .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-09-02 .\" Manual: دستورهای کاربری .\" Source: util-linux 2.42.3 .\" Language: Persian .\" .TH "HARDLINK" "1" "2026-09-02" "util\-linux 2.42.3" "دستورهای کاربری" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "نام (NAME)" hardlink \- ایجاد پیوندهای سخت تکراری برای صرفه‌جویی در فضای دیسک .SH "خلاصه دستور (SYNOPSIS)" .sp \fBhardlink\fP [options] \fIdirectory\fP|\fIfile\fP.\|.\|. .SH "توضیحات (DESCRIPTION)" .sp \fBhardlink\fP ابزاری است که نسخه‌های کپی یک فایل را با پیوندهای سخت (hardlinks) یا کلون‌های رونوشت‌در‌زمان‌نوشتن (copy\-on\-write clones) جایگزین می‌کند و در نتیجه موجب صرفه‌جویی در فضای دیسک می‌شود. .sp \fBhardlink\fP ابتدا یک درخت دودویی از اندازه‌های فایل‌ها ایجاد می‌کند و سپس محتوای فایل‌هایی را که اندازهٔ یکسانی دارند مقایسه می‌کند. دو روش اصلی برای مقایسه محتوا وجود دارد. روش \fBmemcmp\fP مستقیماً بلوک‌های داده را از فایل‌ها می‌خواند و آن‌ها را مقایسه می‌کند. روش دیگر بر پایه جمع‌های کنترلی (مانند SHA256) است؛ در این حالت برای هر بلوک داده یک جمع کنترلی توسط رابط برنامه‌نویسی رمزنگاری هسته لینوکس (Linux kernel crypto API) محاسبه می‌شود و این جمع کنترلی در فضای کاربری ذخیره شده و برای مقایسه فایل‌ها استفاده می‌شود. .sp برای هر فایل همچنین یک بافر «مقدماتی» (intro) به اندازهٔ ۳۲ بایت در حافظه موقت (cache) نگهداری می‌شود. این بافر مستقل از روش مقایسه و مقادیر درخواستی cache\-size و io\-size استفاده می‌شود. بافر «مقدماتی» عملیات با محتوای داده را به طور چشمگیری کاهش می‌دهد زیرا فایل‌ها اغلب از همان ابتدا با یکدیگر تفاوت دارند. .SH "گزینه‌ها (OPTIONS)" .sp \fB\-c\fP, \fB\-\-content\fP .RS 4 هنگام تعیین یکسان بودن دو فایل، فقط محتوای فایل را در نظر می‌گیرد و ویژگی‌ها (صفات) را نادیده می‌گیرد. معادل \fB\-pot\fP است. .RE .sp \fB\-b\fP, \fB\-\-io\-size\fP \fIsize\fP .RS 4 اندازه بافر \fBread\fP(2) یا \fBsendfile\fP(2) که هنگام مقایسه محتوای فایل‌ها استفاده می‌شود. آرگومان \fIsize\fP می‌تواند با پسوندهای ضربی مانند KiB، MiB و غیره همراه شود. «iB» اختیاری است، برای مثال «K» همان معنی «KiB» را دارد. پیش‌فرض برای روش memcmp برابر 8KiB و برای سایر روش‌ها 1MiB است. تنها روش memcmp از حافظه پردازش برای بافر استفاده می‌کند؛ روش‌های دیگر از روش کپی‌صفر (zero\-copy) بهره می‌برند و عملیات ورودی/خروجی (I/O) در داخل هسته انجام می‌شود. اندازه ممکن است در حین اجرا برای جای دادن تعداد جمع‌های کنترلی ذخیره‌شدهٔ محتوا تغییر کند. .RE .sp \fB\-d\fP, \fB\-\-respect\-dir\fP .RS 4 تنها سعی می‌کند فایل‌هایی با نام دایرکتوری (پوشه) یکسان را پیوند دهد. دایرکتوری سطح بالا (همان‌طور که در خط فرمان \fBhardlink\fP مشخص شده است) نادیده گرفته می‌شود. برای مثال، \fBhardlink \-\-respect\-dir /foo /bar\fP فایل \fI/foo/some/file\fP را با \fI/bar/some/file\fP پیوند می‌دهد، اما نه با \fI/bar/other/file\fP. اگر با \fB\-\-respect\-name\fP ترکیب شود، کل مسیرها (به جز دایرکتوری سطح بالا) مقایسه می‌شوند. .RE .sp \fB\-f\fP, \fB\-\-respect\-name\fP .RS 4 تنها سعی می‌کند فایل‌هایی با نام (پایه) یکسان را پیوند دهد. اکیداً توصیه می‌شود به جای \fB\-f\fP از گزینه‌های طولانی استفاده کنید، زیرا این گزینه توسط سایر پیاده‌سازی‌های \fBhardlink\fP به شکل متفاوتی تفسیر می‌شود. .RE .sp \fB\-F\fP, \fB\-\-prioritize\-trees\fP .RS 4 در صورتی که چندین فایل یکسان در درخت‌های مختلف وجود داشته باشد، فایل‌های یافت‌شده در اولین دایرکتوری سطح بالای مشخص‌شده را نگه می‌دارد. برای مثال، \fBhardlink foo/ bar/\fP فایل‌های موجود در bar/ را به فایل‌های یکسان در دایرکتوری foo/ پیوند می‌دهد. .RE .sp \fB\-i\fP, \fB\-\-include\fP \fIregex\fP .RS 4 یک عبارت باقاعده (regular expression) برای گنجاندن فایل‌ها. اگر گزینهٔ \fB\-\-exclude\fP داده شده باشد، این گزینه فایل‌هایی را که در غیر این صورت مستثنی می‌شدند دوباره شامل می‌کند. اگر این گزینه بدون \fB\-\-exclude\fP استفاده شود، تنها فایل‌های منطبق با الگو گنجانده می‌شوند. .RE .sp \fB\-l\fP, \fB\-\-list\-duplicates\fP .RS 4 هیچ پیوندی ایجاد نمی‌کند، بلکه مسیر مطلق هر فایل تکراری را در یک سطر جداگانه فهرست می‌کند که پیش از هر کدام یک متمایزکننده یکتای ۱۶ بایتی و یک نویسه برگه (tab) قرار دارد. .RE .sp \fB\-m\fP, \fB\-\-maximize\fP .RS 4 در میان فایل‌های یکسان، فایلی با بیشترین تعداد پیوند (link count) را نگه می‌دارد. .RE .sp \fB\-M\fP, \fB\-\-minimize\fP .RS 4 در میان فایل‌های یکسان، فایلی با کمترین تعداد پیوند را نگه می‌دارد. .RE .sp \fB\-\-mount\fP .RS 4 در میان سیستم‌فایل‌های مختلف پیمایش نمی‌کند (در همان سیستم‌فایل باقی می‌ماند). .RE .sp \fB\-n\fP, \fB\-\-dry\-run\fP .RS 4 عملیاتی انجام نمی‌دهد، فقط آنچه رخ خواهد داد را چاپ می‌کند. .RE .sp \fB\-o\fP, \fB\-\-ignore\-owner\fP .RS 4 فایل‌ها را حتی در صورتی که اطلاعات مالکیت آن‌ها (کاربر و گروه) متفاوت باشد، مقایسه کرده و پیوند می‌دهد. نتایج ممکن است غیرقابل پیش‌بینی باشد. .RE .sp \fB\-O\fP, \fB\-\-keep\-oldest\fP .RS 4 در میان فایل‌های یکسان، قدیمی‌ترین فایل (کمترین زمان ویرایش اخیر) را نگه می‌دارد. به طور پیش‌فرض، جدیدترین فایل نگه داشته می‌شود. اگر \fB\-\-maximize\fP یا \fB\-\-minimize\fP مشخص شده باشد، تعداد پیوندها اولویت بالاتری نسبت به زمان ویرایش دارد. .RE .sp \fB\-p\fP, \fB\-\-ignore\-mode\fP .RS 4 فایل‌ها را حتی اگر حالت دسترسی (mode) آن‌ها متفاوت باشد، مقایسه کرده و پیوند می‌دهد. نتایج ممکن است تا حدی غیرقابل پیش‌بینی باشد. .RE .sp \fB\-q\fP, \fB\-\-quiet\fP .RS 4 حالت بی‌صدا، چیزی چاپ نمی‌کند. .RE .sp \fB\-r\fP, \fB\-\-cache\-size\fP \fIsize\fP .RS 4 اندازه حافظه موقت (cache) برای جمع‌های کنترلی محتوا. همه روش‌های غیر memcmp جمع کنترلی را برای هر بلوک محتوای فایل محاسبه می‌کنند (به \fB\-\-io\-size\fP مراجعه کنید)، این جمع‌های کنترلی برای مقایسه بعدی در حافظه موقت ذخیره می‌شوند. این اندازه برای فایل‌های بزرگ یا مجموعه‌های بزرگی از فایل‌های هم‌اندازه مهم است. مقدار پیش‌فرض 10MiB است. .RE .sp \fB\-\-reflink\fP[\fB=\fP\fIwhen\fP] .RS 4 ایجاد کلون‌های رونوشت‌در‌زمان‌نوشتن (معروف به reflink) به جای پیوندهای سخت. فایل‌های reflink شده تنها داده‌های روی دیسک را به اشتراک می‌گذارند، اما حالت دسترسی فایل و مالک می‌توانند متفاوت باشند. توصیه می‌شود از این گزینه همراه با گزینه‌های \fB\-\-ignore\-owner\fP و \fB\-\-ignore\-mode\fP استفاده شود. این گزینه به طور ضمنی \fB\-\-skip\-reflinks\fP را فعال می‌کند تا فایل‌هایی را که قبلاً کلون شده‌اند نادیده بگیرد. .sp آرگومان اختیاری \fIwhen\fP می‌تواند \fBnever\fP، \fBalways\fP یا \fBauto\fP باشد. اگر آرگومان \fIwhen\fP حذف شود، مقدار پیش‌فرض آن \fBauto\fP خواهد بود، به این معنی که \fBhardlink\fP نوع سیستم‌فایل را بررسی می‌کند و تنها در BTRFS، XFS و ZFS از reflink استفاده می‌کند و در صورت عدم امکان ایجاد reflink، به پیوندهای سخت بازمی‌گردد. آرگومان \fBalways\fP تشخیص نوع سیستم‌فایل و بازگشت به پیوندهای سخت را غیرفعال می‌کند، به این معنی که تنها reflinkها مجاز هستند. .RE .sp \fB\-\-skip\-reflinks\fP .RS 4 نادیده گرفتن فایل‌هایی که قبلاً کلون شده‌اند. این گزینه ممکن است بدون \fB\-\-reflink\fP هنگام ایجاد پیوندهای سخت سنتی استفاده شود. .RE .sp \fB\-s\fP, \fB\-\-minimum\-size\fP \fIsize\fP .RS 4 حداقل اندازه برای در نظر گرفتن. مقدار پیش‌فرض این گزینه 1 است، بنابراین فایل‌های خالی پیوند داده نخواهند شد. آرگومان \fIsize\fP می‌تواند با پسوندهای ضربی مانند KiB (=1024)، MiB (=1024*1024) و به همین ترتیب برای GiB، TiB، PiB، EiB، ZiB و YiB همراه شود («iB» اختیاری است، به عنوان مثال «K» همان معنی «KiB» را دارد). .RE .sp \fB\-S\fP, \fB\-\-maximum\-size\fP \fIsize\fP .RS 4 حداکثر اندازه برای در نظر گرفتن. به طور پیش‌فرض این مقدار 0 است و 0 معنای ویژه نامحدود دارد. آرگومان \fIsize\fP می‌تواند با پسوندهای ضربی مانند KiB (=1024)، MiB (=1024*1024) و به همین ترتیب برای GiB، TiB، PiB، EiB، ZiB و YiB همراه شود («iB» اختیاری است، به عنوان مثال «K» همان معنی «KiB» را دارد). .RE .sp \fB\-t\fP, \fB\-\-ignore\-time\fP .RS 4 پیوند دادن و مقایسه فایل‌ها حتی اگر زمان ویرایش آن‌ها متفاوت باشد. این معمولاً یک انتخاب خوب است. .RE .sp \fB\-v\fP, \fB\-\-verbose\fP .RS 4 خروجی با جزئیات، توضیح دادن کارهای در حال انجام برای کاربر. در صورت یک بار مشخص شدن، هر فایل پیوند داده‌شده نمایش داده می‌شود. اگر دو بار مشخص شود، همچنین هر مقایسه را نشان می‌دهد. .RE .sp \fB\-x\fP, \fB\-\-exclude\fP \fIregex\fP .RS 4 یک عبارت باقاعده که فایل‌ها را از مقایسه و پیوند داده شدن مستثنی می‌کند. این گزینه می‌تواند چندین بار استفاده شود. .RE .sp \fB\-\-exclude\-subtree\fP \fIregex\fP .RS 4 یک عبارت باقاعده که کل دایرکتوری‌ها را از مقایسه و پیوند داده شدن مستثنی می‌کند. این گزینه نیز می‌تواند چندین بار استفاده شود. .RE .sp \fB\-X\fP, \fB\-\-respect\-xattrs\fP .RS 4 تنها سعی می‌کند فایل‌هایی با ویژگی‌های گسترش‌یافتهٔ (xattrs) یکسان را پیوند دهد. .RE .sp \fB\-y\fP, \fB\-\-method\fP \fIname\fP .RS 4 تنظیم روش مقایسه محتوای فایل. روش‌های پشتیبانی‌شده در حال حاضر عبارتند از: \fBsha256\fP، \fBsha1\fP، \fBcrc32c\fP و \fBmemcmp\fP. پیش‌فرض \fBsha256\fP است، یا اگر رابط برنامه‌نویسی رمزنگاری لینوکس در دسترس نباشد \fBmemcmp\fP خواهد بود. روش‌های مبتنی بر جمع کنترلی به صورت کپی‌صفر پیاده‌سازی شده‌اند، به این معنی که محتویات فایل در فضای کاربری کپی نمی‌شوند و تمام محاسبات در هسته انجام می‌شود. .RE .sp \fB\-z\fP, \fB\-\-zero\fP .RS 4 جداسازی سطرها با یک بایت NUL به جای خط جدید (برای \fB\-l\fP). .RE .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 نمایش متن راهنما و خروج. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 نمایش نسخه و خروج. .RE .SH "آرگومان‌ها (ARGUMENTS)" .sp دستور \fBhardlink\fP یک یا چند دایرکتوری را دریافت می‌کند که برای یافتن فایل‌های قابل پیوند در آن‌ها جستجو خواهد شد. .SH "محیط (ENVIRONMENT)" .sp \fBULFILEEQ_DEBUG\fP=all .RS 4 خروجی اشکال‌زدایی را برای مقایسه‌های فایل فعال می‌کند. .RE .SH "اشکالات (BUGS)" .sp پیاده‌سازی اولیهٔ \fBhardlink\fP از گزینهٔ \fB\-f\fP برای اجبار به ایجاد پیوندهای سخت میان سیستم‌فایل‌ها استفاده می‌کرد. این ویژگی که به‌ندرت قابل استفاده بود دیگر توسط \fBhardlink\fP فعلی پشتیبانی نمی‌شود. .sp دستور \fBhardlink\fP فرض می‌کند درخت‌هایی که روی آن‌ها عملیات انجام می‌دهد در حین اجرا تغییر نمی‌کنند. اگر درختی تغییر کند، نتیجه نامشخص و بالقوه خطرناک خواهد بود. برای مثال، اگر یک فایل معمولی با یک دستگاه جایگزین شود، \fBhardlink\fP ممکن است شروع به خواندن از آن دستگاه کند. اگر جزئی از یک مسیر با یک پیوند نمادین جایگزین شود یا مجوزهای فایل تغییر کند، امنیت ممکن است به خطر بیفتد. \fBhardlink\fP را روی درختی در حال تغییر یا روی درختی که توسط کاربر دیگری کنترل می‌شود اجرا نکنید. .SH "نویسنده (AUTHOR)" .sp چندین پیاده‌سازی از \fBhardlink\fP وجود دارد. اولین پیاده‌سازی توسط Jakub Jelinek برای توزیع Fedora انجام شد، این پیاده‌سازی در util\-linux بین نسخه‌های v2.34 تا v2.36 استفاده شده است. پیاده‌سازی فعلی بر پایه نسخه Debian از Julian Andres Klode است. .SH "گزارش باگ‌ها (REPORTING BUGS)" .sp برای گزارش باگ‌ها از \c .URL "https://github.com/util\-linux/util\-linux/issues" "ردیاب مشکلات" "." .SH "در دسترس بودن (AVAILABILITY)" .sp دستور \fBhardlink\fP بخشی از بستهٔ util\-linux است که می‌توان آن را از \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux" "بایگانی هسته لینوکس" "."