NoPaste

Script

von DEBIANUNDANDREAS
SNIPPET_DESC:
Script hat fehler
SNIPPET_CREATION_TIME:
05.05.2015 11:55:11
SNIPPET_PRUNE_TIME:
Unendlich

SNIPPET_TEXT:
  1. #!/bin/bash
  2. # Simple backup with rsync
  3. # local-mode, tossh-mode, fromssh-mode
  4.  
  5. SOURCES=(/root /etc /home /boot )
  6. TARGET="/media/backup"
  7.  
  8. # edit or comment with "#"
  9. #LISTPACKAGES=listdebianpackages        # local-mode and tossh-mode
  10. MONTHROTATE=monthrotate                 # use DD instead of YYMMDD
  11.  
  12. RSYNCCONF=(--delete)
  13. #MOUNTPOINT="/media/daten"               # check local mountpoint
  14. #MAILREC="user@domain"
  15.  
  16. #SSHUSER="sshuser"
  17. #FROMSSH="fromssh-server"
  18. #TOSSH="tossh-server"
  19. SSHPORT=22
  20.  
  21. ### do not edit ###
  22.  
  23. MOUNT="/bin/mount"; FGREP="/bin/fgrep"; SSH="/usr/bin/ssh"
  24. LN="/bin/ln"; ECHO="/bin/echo"; DATE="/bin/date"; RM="/bin/rm"
  25. DPKG="/usr/bin/dpkg"; AWK="/usr/bin/awk"; MAIL="/usr/bin/mail"
  26. CUT="/usr/bin/cut"; TR="/usr/bin/tr"; RSYNC="/usr/bin/rsync"
  27. LAST="last"; INC="--link-dest=$TARGET/$LAST"
  28.  
  29. LOG=$0.log
  30. $DATE > $LOG
  31.  
  32. if [ "${TARGET:${#TARGET}-1:1}" != "/" ]; then
  33.   TARGET=$TARGET/
  34. fi
  35.  
  36. if [ "$LISTPACKAGES" ] && [ -z "$FROMSSH" ]; then
  37.   $ECHO "$DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 | $TR '\n' ' '" >> $LOG
  38.   $DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 |$TR '\n' ' '  >> $LOG  2>&1
  39. fi
  40.  
  41. if [ "$MOUNTPOINT" ]; then
  42.   MOUNTED=$($MOUNT | $FGREP "$MOUNTPOINT");
  43. fi
  44.  
  45. if [ -z "$MOUNTPOINT" ] || [ "$MOUNTED" ]; then
  46.   if [ -z "$MONTHROTATE" ]; then
  47.     TODAY=$($DATE +%y%m%d)
  48.   else
  49.     TODAY=$($DATE +%d)
  50.   fi
  51.  
  52.   if [ "$SSHUSER" ] && [ "$SSHPORT" ]; then
  53.     S="$SSH -p $SSHPORT -l $SSHUSER";
  54.   fi
  55.  
  56.   for SOURCE in "${SOURCES[@]}"
  57.     do
  58.       if [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ]; then
  59.         $ECHO "$RSYNC -e \"$S\" -avR \"$FROMSSH:$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC"  >> $LOG
  60.         $RSYNC -e "$S" -avR "$FROMSSH:\"$SOURCE\"" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> $LOG 2>&1
  61.         if [ $? -ne 0 ]; then
  62.           ERROR=1
  63.         fi
  64.       fi
  65.       if [ "$S" ]  && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then
  66.         $ECHO "$RSYNC -e \"$S\" -avR \"$SOURCE\" ${RSYNCCONF[@]} \"$TOSSH:$TARGET$TODAY\" $INC " >> $LOG
  67.         $RSYNC -e "$S" -avR "$SOURCE" "${RSYNCCONF[@]}" "$TOSSH:\"$TARGET\"$TODAY" $INC >> $LOG 2>&1
  68.         if [ $? -ne 0 ]; then
  69.           ERROR=1
  70.         fi
  71.       fi
  72.       if [ -z "$S" ]; then
  73.         $ECHO "$RSYNC -avR \"$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC"  >> $LOG
  74.         $RSYNC -avR "$SOURCE" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC  >> $LOG 2>&1
  75.         if [ $? -ne 0 ]; then
  76.           ERROR=1
  77.         fi
  78.       fi
  79.   done
  80.  
  81.   if [ "$S" ] && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then
  82.     $ECHO "$SSH -p $SSHPORT -l $SSHUSER $TOSSH $LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG  
  83.     $SSH -p $SSHPORT -l $SSHUSER $TOSSH "$LN -nsf \"$TARGET\"$TODAY \"$TARGET\"$LAST" >> $LOG 2>&1
  84.     if [ $? -ne 0 ]; then
  85.       ERROR=1
  86.     fi
  87.   fi
  88.   if ( [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ] ) || ( [ -z "$S" ] );  then
  89.     $ECHO "$LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG
  90.     $LN -nsf "$TARGET"$TODAY "$TARGET"$LAST  >> $LOG 2>&1
  91.     if [ $? -ne 0 ]; then
  92.       ERROR=1
  93.     fi
  94.   fi
  95. else
  96.   $ECHO "$MOUNTPOINT not mounted" >> $LOG
  97.   ERROR=1
  98. fi
  99. $DATE >> $LOG
  100. if [ -n "$MAILREC" ]; then
  101.   if [ $ERROR ];then
  102.     $MAIL -s "Error Backup $LOG" $MAILREC < $LOG
  103.   else
  104.     $MAIL -s "Backup $LOG" $MAILREC < $LOG
  105.   fi
  106. fi

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN