Deduplikation är något som ser väldigt enkelt att utföra men med symboliska länkar, hårda länkar mm. väldigt snabbt kan bli komplicerat med cirkel-referenser mm. och det är enkelt att skjuta sig i foten där filer som man tänkte ha kvar - försvinner.
Därför är det extremt viktigt att kunna låsa mappar och filträn där dedupliceringsprogrammet inte får röra filerna oavsett hur många dubbletter den hittar där - en mastervolym eller filträd som är master och sedan från denna kan jämföra med andra filträd där den får ta bort filer i dessa trän som också finns i master-filträdet men lämna filerna som inte fins i kopia i masterfilträdet, även om de skulle finnas i flera exemplar av lika filer inom filträdet man vill tömma på dubbletter.
rmlint (cli-program) använder jag i Linux och uppfyller ovanstående - där kan man bestämma vilken mapp som är 'master' och inget tas bort ur även om det fins dubbletter inom denna och bara markerar dubbletter i andra mappen man vill ta bort dubbletter ur om det fins motsvarande fil i 'mastern'. Den arbetar med hash på filerna så även om filnamnen är olika så hittas dessa och bryr sig inte om var i filhierakin dessa hittas.
Just detta att den kan titta i hela diskar (backupdiskar främst) och mappträd (läs mellan snapshot i btrfs) - ta bort det som är lika mot master-mappen och lämna kvar det som är olika och inte röra filerna i 'master' är ofta betal-funktioner i dedupliceringsprogram för windows och ibland inte ens kan prova hur de arbetar i dess demoversioner.
rmlint kan spara hashvärdena som attribut kopplad mot filens modifieringstid vilket gör att senare körning kan gå väldigt mycket fortare om man tex. skall jämföra mellan två diskars filinnehåll på regelbunden basis - när man gör snapshot med BTRFS så följer alla dessa attribut med även i gjorda snapshot vilket gör det enkelt att snabbt jämföra tagna snapshot i olika tid och sedan ta bort allt som är lik i den äldre snapshoten och lämna kvar det som skiljer sig gentemot den nyare snapshot för en senare manuell granskning och eventuell radering,
upptäcker rmlint att modifieringstid har ändrats gentemot tidpunkten när hash för filen skapades så invalideras befintliga hashen och den räknas om på nytt och hashen uppdateras - men detta fungerar dessvärre bara i Unix-filsystem som ext4, BTRFS, XFS - inte på NTFS-filsystem som har annat sätt att hantera attribut...
När rmlint körs så tar den inte bort några filer utan skapar en bash-script som gör jobbet i en senare körning.