rsync funktioniert nicht wie erwartet

rsync funktioniert nicht wie erwartet

Ich habe ein Skript, das einen Ordner eines Remote-Servers herunterlädt und komprimiert (Beispiel: /home).

Ich versuche, das „Wiederherstellen“-Skript zu erstellen, aber es tritt ein seltsames Verhalten auf.

wiederherstellen.sh:

($1 ist die IP-Adresse, $2 ist der vollständige Pfad)

if [ $# -lt 2 ]
then
    echo "Error"
    exit 1
else
    D=$(mktemp -d)
    echo "From $D/$2"
    echo "To user@$1:/$2"
    tar xfz /backup/$1.tar.gz -C $D
    rsync -ncavzPe ssh --partial --delete $D/$2 user@$1:/$2
    rm -r $D
    exit 0
fi

Angenommen, der Remote-Server ist 127.0.0.12 und ich möchte /home wiederherstellen.

$ssh 127.0.0.12
$password:
$ls /home/user
a b c x y z
$logout
$sh restore.sh 127.0.0.12 /home
From /tmp/tmp.R8iAewFEIR//home
To [email protected]://home
[email protected]'s password:
sending incremental file list
home/
home/user/
home/user/1
home/user/2
home/user/.cache/
home/user/.cache/motd.legal-displayed

sent 351 bytes  received 40 bytes  46.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)
$

Soll es nicht a, b, c, x, y und z löschen? Ist es nur wegen des Probelaufs? Wird es in einen anderen Ordner gesendet?Ich habe beim Versuch, ähnliche Dinge zu tun, einen Server kaputt gemacht.gestern und habe zu viel Angst, es ohne das -n zu versuchen.

Antwort1

if [ $# -lt 2 ]
then
    echo "Error"
    exit 1
else
    D=$(mktemp -d)
    echo "From $D/$2"
    echo "To user@$1:/$2"
    tar xfz /backup/$1.tar.gz -C $D
    rsync -cavzPe ssh --partial --delete $D/$2/* user@$1:/$2/
    rm -r $D
    exit 0
fi

Ich habe vergessen, den Ordner in der Quelle von rsync einzugeben.

verwandte Informationen