From 56775801383f1da473a41ba4df4346198522eb31 Mon Sep 17 00:00:00 2001 From: janic Date: Mon, 4 Jul 2022 23:42:18 +0200 Subject: [PATCH] Removed --- Bash-OSS-Backup/oss-backup.sh | 302 ---------------------------------- OSS-Editing/backup.sh | 176 -------------------- OSS-Editing/oss-backup.sh | 302 ---------------------------------- 3 files changed, 780 deletions(-) delete mode 100755 Bash-OSS-Backup/oss-backup.sh delete mode 100755 OSS-Editing/backup.sh delete mode 100755 OSS-Editing/oss-backup.sh diff --git a/Bash-OSS-Backup/oss-backup.sh b/Bash-OSS-Backup/oss-backup.sh deleted file mode 100755 index 5c2f6ab..0000000 --- a/Bash-OSS-Backup/oss-backup.sh +++ /dev/null @@ -1,302 +0,0 @@ -#!/bin/bash -# Copyright (c) 2012 Peter Varkoly Nürnberg, Germany. All rights reserved. -# oss-backup -# -# $Id: oss-backup,v 1.10 2007/07/18 16:43:22 pv Exp $ -# - -LOGFILE=/var/log/oss-backup.log -DATE=`date +%Y-%m-%d-%H-%M` -#TODO Make all variables configurable. -MYSQLDUMP_OPTIONS="--lock-tables --add-drop-database --add-locks --quote-names --opt --create-options" -MAILADDR="admin" -FORCE="no" -VERBOSE="yes" -CONFIG=/etc/sysconfig/schoolserver -RSYNCPARS=" -aA --delete --size-only " -LIMIT=80 -DAY_OF_WEEK=$( date +%u ) - -if [ -e /var/adm/oss/BackupRunning ] -then - BPID=$( cat /var/adm/oss/BackupRunning ) - if [ -d /proc/$BPID ]; then - echo "An other backup process is running with PID: $BPID" - exit 1; - fi -fi - -echo $$ > /var/adm/oss/BackupRunning - -function TheEnd(){ - rm /var/adm/oss/BackupRunning - echo $DATE > /var/adm/backup/LAST_BACKUP - if [ "$2" ]; then - LOG "$2 $1"; - fi - exit $1 -} - -function usage (){ - echo - echo "Usage: `basename $0` [OPTION] " - echo " -h|--help : help (this message)" - echo " -f : force backup (even if it's disabled in config)" - echo " -v : be verbose" - echo - echo " Use this script to immediately create a backup of your OSS." - echo " You can find the configuration in $CONFIG." - echo " Feel free to read the administration handbook for further details." - echo - TheEnd $1 -} - -function check_discspace() { - if [ "$SCHOOL_BACKUP_WARNING_LIMIT" ]; then - LIMIT=$SCHOOL_BACKUP_WARNING_LIMIT - fi - - USED=`df $1 | tail -n1 | awk '{ print $(NF-1) }' | sed s/%//` - if [ $USED -gt $LIMIT ]; then - { - AVAIL=`df -h $1 | tail -n1 | awk '{ print $(NF-2) }'` - echo "WARNING: only $AVAIL space available on $1." | tee -a $LOGFILE - } | mail -s "BACKUP WARNING from $0" $MAILADDR - fi -} - -function LOG() { - LOG_DATE=`date "+%b %d %H:%M:%S"` - HOST=`hostname` - echo "$LOG_DATE $HOST oss-backup: $1" >> $LOGFILE - if [ "$VERBOSE" = "yes" ]; then - echo "$1" - fi -} - -while getopts 'fhv --long help --' OPTION ; do - case $OPTION in - h|H|help) usage 0 - ;; - f) FORCE="yes" - ;; - v) VERBOSE="yes" - ;; - esac -done - -shift $(( OPTIND - 1 )) - -if [ ! -f $CONFIG ]; then - echo -e "\033[0;31;1mThis script is for Open School Server only!\033[\0m" - echo -e "\033[0;31;1m********* exiting *********\033[\0m" - TheEnd 1 -fi - -# Read the configuration -. $CONFIG -if [ -z "$SCHOOL_BACKUP_DAYS" ]; then - SCHOOL_BACKUP_DAYS="1234567" -fi -if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_ACL" = "yes" ]; then - RSYNCPARS=" -a --delete " -fi - -if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_OWNER" = "yes" ]; then - RSYNCPARS=" -r --delete " -fi - -if [ "${SCHOOL_BACKUP_DAYS/$DAY_OF_WEEK/}" = $SCHOOL_BACKUP_DAYS -a "$FORCE" != "yes" ]; then - LOG "********** No backup needed today **********" - exit 0; -fi - -MAILADDR="admin@$SCHOOL_DOMAIN" - -if [ "$SCHOOL_BACKUP" = "yes" ] || [ "$FORCE" = "yes" ] ; then - LOG "********** Starting Backup **********" - - if [ "$SCHOOL_BACKUP_START_CMD" ]; then - eval $SCHOOL_BACKUP_START_CMD - fi - if [ -e /var/adm/backup/LAST_BACKUP ]; then - LAST_BACKUP=`cat /var/adm/backup/LAST_BACKUP` - else - LAST_BACKUP=$DATE - fi - # check needed configs - if [ -z $SCHOOL_BACKUP_FULL_DIR ]; then - VERBOSE="yes" - LOG "No SCHOOL_BACKUP_FULL_DIR defined - exiting" - TheEnd 1 - fi - check_discspace $SCHOOL_BACKUP_FULL_DIR - if [ -z $SCHOOL_BACKUP_INC_DIR ]; then - VERBOSE="yes" - LOG "No SCHOOL_BACKUP_INC_DIR defined - using $SCHOOL_BACKUP_FULL_DIR instead" - SCHOOL_BACKUP_INC_DIR=$SCHOOL_BACKUP_FULL_DIR - else - check_discspace $SCHOOL_BACKUP_INC_DIR - fi - - #create the backup direcktory - BACKUP_DIR="$SCHOOL_BACKUP_INC_DIR/$LAST_BACKUP" - mkdir -p $BACKUP_DIR - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - touch $SCHOOL_BACKUP_FULL_DIR/DO_BACKUP - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - export BACKUP_DIR - export SCHOOL_BACKUP_FULL_DIR - if [ "$SCHOOL_BACKUP_CHECK_MOUNT" = "yes" ]; then - mount | grep -q "$SCHOOL_BACKUP_FULL_DIR" || { - LOG "Unable to mount $SCHOOL_BACKUP_FULL_DIR" - TheEnd 5 - } - mount | grep -q "$SCHOOL_BACKUP_INC_DIR" || { - LOG "Unable to mount $SCHOOL_BACKUP_INC_DIR" - TheEnd 5 - } - fi - - # copy sysconfig file schoolconf to the base for simple recovery - cp /etc/sysconfig/schoolserver $SCHOOL_BACKUP_FULL_DIR/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - # save custom squidGuard database - LOG "Syncing custom squidGuard database" - mkdir -p $SCHOOL_BACKUP_FULL_DIR/var/lib/squidGuard/db/custom/ - mkdir -p $BACKUP_DIR/var/lib/squidGuard/db/custom/ - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/var/lib/squidGuard/db/custom/ \ - /var/lib/squidGuard/db/custom/ \ - $SCHOOL_BACKUP_FULL_DIR/var/lib/squidGuard/db/custom/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - LOG "Syncing samba" - if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_ACL" = "yes" ]; then - test -e $SCHOOL_BACKUP_FULL_DIR/samba_facls.gz && mv $SCHOOL_BACKUP_FULL_DIR/samba_facls.gz $BACKUP_DIR - getfacl --absolute-names -R /var/lib/samba/ | gzip > $SCHOOL_BACKUP_FULL_DIR/samba_facls.gz - fi - mkdir -p $BACKUP_DIR/var/lib/samba/ - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/var/lib/samba/ /var/lib/samba/ $SCHOOL_BACKUP_FULL_DIR/var/lib/samba/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - # save /etc - must run after samba-backup otherwise secrets.tdb.bak is not saved - if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_ACL" = "yes" ]; then - LOG "Saving acls on /etc/" - if [ -e $SCHOOL_BACKUP_FULL_DIR/etc_facls.gz ]; then - mv $SCHOOL_BACKUP_FULL_DIR/etc_facls.gz $BACKUP_DIR/etc_facls.gz - fi - getfacl --skip-base --absolute-names -R /etc/ | gzip > $SCHOOL_BACKUP_FULL_DIR/etc_facls.gz - fi - LOG "Syncing /etc/" - mkdir -p $BACKUP_DIR/etc/ - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/etc/ /etc/ $SCHOOL_BACKUP_FULL_DIR/etc/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - # save /root (needed already for ssh-key files) - LOG "Syncing /root/" - mkdir -p $BACKUP_DIR/root/ - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/root/ /root/ $SCHOOL_BACKUP_FULL_DIR/root/ - - if [ "$SCHOOL_BACKUP_HOME" = "yes" ]; then - if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_ACL" = "yes" ]; then - LOG "Saving acls on /home/" - if [ -e $SCHOOL_BACKUP_FULL_DIR/home_facls.gz ]; then - mv $SCHOOL_BACKUP_FULL_DIR/home_facls.gz $BACKUP_DIR/home_facls.gz - fi - getfacl --skip-base --absolute-names -R /home/ | gzip > $SCHOOL_BACKUP_FULL_DIR/home_facls.gz - fi - LOG "Syncing /home/" - test -e /usr/share/oss/templates/exclude-from-home-backup || touch /usr/share/oss/templates/exclude-from-home-backup - # If $SCHOOL_BACKUP_FULL_DIR equal $SCHOOL_BACKUP_INC_DIR we make hartlinks - if [ $SCHOOL_BACKUP_FULL_DIR = $SCHOOL_BACKUP_INC_DIR -a "$SCHOOL_BACKUP_WITH_HARDLINK" = "yes" ]; then - if [ -d $SCHOOL_BACKUP_FULL_DIR/home/ ]; then - mv $SCHOOL_BACKUP_FULL_DIR/home/ $BACKUP_DIR/home/ - else - mkdir -p $BACKUP_DIR/home/ - fi - rsync $RSYNCPARS --exclude-from=/usr/share/oss/templates/exclude-from-home-backup --link-dest=$BACKUP_DIR/home/ /home/ $SCHOOL_BACKUP_FULL_DIR/home/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - else - mkdir -p $BACKUP_DIR/home/ - rsync $RSYNCPARS --exclude-from=/usr/share/oss/templates/exclude-from-home-backup -b --backup-dir=$BACKUP_DIR/home/ /home/ $SCHOOL_BACKUP_FULL_DIR/home/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - fi - fi - - if [ "$SCHOOL_BACKUP_CTOOL" = "yes" ]; then - LOG "Syncing itool" - mkdir -p $SCHOOL_BACKUP_FULL_DIR/srv/itool - mkdir -p $BACKUP_DIR/srv/itool - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/srv/itool/ /srv/itool/ $SCHOOL_BACKUP_FULL_DIR/srv/itool/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - fi - - if [ "$SCHOOL_BACKUP_DB" = "yes" ]; then - LOG "Syncing OSS Database" - mysqldump $MYSQLDUMP_OPTIONS --all-databases | gzip > $BACKUP_DIR/MYSQL.sql.gz - if [ $? != 0 ]; then - LOG " CAN_NOT_MAKE_BACKUP" - fi - fi - - if [ "$SCHOOL_BACKUP_MAIL" = "yes" ]; then - LOG "Syncing Mail Data" - for i in var/spool/imap/ var/lib/imap/; do - mkdir -p $SCHOOL_BACKUP_FULL_DIR/$i - mkdir -p $BACKUP_DIR/$i - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/$i /$i $SCHOOL_BACKUP_FULL_DIR/$i - if [ $? != 0 ]; then - LOG " CAN_NOT_MAKE_BACKUP" - fi - done - fi - - # Now we make recovery easy - if [ -f /usr/share/oss/tools/oss_recover.sh ]; then - cp -f /usr/share/oss/tools/oss_recover.sh $SCHOOL_BACKUP_FULL_DIR/ - chmod 750 $SCHOOL_BACKUP_FULL_DIR/oss_recover.sh - chown root:root $SCHOOL_BACKUP_FULL_DIR/oss_recover.sh - fi - if [ -f /usr/share/doc/packages/openschool-base/oss_recover.readme ]; then - cp -f /usr/share/doc/packages/openschool-base/oss_recover.readme $SCHOOL_BACKUP_FULL_DIR/ - fi - - # Execute custom scripts - if [ "$SCHOOL_BACKUP_CUSTOM_SCRIPTS" ]; then - for i in $SCHOOL_BACKUP_CUSTOM_SCRIPTS - do - LOG "Starting $i" - $i $BACKUP_DIR $SCHOOL_BACKUP_FULL_DIR - done - fi - - # create mark for last backup - DATE=`date +%Y-%m-%d-%H-%M` - LOG "********** Backup finished **********" - echo $DATE > /var/adm/backup/LAST_BACKUP - if [ "$SCHOOL_BACKUP_STOP_CMD" ]; then - eval $SCHOOL_BACKUP_STOP_CMD - fi - -fi -TheEnd diff --git a/OSS-Editing/backup.sh b/OSS-Editing/backup.sh deleted file mode 100755 index 0bc5a25..0000000 --- a/OSS-Editing/backup.sh +++ /dev/null @@ -1,176 +0,0 @@ -#!/bin/bash -# Copyright (c) 2021 Janic Voser Mettmenstetten, Zurich, Switzerland. All rights reserved. -# TUBS - The Ultimate Backup Script -# -# Command: -#rsync -av /SRC/ --backup-dir=/FULL-1/ /FULL/ --delete - - - -# Config -CONFIG_FILE=/etc/tubs/config # Any Config File -# Defaults -DATE_FORMAT="+%Y-%m-%d_%H-%M" -TIME_FORMAT="+%H-%M-%S" -BACKUP_SRC_ARRAY=("/etc" "/home/janic/Documents/Reverse Engeenering/OSS-Editing/Tests/SRC") # All SRC-Directorys, separated with a space & in double quotes -BACKUP_DEST="/home/janic/Documents/Reverse Engeenering/OSS-Editing/Tests/DEST" -PID_FILE_NAME="pid" # Set diffrent, if multiple instances should run at once -LAST_BACKUP_FILE_NAME="LAST_BACKUP" -DISKSPACE_WARNING_SOFT=80 #Warn if the Diskspace is running out -DISKSPACE_WARNING_HARD=95 #Stop the Backup from execution -BACKUP_DAYS="1234567" # 1 = Monday, Example (Saturday no backup: "123457"- Used for excluding certain days -BACKUP_TODAY="no" # Use this config to overwrite (Only use if manual executed) -BACKUP_RSYNC_ARG=("-av" "--delete") # Save Rsync-Options as a array, else it will parse all options as one String - -# Information Gathering -if [ -f $CONFIG_FILE ] -then - source "$CONFIG_FILE" -fi - -## Variable Generation -DATE=$(date $DATE_FORMAT) -BACKUP_DEST_CONFIG=$BACKUP_DEST/Config -PID_FILE="$BACKUP_DEST_CONFIG/$PID_FILE_NAME" -BACKUP_DEST_LOG="$BACKUP_DEST/Logs" -LOG_FILE_NAME="Logfile_$DATE" -LOG_FILE=$BACKUP_DEST_LOG/$LOG_FILE_NAME -BACKUP_DEST_DATA=$BACKUP_DEST/Data -BACKUP_DEST_FULL=$BACKUP_DEST_DATA/Full -BACKUP_LAST_SUCCESSFUL=$BACKUP_DEST_CONFIG/$LAST_BACKUP_FILE_NAME -if [ -f "$BACKUP_LAST_SUCCESSFUL" ] -then - BACKUP_INCREMENTAL_NAME="$BACKUP_NAME""_""$(cat "$BACKUP_LAST_SUCCESSFUL")" - BACKUP_DEST_INCREMENTAL=$BACKUP_DEST_DATA/$BACKUP_INCREMENTAL_NAME -fi -SCRIPT_SUCCESSFUL=false - -# Functions -## LOG / Console-Output -function Log() { # Usage: Log Message ?Soudlevel?[silent, noisy, exit] ?State?[info, notice, warn, err] - Timestamp - if [ -z "$3" ] - then - case "$3" in - info) - tput setaf 4 setab 0 # Blue - ;; - notice) - tput setaf 2 setab 0 bold # Green Bold - ;; - warn) - tput setaf 3 setab 0 bold # Yellow Bold - ;; - err) - tput setaf 1 setab 0 bold # Red Bold - ;; - *) - tput sgr0 # Reset tput profile - ;; - esac - fi - case "$2" in - silent) - echo "$TIME : $1" | tee "$LOG_FILE" - ;; - noisy) - echo "$TIME : $1" | tee "$LOG_FILE" - ;; - exit) - echo "$TIME : Exiting cause: $1" | tee "$LOG_FILE" - End - ;; - *) - echo "$TIME : Internal error - False use of Log-Function" - echo "$TIME : Additional Information: $1" - ;; - esac - if [ -z "$3" ] - then - tput sgr0 # Reset tput profile - fi -} -## Timestamp -function Timestamp() { - TIME=$(date $TIME_FORMAT) -} -## Ending Function -function End() { - if [ $SCRIPT_SUCCESSFUL = true ] - then - echo "Backup Successful" > "$LOG_FILE" - echo "$DATE" > "$BACKUP_LAST_SUCCESSFUL" - rm "$PID_FILE" - else - echo "Backup not Successful" > "$LOG_FILE" - fi -} -## Diskspace Check -function check_diskspace() { - USED_DISKSPACE=$(df "$BACKUP_DEST" | tail -n1 | cut -d"%" -f 1 | rev | cut -d " " -f 1 | rev) - if [[ $USED_DISKSPACE -ge $DISKSPACE_WARNING_HARD ]] - then - Log "Diskspace running out, Stoping Backup" "exit" "err" - Log "Diskspace used: $USED_DISKSPACE%" "exit" "err" - elif [[ $USED_DISKSPACE -ge $DISKSPACE_WARNING_SOFT ]] - then - Log "Diskspace running out!" "noisy" "warn" - Log "Diskspace used: $USED_DISKSPACE%" "noisy" "warn" - else - Log "Diskspace used: $USED_DISKSPACE%" "noisy" "info" - fi -} -function check_FileStructure() { - $BACKUP_DEST -} -# Script -## Check if Configfile exists -if [ ! -f $CONFIG_FILE ] -then - Log "Missing Configfile" "noisy" "warn" -fi -## Check if TUBS is still running -if [ -e "$PID_FILE" ] -then - Log "Another TUBS is running with PID $(cat "$PID_FILE" )" "exit" "err" -else - Log "Starting Backup" - echo $$ > "$PID_FILE" -fi -## Check day of Week -if [ $BACKUP_TODAY == "yes" ] -then - Log "Forcing Backup Today" "noisy" "warn" -else - DAY_OF_WEEK=$(date +%u) - if [[ $BACKUP_DAYS == *"$DAY_OF_WEEK"* ]]; - then - Log "Today is a happy Backup Day" "noisy" "notice" - else - Log "Set Variable \$BACKUP_TODAY to yes, so the backup will be forced" "noisy" "notice" - Log "Today is sadly no Backup Day" "exit" "warn" - fi -fi - -## Check diskspace -check_diskspace - -## Check Filestructure and create Missing -if [ ! -d "$BACKUP_DEST" ] -then - Log "First Backup? No problem. Creating Backup Folder" "noisy" "notice" -fi -mkdir -p "$BACKUP_DEST" -mkdir -p "$BACKUP_DEST_CONFIG" -mkdir -p "$BACKUP_DEST_FULL" -mkdir -p "$BACKUP_DEST_LOG" -for BACKUP_SRC_DIR in "${BACKUP_SRC_ARRAY[@]}" -do - mkdir -p "$BACKUP_DEST_FULL/$BACKUP_SRC_DIR" - ## Create Backups with Rsync - BACKUP_SRC_DIR_NAME=$(echo "$BACKUP_SRC_DIR" | rev | cut -d "/" -f1 | rev) - rsync "${BACKUP_RSYNC_ARG[@]}" "$BACKUP_SRC_DIR" --backup-dir="$BACKUP_DEST_INCREMENTAL" "$BACKUP_DEST_FULL/$BACKUP_SRC_DIR_NAME" -done - -SCRIPT_SUCCESSFUL=true -Log "Backup Finished" "exit" "notice" \ No newline at end of file diff --git a/OSS-Editing/oss-backup.sh b/OSS-Editing/oss-backup.sh deleted file mode 100755 index 7f9f738..0000000 --- a/OSS-Editing/oss-backup.sh +++ /dev/null @@ -1,302 +0,0 @@ -#!/bin/bash -# Copyright (c) 2012 Peter Varkoly Nürnberg, Germany. All rights reserved. -# oss-backup -# -# $Id: oss-backup,v 1.10 2007/07/18 16:43:22 pv Exp $ -# - -LOGFILE=/var/log/oss-backup.log -DATE=$(date +%Y-%m-%d-%H-%M) -#TODO Make all variables configurable. -MYSQLDUMP_OPTIONS="--lock-tables --add-drop-database --add-locks --quote-names --opt --create-options" -MAILADDR="admin" -FORCE="no" -VERBOSE="yes" -CONFIG=/etc/sysconfig/schoolserver -RSYNCPARS=" -aA --delete --size-only " -LIMIT=80 -DAY_OF_WEEK=$( date +%u ) - -if [ -e /var/adm/oss/BackupRunning ] -then - BPID=$( cat /var/adm/oss/BackupRunning ) - if [ -d /proc/$BPID ]; then - echo "An other backup process is running with PID: $BPID" - exit 1; - fi -fi - -echo $$ > /var/adm/oss/BackupRunning - -function TheEnd(){ - rm /var/adm/oss/BackupRunning - echo $DATE > /var/adm/backup/LAST_BACKUP - if [ "$2" ]; then - LOG "$2 $1"; - fi - exit $1 -} - -function usage (){ - echo - echo "Usage: $(basename $0) [OPTION] " - echo " -h|--help : help (this message)" - echo " -f : force backup (even if it's disabled in config)" - echo " -v : be verbose" - echo - echo " Use this script to immediately create a backup of your OSS." - echo " You can find the configuration in $CONFIG." - echo " Feel free to read the administration handbook for further details." - echo - TheEnd $1 -} - -function check_discspace() { - if [ "$SCHOOL_BACKUP_WARNING_LIMIT" ]; then - LIMIT=$SCHOOL_BACKUP_WARNING_LIMIT - fi - - USED=$(df $1 | tail -n1 | awk '{ print $(NF-1) }' | sed s/%//) - if [ $USED -gt $LIMIT ]; then - { - AVAIL=$(df -h $1 | tail -n1 | awk '{ print $(NF-2) }') - echo "WARNING: only $AVAIL space available on $1." | tee -a $LOGFILE - } | mail -s "BACKUP WARNING from $0" $MAILADDR - fi -} - -function LOG() { - LOG_DATE=`date "+%b %d %H:%M:%S"` - HOST=`hostname` - echo "$LOG_DATE $HOST oss-backup: $1" >> $LOGFILE - if [ "$VERBOSE" = "yes" ]; then - echo "$1" - fi -} - -while getopts 'fhv --long help --' OPTION ; do - case $OPTION in - h|H|help) usage 0 - ;; - f) FORCE="yes" - ;; - v) VERBOSE="yes" - ;; - esac -done - -shift $(( OPTIND - 1 )) - -if [ ! -f $CONFIG ]; then - echo -e "\033[0;31;1mThis script is for Open School Server only!\033[\0m" - echo -e "\033[0;31;1m********* exiting *********\033[\0m" - TheEnd 1 -fi - -# Read the configuration -. $CONFIG -if [ -z "$SCHOOL_BACKUP_DAYS" ]; then - SCHOOL_BACKUP_DAYS="1234567" -fi -if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_ACL" = "yes" ]; then - RSYNCPARS=" -a --delete " -fi - -if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_OWNER" = "yes" ]; then - RSYNCPARS=" -r --delete " -fi - -if [ "${SCHOOL_BACKUP_DAYS/$DAY_OF_WEEK/}" = $SCHOOL_BACKUP_DAYS -a "$FORCE" != "yes" ]; then - LOG "********** No backup needed today **********" - exit 0; -fi - -MAILADDR="admin@$SCHOOL_DOMAIN" - -if [ "$SCHOOL_BACKUP" = "yes" ] || [ "$FORCE" = "yes" ] ; then - LOG "********** Starting Backup **********" - - if [ "$SCHOOL_BACKUP_START_CMD" ]; then - eval $SCHOOL_BACKUP_START_CMD - fi - if [ -e /var/adm/backup/LAST_BACKUP ]; then - LAST_BACKUP=`cat /var/adm/backup/LAST_BACKUP` - else - LAST_BACKUP=$DATE - fi - # check needed configs - if [ -z $SCHOOL_BACKUP_FULL_DIR ]; then - VERBOSE="yes" - LOG "No SCHOOL_BACKUP_FULL_DIR defined - exiting" - TheEnd 1 - fi - check_discspace $SCHOOL_BACKUP_FULL_DIR - if [ -z $SCHOOL_BACKUP_INC_DIR ]; then - VERBOSE="yes" - LOG "No SCHOOL_BACKUP_INC_DIR defined - using $SCHOOL_BACKUP_FULL_DIR instead" - SCHOOL_BACKUP_INC_DIR=$SCHOOL_BACKUP_FULL_DIR - else - check_discspace $SCHOOL_BACKUP_INC_DIR - fi - - #create the backup direcktory - BACKUP_DIR="$SCHOOL_BACKUP_INC_DIR/$LAST_BACKUP" - mkdir -p $BACKUP_DIR - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - touch $SCHOOL_BACKUP_FULL_DIR/DO_BACKUP - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - export BACKUP_DIR - export SCHOOL_BACKUP_FULL_DIR - if [ "$SCHOOL_BACKUP_CHECK_MOUNT" = "yes" ]; then - mount | grep -q "$SCHOOL_BACKUP_FULL_DIR" || { - LOG "Unable to mount $SCHOOL_BACKUP_FULL_DIR" - TheEnd 5 - } - mount | grep -q "$SCHOOL_BACKUP_INC_DIR" || { - LOG "Unable to mount $SCHOOL_BACKUP_INC_DIR" - TheEnd 5 - } - fi - - # copy sysconfig file schoolconf to the base for simple recovery - cp /etc/sysconfig/schoolserver $SCHOOL_BACKUP_FULL_DIR/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - # save custom squidGuard database - LOG "Syncing custom squidGuard database" - mkdir -p $SCHOOL_BACKUP_FULL_DIR/var/lib/squidGuard/db/custom/ - mkdir -p $BACKUP_DIR/var/lib/squidGuard/db/custom/ - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/var/lib/squidGuard/db/custom/ \ - /var/lib/squidGuard/db/custom/ \ - $SCHOOL_BACKUP_FULL_DIR/var/lib/squidGuard/db/custom/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - LOG "Syncing samba" - if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_ACL" = "yes" ]; then - test -e $SCHOOL_BACKUP_FULL_DIR/samba_facls.gz && mv $SCHOOL_BACKUP_FULL_DIR/samba_facls.gz $BACKUP_DIR - getfacl --absolute-names -R /var/lib/samba/ | gzip > $SCHOOL_BACKUP_FULL_DIR/samba_facls.gz - fi - mkdir -p $BACKUP_DIR/var/lib/samba/ - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/var/lib/samba/ /var/lib/samba/ $SCHOOL_BACKUP_FULL_DIR/var/lib/samba/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - # save /etc - must run after samba-backup otherwise secrets.tdb.bak is not saved - if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_ACL" = "yes" ]; then - LOG "Saving acls on /etc/" - if [ -e $SCHOOL_BACKUP_FULL_DIR/etc_facls.gz ]; then - mv $SCHOOL_BACKUP_FULL_DIR/etc_facls.gz $BACKUP_DIR/etc_facls.gz - fi - getfacl --skip-base --absolute-names -R /etc/ | gzip > $SCHOOL_BACKUP_FULL_DIR/etc_facls.gz - fi - LOG "Syncing /etc/" - mkdir -p $BACKUP_DIR/etc/ - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/etc/ /etc/ $SCHOOL_BACKUP_FULL_DIR/etc/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - - # save /root (needed already for ssh-key files) - LOG "Syncing /root/" - mkdir -p $BACKUP_DIR/root/ - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/root/ /root/ $SCHOOL_BACKUP_FULL_DIR/root/ - - if [ "$SCHOOL_BACKUP_HOME" = "yes" ]; then - if [ "$SCHOOL_BACKUP_CAN_NOT_SAVE_ACL" = "yes" ]; then - LOG "Saving acls on /home/" - if [ -e $SCHOOL_BACKUP_FULL_DIR/home_facls.gz ]; then - mv $SCHOOL_BACKUP_FULL_DIR/home_facls.gz $BACKUP_DIR/home_facls.gz - fi - getfacl --skip-base --absolute-names -R /home/ | gzip > $SCHOOL_BACKUP_FULL_DIR/home_facls.gz - fi - LOG "Syncing /home/" - test -e /usr/share/oss/templates/exclude-from-home-backup || touch /usr/share/oss/templates/exclude-from-home-backup - # If $SCHOOL_BACKUP_FULL_DIR equal $SCHOOL_BACKUP_INC_DIR we make hartlinks - if [ $SCHOOL_BACKUP_FULL_DIR = $SCHOOL_BACKUP_INC_DIR -a "$SCHOOL_BACKUP_WITH_HARDLINK" = "yes" ]; then - if [ -d $SCHOOL_BACKUP_FULL_DIR/home/ ]; then - mv $SCHOOL_BACKUP_FULL_DIR/home/ $BACKUP_DIR/home/ - else - mkdir -p $BACKUP_DIR/home/ - fi - rsync $RSYNCPARS --exclude-from=/usr/share/oss/templates/exclude-from-home-backup --link-dest=$BACKUP_DIR/home/ /home/ $SCHOOL_BACKUP_FULL_DIR/home/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - else - mkdir -p $BACKUP_DIR/home/ - rsync $RSYNCPARS --exclude-from=/usr/share/oss/templates/exclude-from-home-backup -b --backup-dir=$BACKUP_DIR/home/ /home/ $SCHOOL_BACKUP_FULL_DIR/home/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - fi - fi - - if [ "$SCHOOL_BACKUP_CTOOL" = "yes" ]; then - LOG "Syncing itool" - mkdir -p $SCHOOL_BACKUP_FULL_DIR/srv/itool - mkdir -p $BACKUP_DIR/srv/itool - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/srv/itool/ /srv/itool/ $SCHOOL_BACKUP_FULL_DIR/srv/itool/ - if [ $? != 0 ]; then - TheEnd 6 "CAN_NOT_MAKE_BACKUP" - fi - fi - - if [ "$SCHOOL_BACKUP_DB" = "yes" ]; then - LOG "Syncing OSS Database" - mysqldump $MYSQLDUMP_OPTIONS --all-databases | gzip > $BACKUP_DIR/MYSQL.sql.gz - if [ $? != 0 ]; then - LOG " CAN_NOT_MAKE_BACKUP" - fi - fi - - if [ "$SCHOOL_BACKUP_MAIL" = "yes" ]; then - LOG "Syncing Mail Data" - for i in var/spool/imap/ var/lib/imap/; do - mkdir -p $SCHOOL_BACKUP_FULL_DIR/$i - mkdir -p $BACKUP_DIR/$i - rsync $RSYNCPARS -b --backup-dir=$BACKUP_DIR/$i /$i $SCHOOL_BACKUP_FULL_DIR/$i - if [ $? != 0 ]; then - LOG " CAN_NOT_MAKE_BACKUP" - fi - done - fi - - # Now we make recovery easy - if [ -f /usr/share/oss/tools/oss_recover.sh ]; then - cp -f /usr/share/oss/tools/oss_recover.sh $SCHOOL_BACKUP_FULL_DIR/ - chmod 750 $SCHOOL_BACKUP_FULL_DIR/oss_recover.sh - chown root:root $SCHOOL_BACKUP_FULL_DIR/oss_recover.sh - fi - if [ -f /usr/share/doc/packages/openschool-base/oss_recover.readme ]; then - cp -f /usr/share/doc/packages/openschool-base/oss_recover.readme $SCHOOL_BACKUP_FULL_DIR/ - fi - - # Execute custom scripts - if [ "$SCHOOL_BACKUP_CUSTOM_SCRIPTS" ]; then - for i in $SCHOOL_BACKUP_CUSTOM_SCRIPTS - do - LOG "Starting $i" - $i $BACKUP_DIR $SCHOOL_BACKUP_FULL_DIR - done - fi - - # create mark for last backup - DATE=`date +%Y-%m-%d-%H-%M` - LOG "********** Backup finished **********" - echo $DATE > /var/adm/backup/LAST_BACKUP - if [ "$SCHOOL_BACKUP_STOP_CMD" ]; then - eval $SCHOOL_BACKUP_STOP_CMD - fi - -fi -TheEnd