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.