Ich nutze ein kleines Script, um mittels rsync die wichtigsten Konfigurationsdateien meiner PVE nodes auf mein zentrales NAS zu sichern. Das Script hat unter Debian 11 stets klaglos funktioniert.
Unter Debian 12 Bookworm läuft das Script leider nicht mehr!
Den Hauptaugenmerk im Script bitte ich auf folgende 2 Zeilen zu lenken (das komplette script steht am Ende im "Spoiler"):
Die erste Zeile (
Im Logfile steht dann folgendes:
Der per
Der tatsächlich im Script abgesetzte Befehl generiert aber die Fehlermeldung bzgl. dieses seltsam zusammengeschusteren Ordners:
Keine Ahnung, wo das herkommt!
Fun-Fact: Wenn ich aus dem Logfile den generierten Befehl
Deshalb vermute ich, dass irgendetwas bei der Substition dieser Zeile schief läuft:
Kann mir hier jemand weiterhelfen?
Unter Debian 12 Bookworm läuft das Script leider nicht mehr!
Den Hauptaugenmerk im Script bitte ich auf folgende 2 Zeilen zu lenken (das komplette script steht am Ende im "Spoiler"):
Bash:
$ECHO "$RSYNC -e \"$S\" -avR \"$SOURCE\" ${RSYNCCONF[@]} \"$TOSSH:$TARGET\"" >> $LOG
$RSYNC -e "$S" -avR "$SOURCE" "${RSYNCCONF[@]}" "$TOSSH:\"$TARGET\"" >> $LOG 2>&1
Die erste Zeile (
$ECHO
= "/bin/echo"
) schreibt den zusammengesetzten rsync-Befehl ins Logfile. Die zweite Zeile führt den Befehl tatsächlich aus.Im Logfile steht dann folgendes:
Bash:
Sat 8 Jul 09:20:41 CEST 2023
/usr/bin/rsync -e "/usr/bin/ssh -p 22 -l nasuser" -avR "/root" --delete "nas:/volume3/bkp_rsync/pve1"
sending incremental file list
rsync: mkdir "/volume1/homes/nasuser/"/volume3/bkp_rsync/pve1"" failed: No such file or directory (2)
rsync error: error in file IO (code 11) at main.c(691) [Receiver=3.1.2]
Der per
echo
ausgegebene Befehl wurde korrekt zusammengebaut.Der tatsächlich im Script abgesetzte Befehl generiert aber die Fehlermeldung bzgl. dieses seltsam zusammengeschusteren Ordners:
"/volume1/homes/nasuser/"/volume3/bkp_rsync/pve1""
Keine Ahnung, wo das herkommt!
Fun-Fact: Wenn ich aus dem Logfile den generierten Befehl
/usr/bin/rsync -e "/usr/bin/ssh -p 22 -l nasuser" -avR "/root" --delete "nas:/volume3/bkp_rsync/pve1"
rauskopiere und in der bash direkt ausführe, dann läuft er fehlerfrei durch.Deshalb vermute ich, dass irgendetwas bei der Substition dieser Zeile schief läuft:
Bash:
$RSYNC -e "$S" -avR "$SOURCE" "${RSYNCCONF[@]}" "$TOSSH:\"$TARGET\"" >> $LOG 2>&1
Kann mir hier jemand weiterhelfen?
Bash:
#!/bin/bash
# Simple backup with rsync
SOURCES=(/root /etc/pve /etc/network/interfaces /etc/corosync /etc/resolv.conf /etc/hosts /etc/vzdump.conf )
TARGET="/volume3/bkp_rsync/"$(hostname)
RSYNCCONF=(--delete)
SSHUSER="nasuser"
TOSSH="nas"
SSHPORT=22
### do not edit ###
SSH="/usr/bin/ssh"
ECHO="/bin/echo"; DATE="/bin/date"
RSYNC="/usr/bin/rsync"
LOG=$0.log
$DATE > $LOG
TODAY=$($DATE +%y%m%d)
#TODAY=$($DATE +%d)
S="$SSH -p $SSHPORT -l $SSHUSER";
for SOURCE in "${SOURCES[@]}"
do
if [ -d "$SOURCE" ] || [ -f "$SOURCE" ]; then
# run rsync only if $SOURCE exists
$ECHO "$RSYNC -e \"$S\" -avR \"$SOURCE\" ${RSYNCCONF[@]} \"$TOSSH:$TARGET\"" >> $LOG
$RSYNC -e "$S" -avR "$SOURCE" "${RSYNCCONF[@]}" "$TOSSH:\"$TARGET\"" >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
else
$ECHO "INFO: $SOURCE does not exists. Skipping." >> $LOG
fi
done
$DATE >> $LOG