Nos encontramos ante una biblioteca de decenas de miles de archivos fotográficos, de los cuales un porcentaje considerable está corrupto.
Objetivo
Depurar las imágenes corruptas a fin de organizar como es debido nuestra biblioteca.
Solución
Nota: sólo aplicable a sistemas linux
Vamos a necesitar la aplicación ImageMagick:
$sudo apt-get install imagemagick
y rsync, que debería venir instalado por defecto en tu distribución linux.
Primer paso:
Identificamos los archivos corruptos y los volcamos a un fichero.
IFS=$'\n';forfin$(find/directorio/con/fotos-name'*.jpg'-or-name'*.JPG');doidentify$f>/dev/null||echo$f>>/tmp/fail;done;cat/tmp/fotos_corruptas
Este comando recorre de manera recursiva todos los ficheros con extensión .jpg y, en caso encontrar uno corrupto, inserta una nueva línea en el fichero fotos_corruptas con la ruta del fichero corrupto. Por último, muestra por pantalla el contenido de dicho fichero.
Este paso nos sirve para comprobar que, efectivamente, estamos detectando ficheros inválidos.
Segundo paso:
Movemos todos los ficheros corruptos a un directorio para su posterior borrado:
IFS=$'\n';forfin$(find/home/yolanda/Imágenes-name'*.jpg'-or-name'*.JPG');doidentify$f>/dev/null||rsync-avR$f/tmp/imagenes_corruptos;done;ls/tmp/imagenes_corruptas
De esta manera moveríamos todos los ficheros corruptos a la carpeta ficheros_corruptos. El inconveniente de esta comando es que, en caso de que dos ficheros tuvieran el mismo nombre, se sobrescribirían. De ahí que sea más pertinente usar rsync.
Versión definitiva::
IFS=$'\n';forfin$(find/home/yolanda/Imágenes-name'*.jpg'-or-name'*.JPG');doidentify$f>/dev/null||rsync-avR$f/tmp/imagenes_corruptas;done;ls/tmp/imagenes_corruptas
Este comando mueve todos los ficheros corruptos a /tmp/imagenes_corruptas, respetando el árbol de ficheros.
Escenario Después de necesitar restaurar tres veces el servidor de MySql por culpa de varios crashs provocados por un fallo en el disco duro, encuentro en los logs entradas de este tipo:
2020-09-12T18:46:22.347957Z5[Warning]InnoDB:Cannot open table mysql/help_relation from the internal data2020-09-12T18:46:22.348985Z5[Warning]InnoDB:Cannot open table mysql/innodb_index_stats from the internal data dictionary of InnoDBdictionary Problema En varios foros leo que la solución pasa por hacer un:
Shell
1
$sudo mysql_upgrade-root-p
La cuestión es que, cuando lo intento, me encuentro…
Escenario Tengo un disco de 4TB que usa una tabla de particiones MBR. Hay una partición de 2TB ya creada y necesito crear otra en el espacio disponible. Problema Según parted para crear la nueva partición por el siguiente problema: Error: starting sector number, 4294967296 exceeds the msdos-partition-table-imposed maximum of 4294967295 [plain]marcos@technoage:~$ sudo parted /dev/sdb…
Escenario Un buen día nuestra instalación de GitLab dejó de funcionar por culpa de escasez de espacio en disco duro. Problema Alguien tuvo la brillante idea de crear un enlace simbólico a un disco de red y, después de copiar con un sudo todos los archivos a una carpeta del susodicho disco, borró la carpeta…
Escenario Tengo una aplicación desarrollada con la plataforma Spring Boot que usa para producir las páginas HTML el motor de plantillas Thymeleaf. Problema Un bloque de JavaScript incrustado en una de las páginas genera un error porque una de sus variables no es reconocida por el intérprete. Por lo que veo, la biblioteca de programación…
Escenario Desde hace más de diez años uso un servidor para almacenar mi música, copias de seguridad, películas, fotos y vídeos. Tiene instalado Nas4free, un software para gestionar los recursos de la NAS que corre sobre el sistema operativo FreeBSD. Desde el 2018 el software empezó a publicarse bajo el nombre XigmaNas. Esto último me…