| rdfind(1) | rdfind | rdfind(1) |
نام (NAME)
rdfind - پیدا کردن فایلهای تکراری
خلاصه دستور (SYNOPSIS)
rdfind [ options ] directory1 | file1 [ directory2 | file2 ] ...
توضیحات (DESCRIPTION)
دستور rdfind فایلهای تکراری را در چندین دایرکتوری و/یا درون آنها پیدا میکند. این برنامه چکسامها را تنها در صورت لزوم محاسبه میکند. دایرکتوریها بهصورت بازگشتی جستجو میشوند.
اگر دو (یا چند) فایل یکسان پیدا شوند، برنامه تصمیم میگیرد که کدامیک از آنها فایل اصلی است و مابقی به عنوان تکراری در نظر گرفته میشوند. این کار با رتبهبندی فایلها نسبت به یکدیگر و تعیین اینکه کدامیک بالاترین رتبه را دارد انجام میگیرد. برای جزئیات به بخش «رتبهبندی (RANKING)» مراجعه کنید.
بهطور پیشفرض، هیچ اقدامی به جز ایجاد یک فایل شامل فایلهای شناساییشده و نمایش مقدار فضای قابل صرفهجویی انجام نمیشود.
اگر نسبت به حالت پیشفرض نیاز به کنترل بهتری روی رتبهبندی دارید، میتوانید از یک پیشپردازنده استفاده کنید که نام فایلها را به ترتیب دلخواه مرتب کرده و سپس برنامه را با استفاده از xargs اجرا کند. برای چگونگی استفاده از find و xargs در کنار rdfind، به مثالهای زیر مراجعه نمایید.
برای گنجاندن فایلها یا دایرکتوریهایی که نام آنها با - شروع میشود، از rdfind ./- استفاده کنید تا با گزینهها اشتباه گرفته نشوند.
رتبهبندی (RANKING)
در صورت وجود دو یا چند فایل یکسان، فایلی که بالاترین رتبه را داشته باشد به عنوان نسخه اصلی انتخاب شده و باقی فایلها تکراری محسوب میشوند. قوانین رتبهبندی در زیر آورده شدهاند؛ این قوانین از ابتدا اجرا میشوند تا زمانی که یک نسخه اصلی پیدا شود. با فرض دو فایل A و B که اندازه و محتوای یکسانی دارند، رتبهبندی به شرح زیر است:
اگر A در حین پویش یک آرگومان ورودی زودتر از B پیدا شده باشد، A رتبه بالاتری دارد.
اگر A در عمق دایرکتوری کمتری نسبت به B پیدا شده باشد، A دارای رتبه بالاتری است (A به ریشه نزدیکتر است).
اگر A و B در حین پویش یک آرگومان ورودی یکسان یافت شوند و عمق دایرکتوری یکسانی داشته باشند، اینکه کدامیک بالاترین رتبه را میگیرد بستگی به این دارد که عملکرد قطعی (deterministic) فعال باشد یا خیر. این گزینه بهطور پیشفرض فعال است (گزینه -deterministic را ببینید). در صورت فعال بودن، اینکه کدام فایل رتبه بالاتری کسب میکند نامشخص اما قطعی است. در صورت غیرفعال بودن، فایلی که ابتدا توسط فایلسیستم گزارش شده است بالاترین رتبه را خواهد داشت.
گزینهها (OPTIONS)
گزینههای جستجو و غیره:
- -ignoreempty true|false
- نادیده گرفتن فایلهای خالی. تنظیم این گزینه روی true (پیشفرض) معادل -minsize 1 و تنظیم آن روی false معادل -minsize 0 است.
- -minsize N
- فایلهای با حجم کمتر از N بایت را نادیده میگیرد. مقدار پیشفرض 1 است، به این معنی که فایلهای خالی نادیده گرفته میشوند.
- -maxsize N
- فایلهای با حجم N بایت یا بیشتر را نادیده میگیرد. مقدار پیشفرض 0 است، به این معنی که این بررسی غیرفعال است.
- -followsymlinks true|false
- دنبال کردن پیوندهای نمادین (symlinks). مقدار پیشفرض false است.
- -removeidentinode true|false
- مواردی را که inode و شناسه دستگاه (device ID) یکسانی دارند حذف میکند. مقدار پیشفرض true است.
- -checksum none|md5|sha1|sha256|sha512|xxh128
- نوع چکسام مورد استفاده: md5، sha1، sha256، sha512 یا xxh128. از نسخه 1.4.0 مقدار پیشفرض sha1 است. xxh128 یک چکسام بسیار سریع است، اما کیفیت رمزنگاری ندارد. پشتیبانی از xxh اختیاری است و مستلزم آن است که rdfind با --with-xxhash پیکربندی شده باشد. در صورتی که xxh استفاده شود اما پشتیبانی وجود نداشته باشد، یک خطا برگردانده میشود. از چکسام none میتوان برای صرفنظر کردن کامل از محاسبه چکسام استفاده کرد. این کار توصیه نمیشود! در صورتی که فایلهایی با اندازه یکسان محتوای متفاوتی داشته باشند، این احتمال وجود دارد که به اشتباه تکراری در نظر گرفته شوند و منجر به حذف فایل گردد (بسته به گزینههای دیگر).
- -buffersize N
- اندازه قطعات (chunksize) به بایت هنگام محاسبه چکسام فایلها؛ مقادیر کوچکتر یا بزرگتر بسته به فایلسیستم و الگوریتم چکسام میتوانند عملکرد را بهبود ببخشند. مقدار پیشفرض 1 MiB و حداکثر مجاز 128MiB (شامل خود آن) است.
- -firstbytessize N
- اندازه به بایت هنگام پویش نخستین بایتهای هر فایل، پیش از محاسبه چکسام کامل. تنظیم این مقدار روی 0 به معنای صرفنظر کردن کامل از این مرحله است.
- -lastbytessize N
- اندازه به بایت هنگام پویش آخرین بایتهای هر فایل، پیش از محاسبه چکسام کامل. تنظیم این مقدار روی 0 به معنای صرفنظر کردن کامل از این مرحله است.
- -deterministic true|false
- در صورت تنظیم بودن (پیشفرض)، فایلهای با رتبه برابر را به ترتیبی نامشخص اما قطعی مرتب میکند. این امر باعث میشود رفتار برنامه از ترتیبی که فایلها هنگام پرسوجو از فایلسیستم فهرست میشوند مستقل گردد.
گزینههای عملیات:
- -makesymlinks true|false
- جایگزین کردن فایلهای تکراری با پیوندهای نمادین (symbolic links). پیشفرض false است.
- -makehardlinks true|false
- جایگزین کردن فایلهای تکراری با پیوندهای سخت (hard links). پیشفرض false است.
- -makeresultsfile true|false
- ایجاد یک فایل نتایج در دایرکتوری جاری. پیشفرض true است. در صورت وجود فایل، رونویسی میشود. این گزینه بر حذف شدن یا نشدن موارد تأثیری ندارد. برای چگونگی غیرفعال کردن حذفها، به -dryrun مراجعه کنید.
- -outputname name
- تنظیم نام فایل نتایج به "name" به جای نام پیشفرض results.txt.
- -deleteduplicates true|false
- حذف (unlink) فایلها. پیشفرض false است.
گزینههای عمومی:
- -progress true|false
- نمایش پیشرفت در حین حذف موارد تکراری. پیشفرض false است.
- -sleep Xms
- ایجاد وقفه به میزان X میلیثانیه بین خواندن هر فایل، به منظور کاهش بار کاری. مقدار پیشفرض 0 است (بدون وقفه). توجه داشته باشید که در حال حاضر تنها چند مقدار پشتیبانی میشوند: 0، 1-5، 10، 25، 50، 100 میلیثانیه.
- -n, -dryrun true|(false)
- بهطور پیشفرض، rdfind هیچ کاری جز ایجاد یک فایل نتایج انجام نمیدهد. در صورتی که یکی از پرچمهای عملیات مانند -deleteduplicates تنظیم شده باشد، میتوان dryrun را فعال کرد تا rdfind به جای انجام واقعی عملیات، کارهایی را که قرار است انجام دهد چاپ کند. مقدار پیشفرض false است.
- -h, -help, --help
- نمایش یک پیام راهنمای مختصر.
- -v, -version, --version
- نمایش شماره نسخه.
مثالها (EXAMPLES)
- جستجوی فایلهای تکراری در دایرکتوری خانگی و یک دایرکتوری پشتیبان:
- rdfind ~ /mnt/backup
- حذف فایلهای تکراری در یک دایرکتوری پشتیبان:
- rdfind -deleteduplicates true /mnt/backup
- جستجوی فایلهای تکراری در دایرکتوریهایی با نام foo:
- find . -type d -name foo -print0 |xargs -0 rdfind
فایلها (FILES)
results.txt (نام پیشفرض results.txt است و میتواند با گزینه outputname تغییر کند، بالا را ببینید). فایل نتایج results.txt شامل یک سطر به ازای هر فایل تکراری یافتشده خواهد بود، به همراه یک سطر سرآیند که ستونها را توضیح میدهد. یک متن دلیل این را که چرا فایل تکراری در نظر گرفته شده است شرح میدهد:
DUPTYPE_UNKNOWN یک خطای داخلی
DUPTYPE_FIRST_OCCURRENCE فایلی که به عنوان نسخه اصلی در نظر گرفته میشود.
DUPTYPE_WITHIN_SAME_TREE فایلهای موجود در همان درخت (هنگام پردازش دایرکتوری در همان آرگومان ورودیِ فایل اصلی یافت شده است)
DUPTYPE_OUTSIDE_TREE فایل هنگام پردازش یک آرگومان ورودی دیگر به غیر از فایل اصلی یافت شده است.
محیط (ENVIRONMENT)
خطاها (DIAGNOSTICS)
وضعیت خروج (EXIT STATUS)
0 در صورت موفقیت، در غیر این صورت مقداری غیر صفر.
گزارش باگها (BUGS)
هنگامی که یک دایرکتوری یکسان دو بار مشخص شود، برنامه نخستین دایرکتوریِ دیدهشده را به عنوان مهمترین (نسخه اصلی) در نظر میگیرد و مابقی را تکراری میشمارد. این ممکن است چیزی نباشد که شما میخواهید.
ایجاد پیوند نمادین پیوندهای مطلق ایجاد میکند. این ممکن است مطلوب شما نباشد. برای ایجاد پیوندهای نسبی به جای آن، میتوانید از دستور symlinks(8) استفاده کنید که قادر به تبدیل پیوندهای مطلق به پیوندهای نسبی است.
متأسفانه نسخههای قدیمیتر شامل یک غلط املایی در کلمه occurrence بودند. این مورد اکنون تصحیح شده است (از نسخه 1.3)، که ممکن است بر اسکریپتهای کاربر که خروجی نوشتهشده توسط rdfind را تجزیه میکنند تأثیر بگذارد.
ملاحظات امنیتی (SECURITY CONSIDERATIONS)
هنگامی که rdfind در حال خواندن است از دستکاری دایرکتوریها خودداری کنید. rdfind در این وضعیت کاملاً آسیبپذیر است. بهویژه هنگام حذف یا ایجاد پیوندها، rdfind میتواند در معرض حمله پیوند نمادین (symlink attack) قرار گیرد. با احتیاط استفاده کنید!
برنامه rdfind با هدف حذف موارد تکراری در دایرکتوریهای متعلق به یک کاربر نوشته شده است. این ابزار مالکیت و مجوزهای فایل را مدیریت نمیکند. اجرای آن در بین دایرکتوریهایی با چندین مالک مختلف توصیه نمیشود.
نویسندگان (AUTHORS)
Paul Dreik 2006-2026، در
دسترس از
طریق rdfind@pauldreik.se
دستور rdfind در
https://rdfind.pauldreik.se در
دسترس است.
آیا rdfind برای شما مفید واقع شده است؟ پیامی برای من بفرستید! همواره شنیدن از افرادی که واقعاً از آن استفاده میکنند و اینکه آن را روی چه مجموعههای دادهای اجرا مینمایند، لذتبخش است.
تشکرها (THANKS)
چندین نفر با پیشنهادات و بهبودها یاری رساندهاند: Niels Möller، Carl Payne و Salvatore Ansani. همچنین تشکر از شما که برنامه را آزمایش کردید و بازخورد خود را فرستادید.
نسخه (VERSION)
1.8.0 (تاریخ انتشار 2026-02-22)
کپیرایت و تکثیر (COPYRIGHT)
این برنامه طبق انتخاب شما، تحت مجوز GPLv2 یا بالاتر توزیع میشود.
همچنین ببینید (SEE ALSO)
md5sum, sha1sum, find, symlinks
| 1.8.0 | Feb 2026 |