Este artículo explica cómo instalar y utilizar la herramienta fdupes en Debian y derivados para detectar el espacio en disco utilizado por archivos duplicados y obtener un listado de todos ellos.

La herramienta fdupes busca archivos duplicados en las rutas pasadas como parámetro haciendo una comparación por tamaño de archivo y hash MD5, seguido de una comparación byte por byte.

Para instalar fdupes en Debian y derivados, simplemente instalar el paquete homónimo:

root@vaio:~# apt-get install fdupes

En otras distribuciones como CentOS (yum install fdupes) e incluso sistemas *BSD (pkg install fdupes) está disponible con el mismo nombre de paquete.

Calcular el espacio total ocupado por archivos duplicados

Para calcular cuánto espacio de disco se pierde a causa de archivos duplicados, se debe utilizar la opción -m:

root@vaio:~# fdupes -r -m /home/emi/ /vault/BACKUP_HOME/
139076 duplicate files (in 60802 sets), occupying 3067.7 megabytes

La opción -r se agrega para que la búsqueda se haga de manera recursiva en cada ruta pasada como parámetro. Es posible pasar varios directorios como parámetro o uno sólo. Si se deseara buscar archivos duplicados en el sistema de archivos completo, pasar como parámetro /.

Obtener el listado de todos los archivos duplicados

Para obtener un listado de archivos duplicados, omitir el uso de la opción -m. En este caso (especialmente si existen muchos archivos duplicados) es conveniente redirigir la salida a un archivo para analizar luego y no saturar el buffer de caracteres de la consola:

root@vaio:~# fdupes -r /home/emi/ /vault/BACKUP_HOME/ > /tmp/duplicados

La salida de fdupes es bastante intuitiva y agrupa los archivos duplicados en líneas consecutivas, dejando una línea en blanco entre grupos de duplicados. Por ejemplo:

/vault/BACKUP_HOME/.opera/application_cache/cache_groups.xml
/home/emi/.opera/application_cache/cache_groups.xml

/vault/BACKUP_HOME/.gimp-2.8/unitrc
/vault/BACKUP_HOME/.gimp-2.8/unitrc-bak
/home/emi/.gimp-2.8/unitrc

/vault/BACKUP_HOME/.gimp-2.8/parasiterc
/home/emi/.gimp-2.8/parasiterc

/vault/BACKUP_HOME/.gimp-2.8/toolrc
/home/emi/.gimp-2.8/toolrc

/vault/BACKUP_HOME/.gimp-2.8/templaterc
/home/emi/.gimp-2.8/templaterc

/vault/BACKUP_HOME/.gimp-2.8/dockrc
/home/emi/.gimp-2.8/dockrc

¿Borrar los archivos duplicados?

La opción -d permite borrar interactivamente los archivos duplicados. Aunque si son demasiados, puede ser algo tedioso. Esta opción no la he utilizado pero básicamente mantiene el primer archivo de cada grupo, borrando al resto.

Una opción aún más riesgosa que se me ocurre es agregar la opción -f, la cual omite el primer archivo del listado de cada grupo (mostrando sólo los que lo duplican), para luego pasar el listado resultante a rm. Esto puede ser bastante peligroso y no lo recomiendo, especialmente si se siguen enlaces simbólicos (opción -s).

root@vaio:~# fdupes -r -f DIR1 DIR2 DIR3 > /tmp/duplicados
root@vaio:~# xargs rm < /tmp/duplicados ### ESTO ES BASTANTE KAMIKAZE

Por otro lado, muchos archivos duplicados probablemente tengan su razón de ser, con lo cual no es conveniente ni se debe eliminarlos. Lo mejor es obtener la salida (tal como el ejemplo anterior) y luego analizar qué conviene hacer.


Tal vez pueda interesarte


Compartí este artículo