Quelle est la meilleure façon de comparer deux structures de répertoires et de supprimer les fichiers et répertoires superflus à l'emplacement cible?
J'ai une petite application de galerie de photos Web que je développe. Les utilisateurs ajoutent et suppriment des images via FTP. Le logiciel de galerie Web que j'ai écrit crée de nouvelles vignettes à la volée, mais il ne traite pas des suppressions. Ce que je voudrais faire, c'est planifier un script de commande / bash pour s'en occuper à des intervalles prédéfinis.
Les images originales sont stockées /home/gallery/images/
et organisées en albums, à l'aide de sous-répertoires. Les miniatures sont mises en cache /home/gallery/thumbs/
, en utilisant la même structure de répertoires et les mêmes noms de fichiers que le répertoire images.
J'ai essayé d'utiliser les éléments suivants pour y parvenir:
rsync -r --delete --ignore-existing /home/gallery/images /home/gallery/thumbs
ce qui fonctionnerait bien si toutes les vignettes ont déjà été mises en cache, mais il n'y a aucune garantie que ce serait le cas, lorsque cela se produit, le répertoire du pouce contient des images originales en taille réelle.
Comment puis-je réaliser au mieux ce que j'essaie de faire?
rmdir
?find
et dans le[
test]
. Bien sûr, soyez très prudent avec la commande que je vous ai donnée et toutes les modifications, et testez soigneusement avececho
!Vous avez
--existing
aussi besoin de :Depuis la page de manuel:
la source
--ignore-errors
argument également. C'est la seule chose qui a fonctionné pour moi. Merci pour--existing
et--ignore-existing
! J'ai utilisé votre réponse comme base de ma réponse ici .rm
,cp
oumv
fonctionnera comme c'est le cas: ce sont des problèmes qui doivent être examinés et qui empêchent la réussite des opérations. Vous pouvez demander à la plupart des outils d'ignorer les erreurs (par exemple-f
pourrm
), mais je ne vois pas en quoi cela est pertinent pour la question ou cette réponse.