Cómo buscar y eliminar archivos duplicados en Linux
Hola a todos, hoy vamos a aprender cómo encontrar y eliminar archivos duplicados en su PC o servidor Linux. Entonces, aquí hay herramientas que puede usar cualquiera de ellas de acuerdo con sus necesidades y comodidad.
Ya sea que esté usando Linux en su escritorio o en un servidor, existen buenas herramientas que escanearán su sistema en busca de archivos duplicados y lo ayudarán a eliminarlos para liberar espacio. Se encuentran disponibles interfaces gráficas sólidas y de línea de comandos. Los archivos duplicados son una pérdida innecesaria de espacio en disco. Después de todo, si realmente necesita el mismo archivo en dos ubicaciones diferentes, siempre puede configurar un enlace simbólico o un enlace físico, almacenando los datos en una sola ubicación en el disco.
1) FSlint
FSlint está disponible en varios repositorios binarios de distribuciones de Linux, incluidos Ubuntu, Debian, Fedora y Red Hat. Simplemente inicie su administrador de paquetes e instale el paquete «fslint». Esta utilidad proporciona una interfaz gráfica conveniente de forma predeterminada y también incluye versiones de línea de comandos de sus diversas funciones.
Sin embargo, no dejes que eso te asuste y no uses la conveniente interfaz gráfica de FSlint. De forma predeterminada, se abre con el panel Duplicados seleccionado y su directorio de inicio como la ruta de búsqueda predeterminada.
Instalación
Para instalar fslint, ya que estoy ejecutando ubuntu, aquí está el comando predeterminado:
# apt-get install fslint
Pero aquí están los comandos de instalación para otras distribuciones de Linux:
Debian:
# svn checkout http://fslint.googlecode.com/svn/trunk/ fslint-2.45 # cd fslint-2.45 # dpkg-buildpackage -I.svn -rfakeroot -tc # dpkg -i ../fslint_2.45-1_all.deb
Fedora:
# yum install fslint
Para OpenSuse:
# [ -f /etc/mandrake-release ] && pkg=rpm # [ -f /etc/SuSE-release ] && pkg=packages # wget http://www.pixelbeat.org/fslint/fslint-2.42.tar.gz # rpmbuild -ta fslint-2.42.tar.gz # rpm -Uvh /usr/src/$pkg/RPMS/noarch/fslint-2.42-1.*.noarch.rpm
Para otra distribución:
# wget http://www.pixelbeat.org/fslint/fslint-2.44.tar.gz # tar -xzf fslint-2.44.tar.gz # cd fslint-2.44 # (cd po && make) # ./fslint-gui
Ejecute fslint
Para ejecutar fslint en la versión GUI, ejecute fslint-gui en Ubuntu, ejecute el comando (Alt + F2) o la terminal:
$ fslint-gui
De forma predeterminada, se abre con el panel Duplicados seleccionado y su directorio de inicio como la ruta de búsqueda predeterminada. Todo lo que tiene que hacer es hacer clic en el botón Buscar y FSlint encontrará una lista de archivos duplicados en directorios debajo de su carpeta de inicio.
Utilice los botones para eliminar los archivos que desee eliminar y haga doble clic en ellos para obtener una vista previa.
Finalmente, ha terminado. Hurra, hemos eliminado con éxito los archivos duplicados de su sistema.
Nota que las utilidades de la línea de comandos no están en su camino de forma predeterminada, por lo que no puede ejecutarlas como los comandos típicos. En Ubuntu, los encontrará en / usr / share / fslint / fslint. Entonces, si quisiera ejecutar todo el escaneo fslint en un solo directorio, aquí están los comandos que ejecutaría en Ubuntu:
cd / usr / share / fslint / fslint
./fslint / ruta / al / directorio
Este comando en realidad no eliminará nada. Simplemente imprimirá una lista de archivos duplicados; el resto estará solo.
$ /usr/share/fslint/fslint/findup --help find dUPlicate files. Usage: findup [[[-t [-m|-d]] | [--summary]] [-r] [-f] paths(s) ...] If no path(s) specified then the current directory is assumed. When -m is specified any found duplicates will be merged (using hardlinks). When -d is specified any found duplicates will be deleted (leaving just 1). When -t is specified, only report what -m or -d would do. When --summary is specified change output format to include file sizes. You can also pipe this summary format to /usr/share/fslint/fslint/fstool/dupwaste to get a total of the wastage due to duplicates.
2) Fdupes
FDUPES es un programa para identificar o eliminar archivos duplicados que residen en directorios específicos escritos por Adrian Lopez. Puedes mirar el Proyecto GitHub.
Instalar fdupes
Para instalar fdupes, haga lo siguiente:
En Centos 7:
# yum install fdupes Loaded plugins: fastestmirror base | 3.6 kB 00:00:00 epel/x86_64/metalink | 12 kB 00:00:00 epel | 4.3 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/2): epel/x86_64/updateinfo | 817 kB 00:00:00 (2/2): epel/x86_64/primary_db | 4.8 MB 00:00:00 Loading mirror speeds from cached hostfile * base: mirrors.linode.com * epel: fedora-epel.mirrors.tds.net * extras: mirrors.linode.com * updates: mirrors.linode.com Resolving Dependencies --> Running transaction check ---> Package fdupes.x86_64 1:1.6.1-1.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Installing: fdupes x86_64 1:1.6.1-1.el7 epel 28 k
En Ubuntu 16.04:
# apt install fdupes Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: libdvdnav4 libdvdread4 libenca0 libguess1 librubberband2v5 libsdl2-2.0-0 libsndio6.1 libva-wayland1 libva-x11-1 mpv rtmpdump Use 'sudo apt autoremove' to remove them.
Buscar archivos duplicados
El comando fdupes busca duplicados en una carpeta indicada. La sintaxis es la siguiente
fdupes [ options ] DIRECTORY
Creemos algunos archivos duplicados. Crearemos una carpeta y 10 archivos con el mismo contenido
# mkdir labor && for i in {1..10}; do echo "Hello, let us try fdupes command" > labor/drago${i} ; done
# mkdir labor/package && for i in {1..10}; do echo "Hello, let us try fdupes recursively" > labor/package/pack${i} ; done
Comprobemos el resultado
# ls -lR labor/ labor/: total 44 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago10 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago1 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago2 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago3 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago4 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago5 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago6 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago7 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago8 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago9 drwxr-xr-x 2 root root 4096 Sep 9 23:51 package labor/package: total 40 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack10 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack1 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack2 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack3 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack4 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack5 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack6 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack7 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack8 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack9
Vemos que todo nuestro archivo existe. Ahora podemos buscar archivos duplicados como se muestra a continuación
# fdupes labor/ labor/drago8 labor/drago2 labor/drago7 labor/drago5 labor/drago1 labor/drago3 labor/drago4 labor/drago10 labor/drago6 labor/drago9
Puede ver que tenemos los 10 archivos duplicados enumerados anteriormente.
Busque archivos duplicados de forma recursiva y muestre el tamaño
Ha visto que el resultado anterior no muestra los archivos duplicados creados anteriormente en mano de obra / paquete directorio. Para buscar archivos duplicados en un directorio y sus subdirectorios, usamos la opción -r
y puede ver el tamaño de cada archivo duplicado con -S
parámetro de la siguiente manera
# fdupes -rS labor 33 bytes each: labor/drago8 labor/drago2 labor/drago7 labor/drago5 labor/drago1 labor/drago3 labor/drago4 labor/drago10 labor/drago6 labor/drago9 37 bytes each: labor/package/pack10 labor/package/pack6 labor/package/pack4 labor/package/pack7 labor/package/pack1 labor/package/pack3 labor/package/pack5 labor/package/pack2 labor/package/pack8 labor/package/pack9
Con el resultado, puede comprender que los archivos duplicados tienen el mismo tamaño, por lo que el mismo contenido.
Es posible omitir el primer archivo al buscar archivos duplicados
Eliminar los archivos duplicados
Para eliminar archivos duplicados, usamos el -d
parámetro. fdupes preguntará qué archivos conservar
# fdupes -rd labor/ [1] labor/drago8 [2] labor/drago2 [3] labor/drago7 [4] labor/drago5 [5] labor/drago1 [6] labor/drago3 [7] labor/drago4 [8] labor/drago10 [9] labor/drago6 [10] labor/drago9 Set 1 of 2, preserve files [1 - 10, all]: 1 [+] labor/drago8 [-] labor/drago2 [-] labor/drago7 [-] labor/drago5 [-] labor/drago1 [-] labor/drago3 [-] labor/drago4 [-] labor/drago10 [-] labor/drago6 [-] labor/drago9 [1] labor/package/pack10 [2] labor/package/pack6 [3] labor/package/pack4 [4] labor/package/pack7 [5] labor/package/pack1 [6] labor/package/pack3 [7] labor/package/pack5 [8] labor/package/pack2 [9] labor/package/pack8 [10] labor/package/pack9 Set 2 of 2, preserve files [1 - 10, all]: 8 [-] labor/package/pack10 [-] labor/package/pack6 [-] labor/package/pack4 [-] labor/package/pack7 [-] labor/package/pack1 [-] labor/package/pack3 [-] labor/package/pack5 [+] labor/package/pack2 [-] labor/package/pack8 [-] labor/package/pack9
Podemos comprobar el resultado de la siguiente manera.
# ls -lR labor/ labor/: total 8 -rw-r--r-- 1 root root 33 Sep 9 23:51 drago8 drwxr-xr-x 2 root root 4096 Sep 10 00:07 package labor/package: total 4 -rw-r--r-- 1 root root 37 Sep 9 23:51 pack2
Puedes ver que hemos conservado drago8 y paquete2 archivos
Conclusión
Hemos visto cómo eliminar archivos duplicados en Linux tanto gráficamente como en la línea de comandos. Puede utilizar una de las herramientas según sus necesidades. Es importante verificar el archivo duplicado para ahorrar espacio en su servidor.