اعثر على الملفات والمجلدات المكررة واستعد مساحة التخزين — بأمان
تجريبي — v0.9.2 . يُجري DedupCommando عمليات مدمّرة (حذف، hardlink، reflink) على ملفات حقيقية. اقرأ دليل الأمان قبل تطبيق أي إجراء واحتفظ بنسخ احتياطية.
DedupCommando أداة طرفية للينكس (CLI وTUI) للعثور على الملفات والمجلدات المتطابقة بايتًا ببايت واستعادة المساحة التي تهدرها — مصمَّمة لتخزين ZFS، بما في ذلك التخزين المستضاف على أنظمة Proxmox VE. أمان البيانات أولًا: تُنفَّذ كل دفعة مدمّرة تحت لقطة (snapshot) من ZFS، وتُنقَل الملفات «المحذوفة» إلى الحجر بدلًا من إزالتها، ويُعاد التحقق من المحتوى مباشرةً قبل كل إجراء.
الأمان أولًا
- تُؤخذ لقطة ZFS لكل مجموعة بيانات (dataset) متأثرة قبل أول إجراء؛ وإذا فشلت أي لقطة تُلغى الدفعة كلها.
- «الحذف» ينقل الملفات إلى الحجر ولا يستخدم
unlink— قابل للتراجع حتى تُفرغه صراحةً. - يُعاد التحقق من المحتوى (إعادة تجزئة / إعادة stat) مباشرةً قبل كل إجراء؛ وأي اختلاف يُلغي ذلك الإجراء.
- تُنشَر الملفات بشكل ذرّي عبر
renameat2(RENAME_NOREPLACE)— دون تعارض زمني. - قفل النسخة الواحدة يمنع الكتابة المتزامنة؛ وتُرفَض عمليات النقل بين مجموعات البيانات، ولا يحدث أبدًا نسخ ثم حذف صامت.
ثلاث طرق لاستعادة المساحة
- الحذف إلى الحجر — أزل نسخة مكررة مع إبقائها قابلة للاستعادة حتى الإفراغ.
- Hardlink — وجّه النسخ المكررة إلى inode واحد مشترك (ضمن مجموعة بيانات واحدة).
- Reflink — استنساخ كتل بنسخ-عند-الكتابة (CoW) على ZFS مع
block_cloning(داخل مجموعة البيانات نفسها)؛ بيانات وصفية مستقلة وكتل مشتركة حتى يتغيّر ملف.
في كل مجموعة يكون أحد الملفات هو المُحتفَظ به (keeper)؛ والبقية تصبح روابط أو تذهب إلى الحجر.
كيف يعمل
- الفحص — يجتاز المسارات المختارة، ويحسب تجزئة المرشحين بـ BLAKE3 (مع إعادة مقارنة بايتية اختيارية)، ويجمّع الملفات المتطابقة. الفحوص قابلة للاستئناف ومخزَّنة مؤقتًا لإعادة شبه فورية.
- المراجعة — تصفّح مجموعات التكرار في واجهة commander متعددة الألواح (افتراضيًا) أو في معالج كلاسيكي تدريجي (
--classic)؛ وحدّد keeper والإجراء لكل مجموعة. كما يعثر على «المجلدات التوأم»: أشجار أدلة بمحتوى متطابق. - التطبيق — راجع الخطة وطبّقها تفاعليًا، أو احفظها كسكربت شِل. منظّم الموارد (Turbo / Balanced / Idle) يمنع الفحص من خنق الأجهزة الافتراضية أو النسخ الاحتياطية على مضيف مشغول.
مصمَّم لـ ZFS، ويعمل على Proxmox VE
صُمِّم DedupCommando لـ ZFS: تعتمد عليه اللقطات وحدود مجموعات البيانات وreflink. تم اختباره على Proxmox VE 9.1 (OpenZFS 2.3) حيث يتوفّر ZFS جاهزًا. هذه إزالة تكرار على مستوى الملفات — العثور على الملفات المكررة وإزالتها — وليست إزالة التكرار على مستوى الكتل المدمجة في ZFS (zfs set dedup)، ولا ضغطًا.
على أنظمة الملفات غير ZFS يعمل الفحص، لكن لا توجد حماية باللقطات، لذا لا يُنصح بتطبيق الإجراءات هناك.
المتطلبات
- لينكس، نواة ≥ 3.15، x86_64 أو aarch64.
- يُنصح بشدة بـ ZFS (الحماية باللقطات، اكتشاف مجموعات البيانات، reflink)؛ ووجود
zfsفيPATH، وعادةً التشغيل بصلاحيات root. - طرفية UTF-8 بـ 256 لونًا.
البدء
Debian 13 / Proxmox VE 9+ — ثبّت من مستودع APT موقّع (تحديثات عبر apt upgrade):
# as root (Proxmox default); on non-root Debian run: sudo -i
curl -fsSL https://dedupcommando.github.io/apt/dedcom-archive-keyring.gpg \
-o /usr/share/keyrings/dedcom-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/dedcom-archive-keyring.gpg] https://dedupcommando.github.io/apt stable main" \
| tee /etc/apt/sources.list.d/dedcom.list
apt update && apt install dedcom
تُرفَق ثنائيات جاهزة مع كل إصدار على GitHub (amd64 وarm64) — نزّل، تحقّق، ثم ثبّت:
tar xzf dedcom-<version>-<triple>.tar.gz
install -m 755 dedcom /usr/local/bin/dedcom
البناء من المصدر يتم عبر Docker، دون حاجة إلى أدوات Rust محلية.
- أحدث إصدار · الشيفرة على GitHub
- مزيد من التفاصيل (بالإنجليزية): التكرار على ZFS · على Proxmox VE · باحث التكرارات على لينكس · hardlink مقابل reflink · الأمان والاستعادة · التوثيق