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 Esta mañana ha ocurrido algo inexplicable, por lo menos, como suele pasar en este dominio, hasta que hemos dado con la solución; luego parecía obvio. Nos avisan que una de las máquinas de nuestra red negaba el acceso por SSH provocando el siguiente error:
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…
¿No hay en todos nosotros un narrador interno que nos cuenta cómo es nuestra vida, dotándola de sentido? Un tipo que nunca se calla y que se empeña en asignarnos un rol que interpretamos a pie juntillas. Pero, ¿es de fiar? Sartre y otros estudiosos de la psique humana nos advierten sobre el poder de…
Escenario No conseguimos conectarnos al servidor de mysql desde la propia máquina, pero sí remotamente. Cuando el cliente de MySQL se conecta a localhost, lo intenta usando un fichero socket en vez de el protocolo TCP/IP. Una manera pues de solucionar el problema es especificando la IP del host:
mysql-uroot-p-h127.0.0.1 Para solucionarlo de manera permanente,…
Escenario (A modo de recordatorio). Cambié de disco duro hace unos meses y hoy me ha dado por acceder de manera remota a una instancia de transmission instalada en un servidor NAS. Del disco viejo recuperé los ejecutable de transqui. Problema No recuerdo qué contraseña establecí en su día y, ahora, la conexión falla con…
Escenario Todo empezó con el aviso de un proveedor. Un plugin de WordPress fallaba con el siguiente error: cURL error 60: SSL certificate problem: unable to get local issuer certificate Problema Una búsqueda rápida con Google me lleva a la conclusión de que hay que editar el fichero de configuración
php.ini. A fin de averiguar…