GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo encontrar y eliminar archivos duplicados en Linux

Siempre hago una copia de seguridad de los archivos de configuración o 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 hice algo mal. Pero el problema es que olvidé limpiar esos archivos y mi disco duro se llena con 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 es como yo y está abrumado con múltiples copias de los mismos archivos en diferentes directorios de respaldo, puede encontrar y eliminar archivos duplicados utilizando las herramientas que se proporcionan a continuación en sistemas operativos similares a Unix.

Una advertencia:

Tenga cuidado al eliminar archivos duplicados. Si no tiene cuidado, lo llevará a pérdida accidental de datos . Le aconsejo que preste especial atención al usar estas herramientas.

Encuentre y elimine archivos duplicados en Linux

A los efectos de esta guía, voy a hablar sobre tres utilidades, a saber,

  1. Rdencontrar,
  2. Fengaños,
  3. FSlint.

Estas tres utilidades son gratuitas, de código abierto y funcionan en la mayoría de los sistemas operativos similares a Unix.

1. Rdencontrar

Rdencontrar , significa r edundante d ata buscar , es una utilidad gratuita y de código abierto para encontrar archivos duplicados en y/o dentro de directorios y subdirectorios. Compara archivos en función de su contenido, no de sus nombres de archivo. Rdfind usa clasificación algoritmo para clasificar archivos originales y duplicados. Si tiene dos o más archivos iguales, Rdfind es lo suficientemente inteligente como para encontrar cuál es el archivo original y considerar el resto de los archivos como duplicados. Una vez que haya encontrado los duplicados, se los informará. Puede decidir eliminarlos o reemplazarlos con enlaces físicos. o enlaces simbólicos (suaves) .

Instalando Rdfind

Rdfind está disponible en AUR . Por lo tanto, puede 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 ejecute el comando Rdfind junto con la ruta del directorio para buscar los archivos duplicados.

$ rdfind ~/Downloads

Escanear un directorio con Rdfind

Como puede 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. Puede 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, puede encontrar fácilmente los duplicados. Puede eliminar los duplicados manualmente si lo desea.

Además, puedes -dryrun opción para encontrar todos los duplicados en un directorio determinado sin cambiar nada y mostrar el resumen en su Terminal:

$ rdfind -dryrun true ~/Downloads

Una vez que haya encontrado los duplicados, puede reemplazarlos con enlaces físicos o simbólicos.

Para reemplazar todos los duplicados con enlaces duros, ejecute:

$ rdfind -makehardlinks true ~/Downloads

Para reemplazar todos los duplicados con enlaces simbólicos/soft links, ejecute:

$ rdfind -makesymlinks true ~/Downloads

Es posible que tenga algunos archivos vacíos en un directorio y quiera ignorarlos. Si es así, utilice -ignoreempty opción como la siguiente.

$ rdfind -ignoreempty true ~/Downloads

Si ya no desea los archivos antiguos, simplemente elimine los archivos duplicados en lugar de reemplazarlos con enlaces fijos o blandos.

Para eliminar todos los duplicados, simplemente ejecute:

$ rdfind -deleteduplicates true ~/Downloads

Si no desea ignorar los archivos vacíos y eliminarlos junto con todos los duplicados, ejecute:

$ rdfind -deleteduplicates true -ignoreempty false ~/Downloads

Para obtener más detalles, consulte la sección de ayuda:

$ rdfind --help

Y, las páginas del manual:

$ man rdfind

Lectura sugerida:

  • Elimine archivos duplicados de su Android con el Reparador de archivos duplicados

2. Duplicados

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 C lenguaje de programación. Fdupes identifica los duplicados comparando tamaños de archivo, firmas MD5 parciales, firmas MD5 completas y, finalmente, realizando una comparación byte por byte para su verificación.

Similar a la utilidad Rdfind, Fdupes viene con bastantes opciones para realizar operaciones, tales como:

  • Busca de forma recursiva archivos duplicados en directorios y subdirectorios
  • Excluir archivos vacíos y archivos ocultos de la consideración
  • Mostrar el tamaño de los duplicados
  • Elimine los duplicados inmediatamente después de encontrarlos
  • Excluir archivos con diferente propietario/grupo o bits de permiso 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álelo 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 ejecute el siguiente comando para encontrar los archivos duplicados en un directorio, por ejemplo ~/Downloads .

$ fdupes ~/Downloads

Salida de muestra de mi sistema:

/home/sk/Downloads/Hyperledger.pdf
/home/sk/Downloads/Hyperledger(1).pdf

Como puede ver, tengo un archivo duplicado en /home/sk/Downloads/ directorio. Muestra los duplicados del directorio principal solamente. ¿Cómo ver los duplicados de los subdirectorios? Solo usa -r opción como la siguiente.

$ fdupes -r ~/Downloads

Ahora verá los duplicados de /home/sk/Downloads/ directorio y sus subdirectorios también.

Fdupes también puede encontrar duplicados de varios directorios a la vez.

$ fdupes ~/Downloads ~/Documents/ostechnix

Incluso puede buscar en varios directorios, uno recursivamente como se muestra a continuación:

$ fdupes ~/Downloads -r ~/Documents/ostechnix

Los comandos anteriores buscan duplicados en el directorio "~/Descargas" y en el directorio "~/Documentos/ostechnix" y sus subdirectorios.

A veces, es posible que desee saber el tamaño de los duplicados en un directorio. Si es así, utilice -S opción como la siguiente.

$ fdupes -S ~/Downloads
403635 bytes each: 
/home/sk/Downloads/Hyperledger.pdf
/home/sk/Downloads/Hyperledger(1).pdf

Del mismo modo, para ver el tamaño de los duplicados en los directorios principales y secundarios, use -Sr opción.

Podemos excluir archivos vacíos y ocultos de la consideración usando -n y -A respectivamente.

$ fdupes -n ~/Downloads
$ fdupes -A ~/Downloads

El primer comando excluirá los archivos de longitud cero y el segundo excluirá los archivos ocultos mientras busca duplicados en el directorio especificado.

Para resumir la información de los archivos duplicados, use -m opción.

$ fdupes -m ~/Downloads
1 duplicate files (in 1 sets), occupying 403.6 kilobytes

Para eliminar todos los duplicados, use -d opción.

$ fdupes -d ~/Downloads

Salida de muestra:

[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 le pedirá que conserve los archivos y elimine todos los demás duplicados. Simplemente ingrese cualquier número para conservar el archivo correspondiente y eliminar los archivos restantes. Preste más atención al usar esta opción. Puede eliminar los archivos originales si no tiene cuidado.

Si desea conservar el primer archivo de cada conjunto de duplicados y eliminar los demás sin preguntar cada vez, use -dN opción (no recomendada).

$ fdupes -dN ~/Downloads

Para eliminar duplicados a medida que se encuentran, use -I bandera.

$ fdupes -I ~/Downloads

Para obtener más detalles sobre Fdupes, consulte la sección de ayuda y las páginas del manual.

$ fdupes --help
$ man fdupes

Lea también:

  • Reparador de fotos duplicadas:organice bien su biblioteca de fotos

3. FSlint

FSlint es otra utilidad de búsqueda 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 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 incorrectos, los nombres incorrectos, los archivos temporales, los IDS incorrectos, los directorios vacíos y los archivos binarios no eliminados, etc.

Instalación de FSlint

FSlint está disponible en AUR , para que pueda instalarlo usando cualquier asistente 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útelo desde el menú o el iniciador de aplicaciones.

Así es como se ve la GUI de FSlint.

Interfaz FSlint

Como puede ver, la interfaz de FSlint es fácil de usar y se explica por sí misma. En la ruta de búsqueda pestaña, agregue la ruta del directorio que desea escanear y haga clic en Buscar botón en la esquina inferior izquierda para encontrar los duplicados. Marque la opción recursiva para buscar recursivamente duplicados en directorios y subdirectorios. El FSlint escaneará rápidamente el directorio dado y los listará.

GUI de fslint

De la lista, elija los duplicados que desea limpiar y seleccione cualquiera de ellos con acciones como Guardar, Eliminar, Fusionar y Enlace simbólico.

En los parámetros de búsqueda avanzada pestaña, puede especificar las rutas para excluir mientras busca duplicados.

fslint búsqueda avanzada

Opciones de línea de comandos de FSlint

FSlint proporciona una colección de las siguientes utilidades CLI para encontrar duplicados en su sistema de archivos:

  • buscar -- encontrar archivos DUPLICADOS
  • buscar -- encuentra Name Lint (problemas con los nombres de archivo)
  • findu8 -- encontrar nombres de archivo con codificación utf8 no válida
  • buscarbl -- encontrar enlaces malos (varios problemas con enlaces simbólicos)
  • busca -- encontrar el mismo nombre (problemas con nombres que chocan)
  • encontrado -- encontrar directorios vacíos
  • encontrar -- encontrar archivos con ID de usuario muertos
  • busca -- encontrar ejecutables no eliminados
  • busca -- encontrar espacios en blanco redundantes en archivos
  • buscartf -- buscar archivos temporales
  • findul -- encontrar bibliotecas posiblemente no utilizadas
  • zipdir -- Recuperar el espacio desperdiciado en las entradas del directorio ext2

Todas estas utilidades están disponibles en /usr/share/fslint/fslint/fslint ubicación.

Por ejemplo, para encontrar duplicados en un directorio determinado, haz lo siguiente:

$ /usr/share/fslint/fslint/findup ~/Downloads/

De manera similar, 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, consulte la sección de ayuda y las páginas man.

$ /usr/share/fslint/fslint/fslint --help
$ man fslint

Conclusión

Ahora conoce tres herramientas para encontrar 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 hasta ahora estoy contento con Rdfind. Bueno, es tu turno. ¿Cuál es tu herramienta favorita y por qué? Háganos saber en la sección de comentarios a continuación.


Linux
  1. Cómo encontrar archivos con permisos SUID y SGID en Linux

  2. Cómo encontrar y eliminar fotos duplicadas en Linux

  3. Cómo encontrar archivos duplicados en Linux

  4. Cómo encontrar y eliminar directorios y archivos vacíos en Unix

  5. ¿Cómo puedo eliminar recursivamente todos los archivos y directorios vacíos en Linux?

Cómo encontrar y eliminar enlaces simbólicos rotos en Linux

Las 3 mejores herramientas para buscar y eliminar archivos duplicados en Linux

Cómo encontrar y eliminar archivos duplicados en Ubuntu usando Fdupes

Cómo encontrar y eliminar directorios vacíos en Linux

Cómo encontrar archivos duplicados en Linux y eliminarlos

Cómo eliminar archivos y directorios usando la línea de comandos de Linux