| HARDLINK(1) | دستورهای کاربری | HARDLINK(1) |
نام (NAME)
hardlink - ایجاد پیوندهای سخت تکراری برای صرفهجویی در فضای دیسک
خلاصه دستور (SYNOPSIS)
hardlink [options] directory|file...
توضیحات (DESCRIPTION)
hardlink ابزاری است که نسخههای کپی یک فایل را با پیوندهای سخت (hardlinks) یا کلونهای رونوشتدرزماننوشتن (copy-on-write clones) جایگزین میکند و در نتیجه موجب صرفهجویی در فضای دیسک میشود.
hardlink ابتدا یک درخت دودویی از اندازههای فایلها ایجاد میکند و سپس محتوای فایلهایی را که اندازهٔ یکسانی دارند مقایسه میکند. دو روش اصلی برای مقایسه محتوا وجود دارد. روش memcmp مستقیماً بلوکهای داده را از فایلها میخواند و آنها را مقایسه میکند. روش دیگر بر پایه جمعهای کنترلی (مانند SHA256) است؛ در این حالت برای هر بلوک داده یک جمع کنترلی توسط رابط برنامهنویسی رمزنگاری هسته لینوکس (Linux kernel crypto API) محاسبه میشود و این جمع کنترلی در فضای کاربری ذخیره شده و برای مقایسه فایلها استفاده میشود.
برای هر فایل همچنین یک بافر «مقدماتی» (intro) به اندازهٔ ۳۲ بایت در حافظه موقت (cache) نگهداری میشود. این بافر مستقل از روش مقایسه و مقادیر درخواستی cache-size و io-size استفاده میشود. بافر «مقدماتی» عملیات با محتوای داده را به طور چشمگیری کاهش میدهد زیرا فایلها اغلب از همان ابتدا با یکدیگر تفاوت دارند.
گزینهها (OPTIONS)
-c, --content
-b, --io-size size
-d, --respect-dir
-f, --respect-name
-F, --prioritize-trees
-i, --include regex
-l, --list-duplicates
-m, --maximize
-M, --minimize
--mount
-n, --dry-run
-o, --ignore-owner
-O, --keep-oldest
-p, --ignore-mode
-q, --quiet
-r, --cache-size size
--reflink[=when]
آرگومان اختیاری when میتواند never، always یا auto باشد. اگر آرگومان when حذف شود، مقدار پیشفرض آن auto خواهد بود، به این معنی که hardlink نوع سیستمفایل را بررسی میکند و تنها در BTRFS، XFS و ZFS از reflink استفاده میکند و در صورت عدم امکان ایجاد reflink، به پیوندهای سخت بازمیگردد. آرگومان always تشخیص نوع سیستمفایل و بازگشت به پیوندهای سخت را غیرفعال میکند، به این معنی که تنها reflinkها مجاز هستند.
--skip-reflinks
-s, --minimum-size size
-S, --maximum-size size
-t, --ignore-time
-v, --verbose
-x, --exclude regex
--exclude-subtree regex
-X, --respect-xattrs
-y, --method name
-z, --zero
-h, --help
-V, --version
آرگومانها (ARGUMENTS)
دستور hardlink یک یا چند دایرکتوری را دریافت میکند که برای یافتن فایلهای قابل پیوند در آنها جستجو خواهد شد.
محیط (ENVIRONMENT)
ULFILEEQ_DEBUG=all
اشکالات (BUGS)
پیادهسازی اولیهٔ hardlink از گزینهٔ -f برای اجبار به ایجاد پیوندهای سخت میان سیستمفایلها استفاده میکرد. این ویژگی که بهندرت قابل استفاده بود دیگر توسط hardlink فعلی پشتیبانی نمیشود.
دستور hardlink فرض میکند درختهایی که روی آنها عملیات انجام میدهد در حین اجرا تغییر نمیکنند. اگر درختی تغییر کند، نتیجه نامشخص و بالقوه خطرناک خواهد بود. برای مثال، اگر یک فایل معمولی با یک دستگاه جایگزین شود، hardlink ممکن است شروع به خواندن از آن دستگاه کند. اگر جزئی از یک مسیر با یک پیوند نمادین جایگزین شود یا مجوزهای فایل تغییر کند، امنیت ممکن است به خطر بیفتد. hardlink را روی درختی در حال تغییر یا روی درختی که توسط کاربر دیگری کنترل میشود اجرا نکنید.
نویسنده (AUTHOR)
چندین پیادهسازی از hardlink وجود دارد. اولین پیادهسازی توسط Jakub Jelinek برای توزیع Fedora انجام شد، این پیادهسازی در util-linux بین نسخههای v2.34 تا v2.36 استفاده شده است. پیادهسازی فعلی بر پایه نسخه Debian از Julian Andres Klode است.
گزارش باگها (REPORTING BUGS)
برای گزارش باگها از ردیاب مشکلات https://github.com/util-linux/util-linux/issues.
در دسترس بودن (AVAILABILITY)
دستور hardlink بخشی از بستهٔ util-linux است که میتوان آن را از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux.
| 2026-09-02 | util-linux 2.42.3 |