Quando si accumulano file nel tempo su hard disk, SSD o NAS, è inevitabile ritrovarsi con duplicati: foto scaricate più volte, documenti copiati in cartelle diverse, backup sovrapposti. Questi file occupano spazio prezioso e rendono difficile mantenere ordine nel filesystem.
jdupes è un tool open source da riga di comando per Linux che trova ed elimina file duplicati in modo veloce, sicuro ed efficiente. È il successore migliorato di fdupes, con prestazioni superiori e più funzionalità avanzate. La caratteristica più importante di jdupes è il suo algoritmo di verifica multi-stage: non si basa solo sugli hash per identificare i duplicati, ma esegue sempre un confronto byte-per-byte completo prima di dichiarare due file identici. Questo garantisce zero falsi positivi e massima sicurezza nelle operazioni di cancellazione.
In questa guida vedremo come installare jdupes, come usarlo per trovare duplicati salvando un log dettagliato, e come eliminare i file in sicurezza sia in modo interattivo che automatico.
Installazione
jdupes è disponibile nei repository ufficiali delle principali distribuzioni Linux:
bash# Ubuntu/Debian
sudo apt install jdupes
# Fedora/RHEL
sudo dnf install jdupes
# Arch Linux
sudo pacman -S jdupes
Per verificare l’installazione:
bashjdupes --version
Come funziona jdupes: l’algoritmo di verifica
jdupes usa un processo intelligente in più fasi per massimizzare sia la velocità che la sicurezza:
- Raggruppamento per dimensione: tutti i file vengono prima raggruppati per dimensione identica, scartando immediatamente quelli con dimensioni diverse
- Hash parziale: calcola un hash veloce dei primi 4096 byte per confronto rapido
- Hash completo: se l’hash parziale coincide, calcola l’hash completo del file usando xxHash
- Verifica byte-per-byte: fase finale e più importante, confronta i file bit per bit per confermare che siano effettivamente identici
Questo approccio garantisce che non ci siano mai falsi positivi: se jdupes dichiara che due file sono duplicati, lo sono davvero. L’opzione -Q (quick) permette di saltare la verifica byte-per-byte finale per velocizzare l’esecuzione, ma non dovrebbe mai essere usata quando si cancellano file.
Trovare duplicati e salvare un log
Comando base
Per cercare duplicati in una o più cartelle e salvare il risultato in un file di testo:
bashjdupes -r /percorso/cartella > duplicati_log.txt
-resegue la scansione ricorsiva in tutte le sottocartelle> duplicati_log.txtredirige l’output su file invece che a schermo
L’output raggruppa i file duplicati insieme, con una riga vuota che separa ogni gruppo. Ad esempio:
/home/user/Documenti/foto.jpg
/home/user/Download/foto.jpg
/home/user/Backup/foto.jpg
/home/user/video.mp4
/home/user/Scaricati/video.mp4
Aggiungere informazioni sulla dimensione
bashjdupes -r -S /percorso/cartella > duplicati_log.txt
L’opzione -S mostra la dimensione di ogni file duplicato nell’output, utile per capire quanto spazio si può recuperare.
Output con riepilogo finale
bashjdupes -r -M /percorso/cartella > duplicati_log.txt
L’opzione -M stampa tutti i gruppi di duplicati e aggiunge alla fine un riepilogo che mostra:
- Numero totale di file scansionati
- Numero di gruppi di duplicati trovati
- Spazio totale occupato dai duplicati
- Spazio recuperabile eliminando i duplicati
Solo il riepilogo (senza lista completa)
bashjdupes -r -m /percorso/cartella
L’opzione -m mostra solo il riepilogo finale senza elencare tutti i file, utile per una stima veloce.
Output in formato JSON
bashjdupes -r -j /percorso/cartella > duplicati_log.json
L’opzione -j produce output in formato JSON strutturato, ideale se vuoi elaborare i risultati con script Python, jq o altri programmi.
Scansionare più cartelle contemporaneamente
bashjdupes -r -M /home/user/Documenti /home/user/Download /media/backup > duplicati_log.txt
Puoi specificare più percorsi: jdupes troverà i duplicati anche tra cartelle diverse.
Eliminare i duplicati
Una volta identificati i duplicati, jdupes offre diverse modalità per eliminarli.
Modalità interattiva (consigliata per iniziare)
bashjdupes -r -d /percorso/cartella
L’opzione -d attiva la modalità di cancellazione interattiva. Per ogni gruppo di duplicati, jdupes ti mostra l’elenco e ti chiede quale file vuoi preservare, permettendoti di scegliere manualmente. Tutti gli altri file del gruppo verranno eliminati.
Questa modalità è la più sicura per chi usa jdupes per la prima volta o quando non si è certi di quale file mantenere.
Modalità automatica (cancellazione senza conferma)
bashjdupes -r -d -N /percorso/cartella
L’opzione -N (no-prompt) mantiene automaticamente il primo file di ogni gruppo ed elimina tutti gli altri duplicati senza chiedere conferma.
Attenzione: questa modalità cancella immediatamente i file senza possibilità di annullare! Usala solo se sei sicuro e hai fatto un backup preventivo.
Controllare quale file mantenere con l’ordine dei parametri
bashjdupes -r -d -N -O /cartella/da/mantenere /cartella/da/pulire
L’opzione -O (param-order) dice a jdupes di rispettare l’ordine in cui specifichi le cartelle: preserva sempre i file dalla prima cartella indicata.
Esempio pratico: hai duplicati tra ~/Documenti (cartella principale) e ~/Download (temporanea). Vuoi mantenere sempre i file da Documenti:
bashjdupes -r -d -N -O ~/Documenti ~/Download
In questo modo i file in ~/Documenti vengono sempre preservati e i duplicati in ~/Download vengono eliminati.
Ordinamento personalizzato
bashjdupes -r -d -N -o time /percorso/cartella
L’opzione -o permette di scegliere quale file mantenere in base a criteri specifici:
-o timemantiene il file più recente (per data di modifica)-o namemantiene il file in base all’ordine alfabetico del nome (default)
Combinato con -i (reverse) puoi invertire l’ordine:
bashjdupes -r -d -N -o time -i /percorso/cartella
Questo mantiene il file più vecchio invece del più recente.
Alternative alla cancellazione
Hard link: risparmiare spazio senza eliminare
bashjdupes -r -L /percorso/cartella
L’opzione -L sostituisce i file duplicati con hard link senza chiedere conferma. Un hard link è un riferimento aggiuntivo allo stesso file fisico: i duplicati continuano ad apparire come file separati in percorsi diversi, ma occupano lo spazio di uno solo.
Vantaggi:
- Risparmi spazio disco come se avessi cancellato
- Tutti i percorsi rimangono accessibili
- Modificare un file modifica automaticamente tutti gli altri (sono lo stesso file fisico)
Limitazioni:
- Funziona solo all’interno dello stesso filesystem
- Non utilizzabile tra partizioni o dischi diversi
Symlink relativi
bashjdupes -r -l /percorso/cartella
L’opzione -l (link-soft) crea symlink relativi per i duplicati. Meno efficiente degli hard link ma funziona anche tra filesystem diversi.
Deduplica con reflink (copy-on-write)
bashjdupes -r -B /percorso/cartella
L’opzione -B (dedupe) esegue una deduplica copy-on-write usando reflink. Disponibile solo su filesystem moderni che supportano questa funzionalità come:
- Btrfs
- XFS (con reflink abilitato)
- APFS (macOS)
I file condividono i blocchi fisici ma rimangono indipendenti: modificarne uno crea automaticamente una copia separata solo dei blocchi modificati.
Opzioni utili aggiuntive
Escludere file nascosti
bashjdupes -r -A /percorso/cartella
L’opzione -A (no-hidden) esclude dalla scansione i file e le cartelle che iniziano con punto.
Non attraversare filesystem diversi
bashjdupes -r -1 /percorso/cartella
L’opzione -1 (one-file-system) limita la scansione al filesystem corrente, senza attraversare mount point verso altre partizioni o dischi.
Considerare i permessi dei file
bashjdupes -r -p /percorso/cartella
L’opzione -p considera i file come diversi se hanno owner, group o permessi differenti, anche se il contenuto è identico.
Stampare solo file unici
bashjdupes -r -u /percorso/cartella
L’opzione -u inverte la logica: stampa solo i file che NON hanno duplicati.
Considerare file di dimensione zero come duplicati
bashjdupes -r -z /percorso/cartella
Di default jdupes ignora i file vuoti (0 byte). L’opzione -z li include come potenziali duplicati.
Esempio pratico completo
Scenario reale: vuoi pulire le cartelle Download e Documenti, mantenendo sempre i file da Documenti e verificando prima cosa verrà eliminato.
Passo 1: Analisi preliminare
bashjdupes -r -S -M ~/Documenti ~/Download > report_duplicati.txt
Questo comando:
- Scansiona ricorsivamente entrambe le cartelle
- Mostra la dimensione di ogni file duplicato
- Aggiunge un riepilogo finale
- Salva tutto nel file
report_duplicati.txt
Passo 2: Revisione del report
Apri e leggi report_duplicati.txt per verificare:
- Quali file sono duplicati
- Quanto spazio puoi recuperare
- Se ci sono file importanti che vuoi gestire manualmente
bashless report_duplicati.txt
# oppure
cat report_duplicati.txt
Passo 3: Cancellazione sicura
bashjdupes -r -d -N -O ~/Documenti ~/Download
Questo comando:
- Elimina automaticamente i duplicati
- Mantiene sempre i file da
~/Documenti(specificata prima) - Cancella i duplicati da
~/Download
Variante: modalità interattiva per controllo extra
Se preferisci controllare manualmente ogni gruppo:
bashjdupes -r -d -O ~/Documenti ~/Download
Senza -N il comando chiede conferma per ogni gruppo di duplicati.
Consigli di sicurezza
Backup preventivo
Prima di usare qualsiasi comando di cancellazione automatica (-d -N), fai sempre un backup delle cartelle importanti. jdupes è estremamente affidabile grazie alla verifica byte-per-byte, ma un errore umano nella scelta delle opzioni può causare cancellazioni indesiderate.
Anteprima sempre prima di cancellare
Usa -m o -M per vedere un’anteprima dello spazio recuperabile prima di procedere con la cancellazione:
bashjdupes -r -m /percorso/cartella
Salva sempre un log
Prima di cancellare, salva l’elenco completo dei duplicati:
bashjdupes -r -S ~/cartella > duplicati_backup.txt
jdupes -r -d -N ~/cartella
In caso di problemi, hai traccia di cosa è stato eliminato.
Non usare mai -Q con operazioni distruttive
L’opzione -Q (quick) salta la verifica byte-per-byte finale per accelerare la scansione. Non usarla mai insieme a -d, -L, o -B perché aumenta il rischio (seppur minimo) di falsi positivi.
bash# MAI FARE QUESTO:
jdupes -r -Q -d -N /percorso/cartella # PERICOLOSO!
Usa -O per controllo preciso
Quando elimini duplicati tra più cartelle, usa sempre -O e specifica per prima la cartella con i file che vuoi preservare:
bashjdupes -r -d -N -O /importante /temporanea
Test su cartella piccola
Se è la prima volta che usi jdupes per cancellare, fai un test su una cartella piccola e non critica per familiarizzare con il comportamento del comando.
Confronto con altri tool
jdupes offre vantaggi significativi rispetto ad alternative come fdupes o rdfind:
- Velocità superiore: algoritmo ottimizzato e multithreading
- Più opzioni: supporto per hard link, symlink, reflink, JSON output
- Verifica completa: confronto byte-per-byte garantito per sicurezza massima
- Sviluppo attivo: aggiornamenti regolari e correzioni bug
Conclusione
jdupes è uno strumento potente, veloce e sicuro per recuperare spazio su disco eliminando file duplicati su sistemi Linux. Grazie al suo algoritmo multi-stage con verifica byte-per-byte finale, puoi stare tranquillo che non cancellerà mai file diversi per errore.
Le opzioni flessibili permettono di adattare jdupes a qualsiasi scenario: dalla semplice ricerca di duplicati con log dettagliato, alla cancellazione automatica controllata, fino alla deduplica avanzata con hard link o reflink per massimizzare l’efficienza dello storage.
Che tu debba pulire la cartella Download, organizzare un archivio fotografico, o ottimizzare lo spazio su un NAS, jdupes è lo strumento giusto per il lavoro.

