¿Cuál es la mejor manera de comparar dos estructuras de directorios y eliminar archivos y directorios extraños en la ubicación de destino?
Tengo una pequeña aplicación web de galería de fotos que estoy desarrollando. Los usuarios agregan y eliminan imágenes usando FTP. El software de la galería web que he escrito crea nuevas miniaturas sobre la marcha, pero no se ocupa de las eliminaciones. Lo que me gustaría hacer es programar una secuencia de comandos / bash para que se encargue de esto a intervalos predefinidos.
Las imágenes originales se almacenan /home/gallery/images/
y se organizan en álbumes, utilizando subdirectorios. Las miniaturas se almacenan en caché /home/gallery/thumbs/
, utilizando la misma estructura de directorio y nombres de archivo que el directorio de imágenes.
He intentado usar lo siguiente para lograr esto:
rsync -r --delete --ignore-existing /home/gallery/images /home/gallery/thumbs
lo que funcionaría bien si todas las miniaturas ya se han almacenado en caché, pero no hay garantía de que este sea el caso, cuando esto suceda, el directorio del pulgar tiene imágenes originales de tamaño completo copiadas.
¿Cómo puedo lograr lo que intento hacer?
rmdir
?find
y en la[
prueba]
. Por supuesto, tenga mucho cuidado tanto con el comando que le he dado como con cualquier modificación, y pruebe a fondo conecho
!Tú
--existing
también necesitas :Desde la página del manual:
fuente
--ignore-errors
argumento también. Eso es lo único que funcionó para mí. Gracias por--existing
y--ignore-existing
! Usé tu respuesta como la base de mi respuesta aquí .rm
,cp
omv
funcionará como eso es lo que los errores son: Son problemas que deben mirarse y que impiden las operaciones de completar con éxito. Puede indicar a la mayoría de las herramientas que ignoren los errores (por ejemplo,-f
pararm
), pero no veo cómo eso es relevante para la pregunta o esta respuesta.