Ich versuche, ein Verzeichnis zu spiegeln, das sich mit der Zeit in ein anderes Verzeichnis ändert. Mein Problem ist, dass rsync keine Dateien auf dem Ziel löscht, wenn sie nicht mehr im Quellverzeichnis vorhanden sind. Hier ist ein Demo-Skript:
#!/bin/sh
set -x
DIR1=/tmp/1
DIR2=/tmp/2
rm -rf $DIR1
rm -rf $DIR2
mkdir $DIR1
mkdir $DIR2
echo "foo" > $DIR1/a
echo "bar" > $DIR1/b
rsync -a $DIR1/* $DIR2
rm -f $DIR1/a
rsync -a --delete $DIR1/* $DIR2
ls -1 $DIR2
Hier ist die Ausgabe:
+ DIR1=/tmp/1
+ DIR2=/tmp/2
+ rm -rf /tmp/1
+ rm -rf /tmp/2
+ mkdir /tmp/1
+ mkdir /tmp/2
+ echo foo
+ echo bar
+ rsync -a /tmp/1/a /tmp/1/b /tmp/2
+ rm -f /tmp/1/a
+ rsync -a --delete /tmp/1/b /tmp/2
+ ls -1 /tmp/2
a
b
Wie Sie sehen können, ist die Datei "a" nach der zweiten Ausführung von rsync immer noch im Zielverzeichnis vorhanden, was ich nicht benötige. Missbrauche ich die Option "--delete"?