This paste brought to you by esmuellert paste. View Raw

  1. #!/bin/bash
  2. # Script fuer inkrementelles Backup mit 30 taegigem Vollbackup
  3.  
  4. ### Einstellungen ##
  5. BACKUPDIR="/mnt/backups"           ## Pfad zum Backupverzeichnis
  6. ROTATEDIR="/mnt/backups/rotate"    ## Pfad wo die Backups nach 15 Tagen konserviert werden
  7. TIMESTAMP="timestamp.dat"          ## Zeitstempel
  8. SOURCE="/mnt/nextclouddata /mnt/scripte /var/www"                 ## Verzeichnis(se) welche(s) gesichert werden soll(en)
  9. DATUM="$(date +%d-%m-%Y)"          ## Datumsformat einstellen
  10. ZEIT="$(date +%H:%M)"              ## Zeitformat einstellen >>Edit bei NTFS und Verwendung auch unter Windows : durch . ersetzen
  11.  
  12. ### Verzeichnisse/Dateien welche nicht gesichert werden sollen ! Achtung keinen Zeilenumbruch ! ##
  13. #EXCLUDE="--exclude=home/user/Filme --exclude=home/user/Musik --exclude=home/user/Spiele --exclude=home/user/.VirtualBox  --exclude=home/user/.local/share/Trash"
  14.  
  15. ### Wechsel in root damit die Pfade stimmen ##
  16. cd /
  17.  
  18. ### Backupverzeichnis anlegen ##
  19. mkdir -p ${BACKUPDIR}
  20.  
  21. ### Test ob Backupverzeichnis existiert und Mail an Admin bei fehlschlagen ##
  22. if [ ! -d "${BACKUPDIR}" ]; then
  23.  
  24. mail -s "Backupverzeichnis nicht vorhanden!" root <<EOM
  25. Hallo Admin,
  26. das Backup am ${DATUM} konnte nicht erstellt werden. Das Verzeichnis ${BACKUPDIR} wurde nicht gefunden und konnte auch nicht angelegt werden.
  27. Mit freundlichem Gruss Backupscript
  28. EOM
  29.  
  30.  . exit 1
  31. fi
  32.  
  33. ### Alle Variablen einlesen und letzte Backupdateinummer herausfinden ##
  34. set -- ${BACKUPDIR}/backup-???.tgz
  35. lastname=${!#}
  36. backupnr=${lastname##*backup-}
  37. backupnr=${backupnr%%.*}
  38. backupnr=${backupnr//\?/0}
  39. backupnr=$[10#${backupnr}]
  40.  
  41. ### Backupdateinummer automatisch um +1 bis maximal 30 erhoehen ##
  42. if [ "$[backupnr++]" -ge 7 ]; then
  43. mkdir -p ${ROTATEDIR}/${DATUM}-${ZEIT}
  44.  
  45. ### Test ob Rotateverzeichnis existiert und Mail an Admin bei fehlschlagen ##
  46. if [ ! -d "${ROTATEDIR}/${DATUM}-${ZEIT}" ]; then
  47.  
  48. mail -s "Rotateverzeichnis nicht vorhanden!" root <<EOM
  49. Hallo Admin,
  50. die alten Backups konnten am ${DATUM} nicht verschoben werden. Das Verzeichnis ${ROTATEDIR} wurde nicht gefunden und konnte auch nicht angelegt werden.
  51. Mit freundlichem Gruss Backupscript
  52. EOM
  53.  
  54.  . exit 1
  55. else
  56. ### alter Code: mv ${BACKUPDIR}/* ${ROTATEDIR}/${DATUM}-${ZEIT}  Damit verschiebt er die Dateien in sich selbst weil rotate ein Unterverzeichnis von backup ist. Es kommt zur Fehlermeldung ##
  57. ### /b* und /t* weil die Dateien nur mit b und t beginnen ##
  58. mv ${BACKUPDIR}/b* ${ROTATEDIR}/${DATUM}-${ZEIT}
  59. mv ${BACKUPDIR}/t* ${ROTATEDIR}/${DATUM}-${ZEIT}
  60. fi
  61.  
  62. ### Abfragen ob das Backupverschieben erfolgreich war ##
  63. if [ $? -ne 0 ]; then
  64.  
  65. mail -s "Backupverschieben fehlerhaft!" root <<EOM
  66. Hallo Admin,
  67. die alten Backups konnte am ${DATUM} nicht verschoben werden.
  68. Mit freundlichem Gruss Backupscript
  69. EOM
  70.  
  71. exit 1
  72. else
  73.  
  74. mail -s "Backupverschieben erfolgreich" root <<EOM
  75. Hallo Admin,
  76. die alten Backups wurde am ${DATUM} erfolgreich nach ${ROTATEDIR}/${DATUM}-${ZEIT} verschoben.
  77. Mit freundlichem Gruss Backupscript
  78. EOM
  79.  
  80. ### die Backupnummer wieder auf 1 stellen ##
  81. backupnr=1
  82. fi
  83. fi
  84.  
  85. backupnr=000${backupnr}
  86. backupnr=${backupnr: -3}
  87. filename=backup-${backupnr}.tgz
  88.  
  89. ### Nun wird das eigentliche Backup ausgefuehrt ##
  90. tar -cpzf ${BACKUPDIR}/${filename} -g ${BACKUPDIR}/${TIMESTAMP} ${SOURCE} ${EXCLUDE}
  91.  
  92. ### Abfragen ob das Backup erfolgreich war ##
  93. if [ $? -ne 0 ]; then
  94.  
  95. mail -s "Backup (${SOURCE}) war fehlerhaft!" root <<EOM
  96. Hallo Admin,
  97. das Backup ${filename} am ${DATUM} wurde mit Fehler(n) beendet.
  98. Mit freundlichem Gruss Backupscript
  99. EOM
  100.  
  101. else
  102.  
  103. mail -s "Backup (${SOURCE}) war erfolgreich" root <<EOM
  104. Hallo Admin,
  105. das Backup ${filename} am ${DATUM} wurde erfolgreich beendet.
  106. Mit freundlichem Gruss Backupscript
  107. EOM
  108.  
  109. fi