Wie lassen sich zwei Verzeichnisstrukturen am besten vergleichen und nicht benötigte Dateien und Verzeichnisse am Zielspeicherort löschen?
Ich habe eine kleine Web-Fotogalerie-App, die ich entwickle. Benutzer können Bilder über FTP hinzufügen und entfernen. Die von mir geschriebene Webgalerie-Software erstellt neue Miniaturansichten im Handumdrehen, behandelt jedoch keine Löschvorgänge. Was ich tun möchte, ist ein Befehl / Bash-Skript zu planen, um dies in vordefinierten Intervallen zu erledigen.
Originalbilder werden /home/gallery/images/
in Alben gespeichert und in Unterverzeichnissen organisiert. Die Miniaturansichten werden /home/gallery/thumbs/
mit derselben Verzeichnisstruktur und denselben Dateinamen wie das Bilderverzeichnis zwischengespeichert.
Ich habe Folgendes versucht, um dies zu erreichen:
rsync -r --delete --ignore-existing /home/gallery/images /home/gallery/thumbs
Das würde gut funktionieren, wenn alle Thumbnails bereits zwischengespeichert worden wären. Es gibt jedoch keine Garantie dafür, dass dies der Fall wäre. In diesem Fall werden im Thumb-Verzeichnis Originalbilder in voller Größe kopiert.
Wie kann ich am besten erreichen, was ich versuche zu tun?
rmdir
?find
und im[
Test ändern]
. Seien Sie natürlich sowohl mit dem Befehl, den ich Ihnen gegeben habe, als auch mit Änderungen sehr vorsichtig und testen Sie gründlich mitecho
!Du brauchst
--existing
auch:Aus der Manpage:
quelle
--ignore-errors
Argument hinzufügen . Das ist das einzige, was bei mir funktioniert hat. Danke für--existing
und--ignore-existing
! Ich habe Ihre Antwort als Grundlage für meine Antwort hier verwendet .rm
,cp
odermv
wird wie das ist , arbeiten , was Fehler sind: Sie sind Probleme , die betrachtet werden sollten und die verhindern , dass Operationen von dem Abschließen erfolgreich. Sie können die meisten Tools anweisen, Fehler zu ignorieren (z. B.-f
fürrm
), aber ich sehe keine Relevanz für die Frage oder diese Antwort.