Hilfe für rsync Backuplösung für meinen yaVDR
Hallo!
Ich habe folgendes vor! Ich möchte für rsync ein Backup-Skript erstellen, dass immer wenn ich meinen Laptop einschalte ein Backup macht von diesen drei Ordner zu meinen yaVDR.0.5. Ordner Laptop >/home/mario/Bilder/ >/home/mario/videos/Eigene/ > /home/mario/Dokumente/ zum yaVDR /media/video1/Bilder/ > /media/video.01/Videos/ > media/video.01/Dokumente/
Das Skript soll am Laptop bei starten Automatisch gestartet werden und auch dann der yaVDR über WOL aufgeweckt und dann das Backup ausgeführt werden. Der Grund des ganzen aufwand, ich habe die Bilder und eigenen Videos und Dokumente auf meinem Laptop und die möchte ich auf meinem yaVDR gesichert haben und aber auch das ich sie jeder Zeit über den yaVDR auf meinem TV ansehen kann.Habe mich schon mal daran gemacht mir ein Skript zu schreiben und würde euch bitte mir zu sagen ob es Sinn macht wie ich es gemacht habe oder Verbesserungsvorschläge. Oder auch vielleicht das es auch eine andere Lösung noch gibt außer rsync. Eines ist mir auch noch nicht klar wie ichdie einzelne Ordner vom Laptop in den richtigen Ordner auf den yaVDR bringe mit TARGET=""
Hier das Skript
#!/bin/bash
# Simple backup with rsync
# local-mode, tossh-mode, fromssh-mode
wakeonlan bc:5f:f4:06:a0:10
sleep 300
SOURCES="/home/mario/Bilder/ /home/mario/videos/Eigene/ /home/mario/Dokumente/Rechnungen/"
TARGET="/media/video.01"
#Oder kann ich die "SOURCES=" "TARGET=" auch so rein schreiben#
#SOURCES="/home/mario/Bilder/"
#TARGET="/media/video.01/BIlder"
#SOURCES="/home/mario/videos/Eigene/"
#TARGET="/media/mario/video.01/Eigene/"
#SOURCES="/home/mario/Dokumente/Rechnungen/"
#TARTGET="/media/mario/Dokumente/Rechnungen/"
# edit or comment with "#"
#LISTPACKAGES=listdebianpackages # local-mode and tossh-mode
MONTHROTATE=monthrotate # use DD instead of YYMMDD
RSYNCCONF=(--delete)
MOUNTPOINT="/media/video.01" # check local mountpoint
#MAILREC="admin@mediastreambox.at"
SSHUSER="mario"
FROMSSH="192.168.178.29"
TOSSH="192.168.178.20"
SSHPORT=22
### do not edit ###
MOUNT="/bin/mount"; FGREP="/bin/fgrep"; SSH="/usr/bin/ssh"
LN="/bin/ln"; ECHO="/bin/echo"; DATE="/bin/date"; RM="/bin/rm"
DPKG="/usr/bin/dpkg"; AWK="/usr/bin/awk"; MAIL="/usr/bin/mail"
CUT="/usr/bin/cut"; TR="/usr/bin/tr"; RSYNC="/usr/bin/rsync"
LAST="last"; INC="--link-dest=../$LAST"
LOG=$0.[definition='1','0']log[/definition]
$DATE > $LOG
if [ "${TARGET:${#TARGET}-1:1}" != "/" ]; then
TARGET=$TARGET/
fi
if [ "$LISTPACKAGES" ] && [ -z "$FROMSSH" ]; then
$ECHO "$DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 | $TR '\n' ' '" >> $LOG
$DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 |$TR '\n' ' ' >> $LOG 2>&1
fi
if [ "$MOUNTPOINT" ]; then
MOUNTED=$($MOUNT | $FGREP "$MOUNTPOINT");
fi
if [ -z "$MOUNTPOINT" ] || [ "$MOUNTED" ]; then
if [ -z "$MONTHROTATE" ]; then
TODAY=$($DATE +%y%m%d)
else
TODAY=$($DATE +%d)
fi
if [ "$SSHUSER" ] && [ "$SSHPORT" ]; then
S="$SSH -p $SSHPORT -l $SSHUSER";
fi
for SOURCE in "${SOURCES[@]}"
do
if [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ]; then
$ECHO "$RSYNC -e \"$S\" -avR \"$FROMSSH:$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC" >> $LOG
$RSYNC -e "$S" -avR "$FROMSSH:\"$SOURCE\"" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
if [ "$S" ] && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then
$ECHO "$RSYNC -e \"$S\" -avR \"$SOURCE\" ${RSYNCCONF[@]} \"$TOSSH:$TARGET$TODAY\" $INC " >> $LOG
$RSYNC -e "$S" -avR "$SOURCE" "${RSYNCCONF[@]}" "$TOSSH:\"$TARGET\"$TODAY" $INC >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
if [ -z "$S" ]; then
$ECHO "$RSYNC -avR \"$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC" >> $LOG
$RSYNC -avR "$SOURCE" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
done
if [ "$S" ] && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then
$ECHO "$SSH -p $SSHPORT -l $SSHUSER $TOSSH $LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG
$SSH -p $SSHPORT -l $SSHUSER $TOSSH "$LN -nsf \"$TARGET\"$TODAY \"$TARGET\"$LAST" >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
if ( [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ] ) || ( [ -z "$S" ] ); then
$ECHO "$LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG
$LN -nsf "$TARGET"$TODAY "$TARGET"$LAST >> $LOG 2>&1
if [ $? -ne 0 ]; then
ERROR=1
fi
fi
else
$ECHO "$MOUNTPOINT not mounted" >> $LOG
ERROR=1
fi
$DATE >> $LOG
if [ -n "$MAILREC" ]; then
if [ $ERROR ];then
$MAIL -s "Error Backup $LOG" $MAILREC < $LOG
else
$MAIL -s "Backup $LOG" $MAILREC < $LOG
fi
fi
Alles anzeigen