بهترین ابزارهای پیدا کردن و حذف فایلهای تکراری در لینوکس
مقدمه: چرا مدیریت فایلهای تکراری مهم است؟
سازماندهی دایرکتوری home یا حتی سیستم شما میتواند به طور خاصی سخت باشد اگر عادت دارید انواع چیزها را از اینترنت با استفاده از مدیران دانلود خود دانلود کنید.
اغلب ممکن است ببینید که همان فایل mp3، pdf و epub (و همه انواع دیگر پسوندهای فایل) را دانلود کردهاید و آن را به دایرکتوریهای مختلف کپی کردهاید. این ممکن است باعث شود دایرکتوریهای شما با انواع چیزهای تکراری بیفایده شلوغ شوند.
در این آموزش، شما یاد خواهید گرفت که چگونه فایلهای تکراری را در لینوکس پیدا و حذف کنید با استفاده از ابزارهای خط فرمان rdfind، fdupes و rmlint و همچنین با استفاده از ابزارهای GUI به نامهای DupeGuru و FSlint.
# زیرا این ممکن است منجر به از دست دادن ناخواسته داده شود
# اگر از یک ابزار جدید استفاده میکنید، ابتدا آن را در یک دایرکتوری تست امتحان کنید
# جایی که حذف فایلها مشکلساز نخواهد بود
1. Rdfind – پیدا کردن فایلهای تکراری در لینوکس
Rdfind از redundant data find میآید که یک ابزار خط فرمان رایگان است برای پیدا کردن فایلهای تکراری در بین یا درون چندین دایرکتوری. این ابزار به صورت بازگشتی دایرکتوریها را اسکن میکند و فایلهایی را شناسایی میکند که محتوای یکسانی دارند و به شما امکان میدهد اقدامات مناسب مانند حذف یا جابجایی تکراریها را انجام دهید.
الگوریتم رتبهبندی Rdfind
Rdfind از یک الگوریتم برای طبقهبندی فایلها استفاده میکند و تشخیص میدهد کدام یک از تکراریها فایل اصلی است و بقیه را به عنوان تکراری در نظر میگیرد.
قوانین رتبهبندی:
- اگر A زودتر از B در حین اسکن یک آرگومان ورودی پیدا شود، A رتبه بالاتری دارد
- اگر A در عمق کمتری از B پیدا شود، A رتبه بالاتری دارد
- اگر A زودتر از B پیدا شود، A رتبه بالاتری دارد
نصب Rdfind در لینوکس
sudo apt install rdfind # دبیان، اوبونتو و مینت
sudo yum install rdfind # RHEL/CentOS/Fedora و Rocky/AlmaLinux
sudo emerge -a sys-apps/rdfind # جنتو لینوکس
sudo apk add rdfind # آلپاین لینوکس
sudo pacman -S rdfind # آرچ لینوکس
sudo zypper install rdfind # openSUSE
استفاده از Rdfind
برای اجرای rdfind روی یک دایرکتوری به سادگی rdfind و دایرکتوری هدف را تایپ کنید.
همانطور که میبینید rdfind نتایج را در یک فایل به نام results.txt ذخیره میکند که در همان دایرکتوری که برنامه را اجرا کردهاید قرار دارد. فایل شامل تمام فایلهای تکراری است که rdfind پیدا کرده است. میتوانید فایل را مرور کنید و فایلهای تکراری را به صورت دستی حذف کنید اگر بخواهید.
کار دیگری که میتوانید انجام دهید استفاده از گزینه -dryrun است که لیستی از تکراریها را بدون انجام هیچ اقداماتی ارائه میدهد:
وقتی تکراریها را پیدا کردید، میتوانید انتخاب کنید که آنها را با hard links جایگزین کنید.
و اگر مایلید تکراریها را حذف کنید میتوانید اجرا کنید.
برای بررسی گزینههای مفید دیگر rdfind میتوانید از manual rdfind استفاده کنید.
2. Fdupes – اسکن برای فایلهای تکراری در لینوکس
Fdupes یک برنامه خط فرمان دیگر است که به شما امکان میدهد فایلهای تکراری را در سیستم خود شناسایی کنید. این ابزار به صورت بازگشتی دایرکتوریها را جستجو میکند، اندازه فایلها و محتوا را مقایسه میکند تا تکراریها را شناسایی کند.
روشهای تشخیص Fdupes
این ابزار از روشهای زیر برای تعیین فایلهای تکراری استفاده میکند:
- مقایسه امضاهای md5sum جزئی
- مقایسه امضاهای md5sum کامل
- تأیید مقایسه بایت به بایت
نصب Fdupes در لینوکس
sudo apt install fdupes # دبیان، اوبونتو و مینت
sudo yum install fdupes # RHEL/CentOS/Fedora و Rocky/AlmaLinux
sudo emerge -a sys-apps/fdupes # جنتو لینوکس
sudo apk add fdupes # آلپاین لینوکس
sudo pacman -S fdupes # آرچ لینوکس
sudo zypper install fdupes # openSUSE
استفاده از Fdupes
سینتکس Fdupes مشابه rdfind است. به سادگی دستور را به دنبال دایرکتوری که میخواهید اسکن کنید تایپ کنید.
برای جستجوی فایلها به صورت بازگشتی، باید گزینه -r را مانند این مشخص کنید.
همچنین میتوانید چندین دایرکتوری مشخص کنید و یک دایرکتوری را برای جستجوی بازگشتی مشخص کنید.
برای اینکه fdupes اندازه فایلهای تکراری را محاسبه کند از گزینه -S استفاده کنید.
برای جمعآوری اطلاعات خلاصه شده درباره فایلهای پیدا شده از گزینه -m استفاده کنید.
در نهایت، اگر میخواهید همه تکراریها را حذف کنید از گزینه -d مانند این استفاده کنید.
Fdupes خواهد پرسید که کدام یک از فایلهای پیدا شده حذف شود. شما باید شماره فایل را وارد کنید:
[1] /home/user/file1.txt
[2] /home/user/backup/file1.txt
Set 1 of 1, preserve files [1 – 2, all]:
یک راهحل که قطعاً توصیه نمیشود استفاده از گزینه -N است که منجر به حفظ فقط فایل اول خواهد شد.
برای دریافت لیستی از گزینههای موجود برای استفاده با fdupes صفحه help را با اجرای دستور زیر مرور کنید.
3. Jdupes – فورک بهبود یافته Fdupes
jdupes یک فورک مدرنتر از fdupes کلاسیک است، اما بسیار سریعتر است، به طور فعال نگهداری میشود و ویژگیهای زیادی اضافه میکند که fdupes ندارد.
مانند fdupes، فایلهای تکراری را با مقایسه محتوای فایل پیدا میکند، اما برای مجموعه دادههای بزرگ و موارد استفاده سنگین بهینه شده است.
بهبودهای کلیدی نسبت به Fdupes:
- اسکن بسیار سریعتر روی دایرکتوریهای بزرگ (به لطف الگوریتمهای بهتر و موازیسازی)
- میتواند تکراریها را با hard links جایگزین کند تا فضای ذخیره شود
- گزینه ایجاد symbolic links به جای حذف
- خروجی دقیقتر و گزینههای اسکریپتنویسی پیشرفته
- گزینههای حذف ایمنتر با promptهای تعاملی
نصب Jdupes در لینوکس
sudo apt install jdupes # دبیان، اوبونتو، مینت
sudo yum install jdupes # RHEL، CentOS، Fedora، Rocky، AlmaLinux
sudo pacman -S jdupes # آرچ لینوکس
sudo zypper install jdupes # openSUSE
مثالهای استفاده از Jdupes:
jdupes -r /home/user # اسکن بازگشتی
jdupes -d /home/user # حذف تکراریها به صورت تعاملی
jdupes -L /home/user # جایگزینی تکراریها با hardlinks
jdupes -s /home/user # جایگزینی با symlinks
گزینههای بیشتر را با دستور زیر بررسی کنید:
4. Rmlint – حذف فایلهای تکراری
Rmlint یک ابزار خط فرمان است که برای پیدا کردن و حذف فایلهای تکراری و شبه lint در سیستمهای لینوکس استفاده میشود. این ابزار به شناسایی فایلهایی با محتوای یکسان و همچنین انواع مختلف افزونگی یا lint کمک میکند، مانند فایلهای خالی، پیوندهای نمادین شکسته و فایلهای یتیم.
نصب Rmlint در لینوکس
sudo apt install rmlint # دبیان، اوبونتو و مینت
sudo yum install rmlint # RHEL/CentOS/Fedora و Rocky/AlmaLinux
sudo emerge -a sys-apps/rmlint # جنتو لینوکس
sudo apk add rmlint # آلپاین لینوکس
sudo pacman -S rmlint # آرچ لینوکس
sudo zypper install rmlint # openSUSE
ویژگیهای پیشرفته Rmlint
rmlint –types=”duplicates” /path/to/scan
rmlint –size 1M-100M /path/to/scan # فایلهای بین 1MB تا 100MB
rmlint –kernel-smylinks /path/to/scan # پیوندهای نمادین شکسته
rmlint –empty /path/to/scan # فایلهای خالی
# تولید اسکریپت حذف خودکار
rmlint -o sh:delete_script.sh /path/to/scan
5. dupeGuru – پیدا کردن فایلهای تکراری در لینوکس
dupeGuru یک ابزار متنباز و cross-platform است که میتواند برای پیدا کردن فایلهای تکراری در یک سیستم لینوکس استفاده شود. این ابزار میتواند یا نام فایلها یا محتوا را در یک یا چند پوشه اسکن کند. همچنین به شما امکان میدهد نام فایلی را پیدا کنید که شبیه به فایلهایی است که جستجو میکنید.
ویژگیهای dupeGuru
- الگوریتم تطابق فازی سریع که به شما کمک میکند فایلهای تکراری را در عرض یک دقیقه پیدا کنید
- قابل تنظیم – میتوانید دقیقاً فایلهای تکراری مورد نظر خود را بیرون بکشید
- حذف فایلهای ناخواسته از سیستم
- پشتیبانی از پلتفرمهای مختلف (ویندوز، مک و لینوکس)
نصب dupeGuru در لینوکس
sudo apt install dupeguru # دبیان، اوبونتو و مینت
sudo yum install dupeguru # RHEL/CentOS/Fedora و Rocky/AlmaLinux
sudo emerge -a sys-apps/dupeguru # جنتو لینوکس
sudo apk add dupeguru # آلپاین لینوکس
sudo pacman -S dupeguru # آرچ لینوکس
sudo zypper install dupeguru # openSUSE
6. Czkawka – ابزار مدرن تمیز کردن فایلهای تکراری برای لینوکس
Czkawka (تلفظ “ch-kav-ka” – به معنی “سکسکه” در لهستانی) یک ابزار رایگان و متنباز ساخته شده در Rust است که به شما کمک میکند فایلهای غیرضروری را از سیستم خود پیدا و حذف کنید. این ابزار طراحی شده است تا یک جایگزین سریع، ایمن و سبکوزن برای ابزارهای قدیمیتر مانند FSlint باشد.
با Czkawka، میتوانید فایلهای تکراری، پوشههای خالی، فایلهای موقت، پیوندهای نمادین شکسته و حتی فایلهای بزرگ استفاده نشده را تشخیص دهید. این ابزار هر دو رابط خط فرمان و رابط گرافیکی برای سهولت استفاده ارائه میدهد.
# میتوانید از فرمتهای بسته دیگر مانند flatpak یا باینریهای از پیش ساخته شده از پروژه رسمی github استفاده کنید
نصب Czkawka
flatpak install flathub com.github.qarmin.czkawka
# نصب از طریق Snap
sudo snap install czkawka
استفاده از Czkawka
پس از نصب، میتوانید آن را از منوی برنامههای خود راهاندازی کنید (برای GUI) یا از ترمینال با استفاده از czkawka_cli اجرا کنید.
czkawka_cli
# رابط گرافیکی
czkawka_gui
مثالهای پیشرفته Czkawka
czkawka_cli duplicate –directories /home/user –delete-method NONE
# پیدا کردن پوشههای خالی
czkawka_cli empty-folders –directories /home/user
# پیدا کردن فایلهای موقت
czkawka_cli temporary –directories /home/user
# پیدا کردن پیوندهای نمادین شکسته
czkawka_cli broken-symlinks –directories /home/user
مقایسه ابزارهای پیدا کردن فایلهای تکراری
معیارهای مقایسه:
- سرعت: jdupes و Czkawka سریعترین هستند
- مصرف حافظه: fdupes و rdfind کمترین مصرف را دارند
- امکانات: Czkawka و rmlint بیشترین امکانات را ارائه میدهند
- سهولت استفاده: dupeGuru و Czkawka GUI بهترین برای کاربران تازهکار هستند
- انعطافپذیری: rmlint و jdupes بیشترین انعطاف را دارند
نکات امنیتی و بهترین روشها
قبل از حذف فایلها:
sudo tar -czf backup_before_cleanup.tar.gz /home/user
# از گزینه dry-run استفاده کنید
rdfind -dryrun true /home/user
fdupes -r /home/user | less
# فایلهای سیستم را حذف نکنید
# فقط روی دایرکتوری home کاربران کار کنید
اسکریپت نمونه برای مدیریت امن فایلهای تکراری:
# اسکریپت نمونه برای مدیریت فایلهای تکراری
BACKUP_DIR=”/backup/$(date +%Y%m%d_%H%M%S)”
SCAN_DIR=”/home/user”
echo “Creating backup in $BACKUP_DIR”
mkdir -p “$BACKUP_DIR”
echo “Scanning for duplicates…”
jdupes -r -S “$SCAN_DIR” > “$BACKUP_DIR/duplicates_list.txt”
echo “Summary of duplicates:”
jdupes -r -m “$SCAN_DIR”
echo “Review the list at: $BACKUP_DIR/duplicates_list.txt”
echo “When ready to delete, run: jdupes -r -d $SCAN_DIR”
نتیجهگیری
مدیریت فایلهای تکراری یک کار ضروری برای حفظ سیستم لینوکس شما تمیز و کارآمد است. هر یک از ابزارهای معرفی شده نقاط قوت و موارد استفاده خاص خود را دارند:
- برای کاربران تازهکار: dupeGuru یا Czkawka با رابط گرافیکی
- برای اسکریپتنویسی و اتوماسیون: jdupes یا rmlint
- برای سیستمهای قدیمی با منابع محدود: fdupes یا rdfind
- برای مجموعه دادههای بسیار بزرگ: jdupes یا Czkawka
همیشه به یاد داشته باشید که قبل از حذف هر فایلی، از دادههای خود backup بگیرید و از گزینه dry-run برای پیشنمایش اقدامات استفاده کنید.