Siempre hago una copia de seguridad de los archivos de configuración o de cualquier archivo antiguo en algún lugar de mi disco duro antes de editarlos o modificarlos, para poder restaurarlos desde la copia de seguridad si accidentalmente hago algo mal. Pero el problema es que olvidé limpiar esos archivos y mi disco duro está lleno de muchos archivos duplicados después de un cierto período de tiempo. Me siento demasiado perezoso para limpiar los archivos antiguos o temo que pueda eliminar archivos importantes. Si eres como yo y eres abrumador, con múltiples copias de los mismos archivos en diferentes directorios de respaldo, puedes encontrar y eliminar archivos duplicados usando las herramientas que se detallan a continuación en los sistemas operativos tipo Unix.
Una precaución:
Ten cuidado al eliminar archivos duplicados. Si no tienes cuidado, te llevará a la pérdida accidental de datos. Te aconsejo que prestes atención adicional al usar estas herramientas.
Para el propósito de esta guía, voy a hablar acerca de tres utilidades a saber,
- Rdfind,
- Fdupes,
- FSlint.
Estas tres utilidades son gratuitas, de código abierto y funcionan en la mayoría de los sistemas operativos tipo Unix.
1. Rdfind
Rdfind, significa descubrimiento de datos redundantes, es una utilidad de código abierto y gratuito para encontrar archivos duplicados a través y/o dentro de directorios y subdirectorios. Compara los archivos en función de su contenido, no en sus nombres de archivo. Rdfind utiliza algoritmo de clasificación para clasificar archivos originales y duplicados. Si tienes dos o más archivos iguales, Rdfind es lo suficientemente inteligente como para encontrar cuál es el archivo original, y considera el resto de los archivos como duplicados. Una vez que encuentre los duplicados, se te informará. Puedes decidir eliminarlos o reemplazarlos con enlaces duros o enlaces simbólicos (suaves).
Instalando Rdfind
Rdfind está disponible en AUR. Por lo tanto, puedes instalarlo en sistemas basados en Arch usando cualquier programa auxiliar de AUR como Yay como se muestra a continuación.
$ yay -S rdfind
En Debian, Ubuntu, Linux Mint:
$ sudo apt-get install rdfind
En Fedora:
$ sudo dnf install rdfind
En RHEL, CentOS:
$ sudo yum install epel-release
$ sudo yum install rdfind
Uso
Una vez instalado, simplemente ejecuta el comando Rdfind junto con la ruta del directorio para buscar los archivos duplicados.
$ rdfind ~/Downloads
Como puedes ver en la captura de pantalla anterior, el comando Rdfind escaneará el directorio ~ /Downloads y guardará los resultados en un archivo llamado results.txt en el directorio de trabajo actual. Puedes ver el nombre de los posibles archivos duplicados en el archivo results.txt.
$ cat results.txt # Automatically generated # duptype id depth size device inode priority name DUPTYPE_FIRST_OCCURRENCE 1469 8 9 2050 15864884 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test5.regex DUPTYPE_WITHIN_SAME_TREE -1469 8 9 2050 15864886 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test6.regex [...] DUPTYPE_FIRST_OCCURRENCE 13 0 403635 2050 15740257 1 /home/sk/Downloads/Hyperledger(1).pdf DUPTYPE_WITHIN_SAME_TREE -13 0 403635 2050 15741071 1 /home/sk/Downloads/Hyperledger.pdf # end of file
Al revisar el archivo results.txt, puedes encontrar fácilmente los duplicados. Puedes eliminar los duplicados manualmente si lo deseas.
Además, puedes usar la opción -dryrun para encontrar todos los duplicados en un directorio determinado sin cambiar nada y la salida del resumen en tu Terminal:
$ rdfind -dryrun true ~/Downloads
Una vez que encuentre los duplicados, puedes reemplazarlos con enlaces duros o enlaces simbólicos.
Para reemplazar todos los duplicados con enlaces duros, ejecuta:
$ rdfind -makehardlinks true ~/Downloads
Para reemplazar todos los duplicados con enlaces simbólicos/enlaces suaves, ejecuta:
$ rdfind -makesymlinks true ~/Downloads
Puedes tener algunos archivos vacíos en un directorio y deseas ignorarlos. Si es así, usa la opción -ignoreempty como a continuación.
$ rdfind -ignoreempty true ~/Downloads
Si ya no deseas los archivos antiguos, simplemente elimina los archivos duplicados en lugar de reemplazarlos por enlaces duros o suaves.
Para eliminar todos los duplicados, simplemente ejecuta:
$ rdfind -deleteduplicates true ~/Downloads
Si no quieres ignorar los archivos vacíos y eliminarlos junto con todos los duplicados, ejecuta:
$ rdfind -deleteduplicates true -ignoreempty false ~/Downloads
Para más detalles, consulta la sección de ayuda:
$ rdfind --help
Y, las páginas del manual:
$ man rdfind
2. Fdupes
Fdupes es otra utilidad de línea de comandos para identificar y eliminar los archivos duplicados dentro de los directorios y subdirectorios especificados. Es una utilidad gratuita de código abierto escrita en lenguaje de programación C. Fdupes identifica los duplicados comparando tamaños de archivo, firmas MD5 parciales, firmas MD5 completas y finalmente realizando una comparación de byte a byte para la verificación.
Similar a la utilidad Rdfind, Fdupes viene con bastantes opciones para realizar operaciones, tales como:
-Buscar recursivamente archivos duplicados en directorios y subdirectorios
-Excluir archivos vacíos y archivos ocultos de consideración
-Mostrar el tamaño de los duplicados
-Eliminar duplicados de inmediato ya que se encontraron
-Excluir archivos con diferentes propietarios/grupos o bits de permisos como duplicados
-Y mucho más.
Instalación de Fdupes
Fdupes está disponible en los repositorios predeterminados de la mayoría de las distribuciones de Linux.
En Arch Linux y sus variantes como Antergos, Manjaro Linux, instálalo usando Pacman como se muestra a continuación.
$ sudo pacman -S fdupes
En Debian, Ubuntu, Linux Mint:
$ sudo apt-get install fdupes
En Fedora:
$ sudo dnf install fdupes
En RHEL, CentOS:
$ sudo yum install epel-release
$ sudo yum install fdupes
Uso
El uso de Fdupes es bastante simple. Simplemente ejecuta el siguiente comando para encontrar los archivos duplicados en un directorio, por ejemplo ~ /Downloads.
$ fdupes ~/Downloads
Muestra de salida de mi sistema:
/home/sk/Downloads/Hyperledger.pdf /home/sk/Downloads/Hyperledger(1).pdf
Como puedes ver, tengo un archivo duplicado en el directorio /home/sk/Downloads/. Muestra los duplicados del directorio principal solamente. ¿Cómo ver los duplicados de los subdirectorios? Simplemente usa la opción -r como a continuación.
$ fdupes -r ~/Downloads
Ahora verás los duplicados del directorio /home/sk/Downloads/ y sus subdirectorios también.
Fdupes también puede encontrar duplicados de múltiples directorios a la vez.
$ fdupes ~/Downloads ~/Documents/ostechnix
Incluso puede buscar en múltiples directorios, uno recursivamente como a continuación:
$ fdupes ~/Downloads -r ~/Documents/ostechnix
Los comandos anteriores buscan duplicados en el directorio “~ /Downloads” y en el directorio “~ /Documents/ejemplo” y sus subdirectorios.
A veces, es posible que desees saber el tamaño de los duplicados en un directorio. Si es así, usa la opción -S como a continuación.
$ fdupes -S ~/Downloads 403635 bytes each: /home/sk/Downloads/Hyperledger.pdf /home/sk/Downloads/Hyperledger(1).pdf
De forma similar, para ver el tamaño de los duplicados en directorios padre e hijo, usa la opción -Sr.
Podemos excluir archivos vacíos y ocultos de consideración usando -n y -A respectivamente.
$ fdupes -n ~/Downloads
$ fdupes -A ~/Downloads
El primer comando excluirá los archivos de longitud cero de la consideración y este último excluirá de la consideración los archivos ocultos mientras busca duplicados en el directorio especificado.
Para resumir información de archivos duplicados, usa la opción -m.
$ fdupes -m ~/Downloads 1 duplicate files (in 1 sets), occupying 403.6 kilobytes
Para eliminar todos los duplicados, usa la opción -d.
$ fdupes -d ~/Downloads
Salida de ejemplo:
[1] /home/sk/Downloads/Hyperledger Fabric Installation.pdf [2] /home/sk/Downloads/Hyperledger Fabric Installation(1).pdf Set 1 of 1, preserve files [1 - 2, all]:
Este comando te solicitará los archivos para preservar y eliminar todos los demás duplicados. Simplemente ingresa cualquier número para conservar el archivo correspondiente y eliminar los archivos restantes. Presta más atención al usar esta opción. Puedes eliminar archivos originales si no tienes cuidado.
Si deseas conservar el primer archivo en cada conjunto de duplicados y eliminar los demás sin preguntar cada vez, usa la opción -dN (no recomendado).
$ fdupes -dN ~/Downloads
Para eliminar duplicados a medida que se encuentran, usa -I.
$ fdupes -I ~/Downloads
Para obtener más detalles sobre Fdupes, consulta la sección de ayuda y las páginas man.
$ fdupes --help
$ man fdupes
3. FSlint
FSlint es otra utilidad de buscador de archivos duplicados que uso de vez en cuando para deshacerme de los archivos duplicados innecesarios y liberar espacio en el disco en mi sistema Linux. A diferencia de las otras dos utilidades, FSlint tiene ambos modos, GUI y CLI. Por lo tanto, es una herramienta más fácil de usar para los novatos. FSlint no solo encuentra los duplicados, sino también los enlaces simbólicos, nombres incorrectos, archivos temporales, IDS incorrectos, directorios vacíos y binarios no eliminados, etc.
Instalación de FSlint
FSlint está disponible en AUR, por lo que puedes instalarlo usando cualquier ayuda de AUR.
$ yay -S fslint
En Debian, Ubuntu, Linux Mint:
$ sudo apt-get install fslint
En Fedora:
$ sudo dnf install fslint
En RHEL, CentOS:
$ sudo yum install epel-release
$ sudo yum install fslint
Una vez que esté instalado, ejecútalo desde el menú o el iniciador de aplicaciones.
Así es como se ve la GUI FSlint.
Como puedes ver, la interfaz de FSlint es fácil de usar y se explica por sí misma. En la pestaña Ruta de búsqueda, agrega la ruta del directorio que deseas escanear y haz clic en el botón Buscar en la esquina inferior izquierda para buscar los duplicados. Verifica la opción recursiva para buscar recursivamente duplicados en directorios y subdirectorios. FSlint escaneará rápidamente el directorio dado y los enumerará.
De la lista, elige los duplicados que deseas limpiar y selecciona cualquiera de ellos con acciones como Guardar, Eliminar, Fusionar y Enlace simbólico.
En la pestaña Parámetros de búsqueda avanzada, puedes especificar las rutas para excluir mientras buscas duplicados.
Opciones de línea de comando de FSlint
FSlint proporciona una colección de las siguientes utilidades de la CLI para encontrar duplicados en su sistema de archivos:
findup – encuentra archivos DUPlicate
findnl – encuentra Name Lint (problemas con los nombres de archivo)
findu8 – encuentra nombres de archivo con codificación utf8 no válida
findbl – encuentra los enlaces malos (varios problemas con los enlaces simbólicos)
findsn – find Same Name (problemas con nombres conflictivos)
Finded – encuentra directorios vacíos
findid – encuentra archivos con ID de usuario muertos
findns – encuentra ejecutables no eliminados
findrs – encuentra espacios en blanco redundantes en archivos
findtf – encontrar archivos temporales
findul – encuentra bibliotecas posiblemente no utilizadas
zipdir – Recuperar el espacio perdido en las entradas del directorio ext2
Todas estas utilidades están disponibles en /usr/share/fslint/fslint/fslint location.
Por ejemplo, para encontrar duplicados en un directorio determinado, haz lo siguiente:
$ /usr/share/fslint/fslint/findup ~/Downloads/
Del mismo modo, para encontrar directorios vacíos, el comando sería:
$ /usr/share/fslint/fslint/finded ~/Downloads/
Para obtener más detalles sobre cada utilidad, por ejemplo findup, ejecuta:
$ /usr/share/fslint/fslint/findup --help
Para obtener más detalles sobre FSlint, consulta la sección de ayuda y las páginas man.
$ /usr/share/fslint/fslint/fslint --help
$ man fslint
Conclusión
Ahora conoces tres herramientas para buscar y eliminar archivos duplicados no deseados en Linux. Entre estas tres herramientas, a menudo uso Rdfind. No significa que las otras dos utilidades no sean eficientes, pero estoy contento con Rdfind hasta ahora.



