Ich habe bisher die Einstellungen und Musikdaten meines Musikservers vor Ort mit einer externen USB-HD gesichert, möchte dies inskünftig aber vom PC aus auf eine dort angehängte HD erledigen.
Im Trockenlauf hat die gewünschte Sicherung mit folgenden Befehle das gewünschte Ergebnis gezeitigt:
rsync -avb -P -e "ssh -m hmac-sha1-96" --delete root@SERVER-IP:/audio /media/MUSIKBACKUP --backup-dir=/media/MUSIKBACKUP/old rsync -avb -P -e "ssh -m hmac-sha1-96" --delete root@SERVER-IP:/data/db /media/MUSIKBACKUP --backup-dir=/media/MUSIKBACKUP/old rsync -avb -P -e "ssh -m hmac-sha1-96" --delete root@SERVER-IP:/data/cddb2 /media/MUSIKBACKUP --backup-dir=/media/MUSIKBACKUP/old
Da mir jegliche Erfahrung mit Skripten fehlt, habe ich das rsync-Skript aus dem Wiki genommen und wie folgt angepasst (8-ung: ohne Codeblock, da sonst die fett hervorgehobenen Änderungen nicht eindeutig erkennbar wären):
#!/bin/bash # Simple backup with rsync # sources and target MUST end WITH slash SOURCES="/audio /data/db /data/cddb2" TARGET="/media/MUSIKBACKUP" # mountpoint must end WITHOUT slash #MOUNTPOINT="/media/MUSIKBACKUP" LOGFILE="/home/adca1/backup.log" EXPIREDAYS=0 RSYNC=" -b --delete --backup-dir=/media/MUSIKBACKUP/old" #PACKAGES="/tmp/packages.list" #MAILREC="root@localhost" #SSHUSER="root" #SSHHOST="SERVER-IP" #SSHPORT=22 ### do not edit ### /bin/date > $LOGFILE MOUNTED=$(/bin/mount | /bin/fgrep "$MOUNTPOINT"); if [ -z "$MOUNTPOINT" ] || [ -n "$MOUNTED" ]; then if [ -e $TARGET ]; then LASTBACKUP=$(/bin/ls -d $TARGET[[:digit:]]* 2>> $LOGFILE | /usr/bin/sort -r | /usr/bin/head -1) fi TODAY=$(/bin/date +%y%m%d) if [ $EXPIREDAYS -gt 0 ]; then EXPIRED=$(/usr/bin/find $TARGET[[:digit:]]* -maxdepth 0 -ctime +$EXPIREDAYS 2>> $LOGFILE) for EX in $(/bin/echo $EXPIRED) do /bin/echo "rm -rf $EX " >> $LOGFILE /bin/rm -rf $EX done fi for SOURCE in $(/bin/echo $SOURCES) do if [ "$LASTBACKUP" ]; then INC="--link-dest=$LASTBACKUP$SOURCE" fi if [ "$SSHUSER" ] && [ "$SSHHOST" ] && [ "$SSHPORT" ]; then SSH="ssh '-m hmac-sha1-96' $SSHPORT -l $SSHUSER"; SOURCEDIR="$SSHHOST:$SOURCE"; else SOURCEDIR=$SOURCE; fi /bin/mkdir -P $TARGET$TODAY$SOURCE >> $LOGFILE 2>> $LOGFILE; echo "/usr/bin/rsync -e \"$SSH\" -avP $SOURCEDIR $RSYNC $INC $TARGET$TODAY$SOURCE " >> $LOGFILE 2>> $LOGFILE; /usr/bin/rsync -e "$SSH" -avP $SOURCEDIR $RSYNC $INC $TARGET$TODAY$SOURCE >> $LOGFILE 2>> $LOGFILE; done if [ -n "$PACKAGES" ]; then if [ -z "$SSHUSER" ] || [ -z "$SSHHOST" ] || [ -z "$SSHPORT" ] ; then echo "dpkg --get-selections | awk '!/deinstall|purge|hold/' > $PACKAGES" >> $LOGFILE 2>> $LOGFILE dpkg --get-selections | awk '!/deinstall|purge|hold/' > $PACKAGES 2>> $LOGFILE echo -e "/bin/mv $PACKAGES $TARGET$TODAY \n" >> $LOGFILE 2>> $LOGFILE /bin/mv $PACKAGES $TARGET$TODAY 2>> $LOGFILE fi fi /bin/date >> $LOGFILE /bin/cp $LOGFILE $TARGET$TODAY/backup-$(/bin/date +%H%M%S).log 2>> $LOGFILE else /bin/echo "$MOUNTPOINT not mounted" >> $LOGFILE fi if [ -n "$MAILREC" ];then /bin/echo -e 'Backup is finished!\n'$(/bin/date) | /usr/bin/mutt -s "Backup" -a $LOGFILE -- $MAILREC /bin/rm $LOGFILE fi
Kommt das hin? Ich möchte nicht durch ein unbedachtes Laufenlassen des Skripts einen Datenverlust provozieren.
Wenn ich im Übrigen MAILREC nutzen möchten, kann ich da auch meine normale e-mail-Adresse angeben?
Danke für Hinweise auf Unebenheiten im Skriptentwurf.
Bearbeitet von redknight:
Forensyntax eingefügt. Einmal wäre der Marker sinnvoll und dann wird er nicht benutzt, es ist zum heulen. Das kann doch nicht dein Ernst gewesen sien, so einen Brocken hier einfach hinzuwerfen und dann noch Hilfe zu erwarten.
Moderiert von redknight:
Ins korrekte Subforum verschoben.