--- /dev/null
+#!/bin/sh
+
+BACKUP_DIR="${BACKUP_DIR:-/var/backup}"
+VHOSTS_DIR="${VHOSTS_DIR:-/var/www}"
+MY_CNF="${MY_CNF:-/root/.my.cnf.backup}"
+LDAP_DN="${LDAP_DN:-cn=frank,dc=brehm-online,dc=com}"
+LDAP_PW="${LDAP_PW:-up2UdLCE}"
+LDAP_SEARCH_BASE="${LDAP_SEARCH_BASE:-dc=brehm-online,dc=com}"
+
+TAR_MAX_VOLUME_SIZE=${TAR_MAX_VOLUME_SIZE:-660m}
+
+#export LANG=
+#export LC_CTYPE=en_US.UTF-8
+#export LC_NUMERIC=POSIX
+#export LC_TIME=POSIX
+#export LC_COLLATE=POSIX
+#export LC_MONETARY=POSIX
+#export LC_MESSAGES=POSIX
+#export LC_PAPER=POSIX
+##export LC_NAME=POSIX
+#export LC_ADDRESS=POSIX
+#export LC_TELEPHONE=POSIX
+#export LC_MEASUREMENT=POSIX
+#export LC_IDENTIFICATION=POSIX
+
+#######################################################################
+
+do_backup_fs( ) {
+
+ DIR2BACKUP=$1
+ TARNAME=$2
+ TYPE=$3
+ DO_COMPRESS=$4
+
+ EXT=tar
+ TAR_CMD_OPTS="--create --preserve --sparse"
+ SPLIT_CMD_OPTS="--bytes=${TAR_MAX_VOLUME_SIZE}"
+ if [ -n "${DO_COMPRESS}" ] ; then
+ EXT=tbz
+ TAR_CMD_OPTS="${TAR_CMD_OPTS} --bzip2"
+ fi
+ if [ -n "${VERBOSE}" -a "${VERBOSE}" != "0" ] ; then
+ TAR_CMD_OPTS="${TAR_CMD_OPTS} --verbose"
+ SPLIT_CMD_OPTS="${SPLIT_CMD_OPTS} --verbose"
+ fi
+ TAR_CMD_OPTS="${TAR_CMD_OPTS} -f"
+ TARFILE="backup-${TARNAME}.${TYPE}.${EXT}"
+ TARFILE_ABS=${BACKUP_DIR}/${TARFILE}
+
+ OPWD=`pwd`
+
+ echo
+ echo "Sichere ${DIR2BACKUP} ..."
+
+ if echo "${DIR2BACKUP}" | grep "^/" >/dev/null ; then
+ cd /
+ DIR2BACKUP=`echo "${DIR2BACKUP}" | sed 's#^/*##'`
+ fi
+
+ echo " [`date`]: beginne TAR"
+# echo "tar ${TAR_CMD_OPTS} - ${DIR2BACKUP} | split ${SPLIT_CMD_OPTS} - ${TARFILE_ABS}"
+ tar ${TAR_CMD_OPTS} - ${DIR2BACKUP} | split ${SPLIT_CMD_OPTS} - ${TARFILE_ABS}.
+ echo " [`date`]: fertig TAR"
+
+ if [ ! -f ${TARFILE_ABS}.ab -a -f ${TARFILE_ABS}.aa ] ; then
+ echo " [`date`]: Benenne ${TARFILE_ABS}.aa in ${TARFILE_ABS} um ..."
+ mv "${TARFILE_ABS}.aa" "${TARFILE_ABS}"
+ fi
+
+ cd ${OPWD}
+
+}
+
+#######################################################################
+
+do_backup_mysql( ) {
+
+ TYPE="$1"
+ DUMPFILE="mysql.dump.${TYPE}.bz2"
+ DUMPFILE_ABS="${BACKUP_DIR}"/"${DUMPFILE}"
+
+ V_PARAM=""
+ if [ -n "${VERBOSE}" -a "${VERBOSE}" != "0" ] ; then
+ V_PARAM="--verbose"
+ fi
+
+ echo
+ echo "Sichere MySQL-Datenbank ..."
+ echo " [`date`]: beginne DUMP"
+
+ mysqldump --defaults-extra-file="$MY_CNF" \
+ --add-locks \
+ --skip-opt \
+ --comments \
+ --create-options \
+ --hex-blob \
+ --routines \
+ --triggers \
+ --lock-tables \
+ --quote-names \
+ --add-drop-table \
+ ${V_PARAM} --all-databases | bzip2 -c >"${DUMPFILE_ABS}"
+
+ echo " [`date`]: fertig DUMP"
+
+}
+
+#######################################################################
+
+do_backup_ldap( ) {
+
+ TYPE="$1"
+ DUMPFILE=ldap.dump.${TYPE}.gz
+ DUMPFILE_ABS=${BACKUP_DIR}/${DUMPFILE}
+
+ V_PARAM=""
+ if [ -n "${VERBOSE}" -a "${VERBOSE}" != "0" ] ; then
+ V_PARAM="-v"
+ fi
+
+ echo
+ echo "Sichere LDAP-Datenbank ..."
+ echo " [`date`]: beginne DUMP"
+ ldapsearch -D "${LDAP_DN}" -x ${V_PARAM} -h localhost -z 10000 -w "${LDAP_PW}" -b "${LDAP_SEARCH_BASE}" | gzip -9 >${DUMPFILE_ABS}
+ echo " [`date`]: fertig DUMP"
+
+}
+
+#######################################################################
+
+remove_all( ) {
+ echo
+ echo "Lösche alle lokalen Backups unter ${BACKUP_DIR} ..."
+ find ${BACKUP_DIR} -type f -exec rm -v {} \;
+}
+
+#######################################################################
+
+# vim: noai : ts=4 fenc=utf-8 filetype=sh : expandtab
--- /dev/null
+#!/bin/bash
+
+#export VERBOSE=1
+
+MY_UID=$( id -u )
+if [ "${MY_UID}" != "0" ] ; then
+ echo "Nur root darf dieses Script ausfrühren." >&2
+ exit 20
+fi
+
+LIBDIR=$(dirname $0)
+
+FUNC_LIB="${LIBDIR}/backup-functions.rc"
+if [ ! -f "${FUNC_LIB}" ] ; then
+ echo "Datei '${FUNC_LIB}' nicht gefunden." >&2
+ exit 8
+fi
+. "${FUNC_LIB}"
+
+echo
+echo "[`date`]: Werfe Backup-Sets weg."
+echo
+
+remove_all
+
+echo
+echo "[`date`]: Backup beendet."
+echo
+
+# vim: noai : ts=4 fenc=utf-8 filetype=sh : expandtab
--- /dev/null
+#!/bin/bash
+
+#export VERBOSE=1
+
+MY_UID=$( id -u )
+if [ "${MY_UID}" != "0" ] ; then
+ echo "Nur root darf dieses Script ausfrühren." >&2
+ exit 20
+fi
+
+LIBDIR=$(dirname $0)
+
+FUNC_LIB="${LIBDIR}/backup-functions.rc"
+if [ ! -f "${FUNC_LIB}" ] ; then
+ echo "Datei '${FUNC_LIB}' nicht gefunden." >&2
+ exit 8
+fi
+. "${FUNC_LIB}"
+
+DATUM=$( date +'%Y-%m-%d' )
+
+echo
+echo "[`date`]: Beginne Backup."
+echo
+echo "Backup-Datum: ${DATUM}"
+echo
+
+cd /
+
+echo "Sichere Virtuelle Webhosts ..."
+if [ ! -d "${VHOSTS_DIR}" ] ; then
+ echo "Verzeichnis '${VHOSTS_DIR}' existiert nicht." >&2
+ exit 7
+fi
+
+#for vdir in "${VHOSTS_DIR}"/* ; do
+# if [ -d "${vdir}" ] ; then
+# d=`basename "${vdir}"`
+# if [ "${d}" == "fotoalbum" ] ; then
+# do_backup_fs "${vdir}" www."${d}" "${DATUM}"
+# else
+# do_backup_fs "${vdir}" www."${d}" "${DATUM}" 1
+# fi
+# fi
+#done
+
+do_backup_fs "/etc" "etc" "${DATUM}" 1
+do_backup_fs "/var/bind" "bind" "${DATUM}" 1
+do_backup_fs "/var/lib/portage" "lib-portage" "${DATUM}" 1
+do_backup_fs "/var/lib/ip*tables" "iptables" "${DATUM}" 1
+do_backup_fs "/var/lib/openldap-*" "openldap" "${DATUM}" 1
+do_backup_fs "/var/lib/svn-repos" "subversion" "${DATUM}" 1
+do_backup_fs "/var/log" "var-log" "${DATUM}" 1
+do_backup_fs "/root" "root" "${DATUM}" 1
+
+for dir in /home/* ; do
+
+ base=`basename "${dir}"`
+ if echo ${base} | grep "^aquota\." >/dev/null ; then
+ continue
+ fi
+ if [ "${base}" = "lost+found" ] ; then
+ continue
+ fi
+
+ do_backup_fs "${dir}" home."${base}" "${TYPE}" 1
+
+done
+
+do_backup_mysql "${TYPE}"
+do_backup_ldap "${TYPE}"
+
+echo
+echo "Backup-Verzeichnis '${BACKUP_DIR}':"
+echo
+ls -lA "${BACKUP_DIR}"
+
+echo
+echo "Plattenauslastung Backup-Verzeichnis '${BACKUP_DIR}':"
+echo
+df -k "${BACKUP_DIR}"
+
+echo
+echo "[`date`]: Vorbereitung Backup beendet."
+echo
+
+# vim: noai : ts=4 fenc=utf-8 filetype=sh : expandtab
--- /dev/null
+#!/bin/bash
+
+RCPT="frank@brehm-online.com"
+LOG="/var/log/ftp-backup/backup.log"
+export TZ="Europe/Berlin"
+
+export LANG=de_DE.UTF-8
+export LC_CTYPE=de_DE.utf8
+export LC_NUMERIC=de_DE.utf8
+export LC_TIME=de_DE.utf8
+export LC_COLLATE=de_DE.utf8
+export LC_MONETARY=de_DE.utf8
+export LC_MESSAGES=de_DE.utf8
+export LC_PAPER=de_DE.utf8
+export LC_NAME=de_DE.utf8
+export LC_ADDRESS=de_DE.utf8
+export LC_TELEPHONE=de_DE.utf8
+export LC_MEASUREMENT=de_DE.utf8
+export LC_IDENTIFICATION=de_DE.utf8
+export LC_ALL=
+
+LOG_NEW=${LOG}.new
+
+MY_UID=$( id -u )
+if [ "${MY_UID}" != "0" ] ; then
+ echo "Nur root darf dieses Script ausfrühren." >&2
+ exit 20
+fi
+
+BASEDIR=$(dirname $0)
+
+BACKUP_PRE_SCRIPT="${BASEDIR}/backup-pre.sh"
+BACKUP_SCRIPT="${BASEDIR}/backup-per-ftp.pl"
+BACKUP_POST_SCRIPT="${BASEDIR}/backup-post.sh"
+FUNC_LIB="${BASEDIR}/backup-functions.rc"
+
+ALL_SCRIPTS_FOUND=1
+for S in ${BACKUP_PRE_SCRIPT} ${BACKUP_SCRIPT} ${BACKUP_POST_SCRIPT} ${FUNC_LIB} ; do
+ if [ ! -x ${S} ] ; then
+ echo "Script '${S}' fehlt." >&2
+ ALL_SCRIPTS_FOUND=0
+ fi
+done
+
+if [ "${ALL_SCRIPTS_FOUND}" == "0" ] ; then
+ exit 10
+fi
+
+cp /dev/null ${LOG_NEW}
+for S in ${BACKUP_PRE_SCRIPT} ${BACKUP_SCRIPT} ${BACKUP_POST_SCRIPT} ; do
+ echo "${S} 2>&1 </dev/null | tee -a ${LOG_NEW}"
+ ${S} 2>&1 </dev/null | tee -a ${LOG_NEW}
+done
+
+cat ${LOG_NEW} >> ${LOG}
+echo -e "Backupergebnisse:\n" | nail -s "Backup Sarah [`date +'%Y-%m-%d'`]" -a "${LOG_NEW}" $RCPT
+
+# vim: noai : ts=4 fenc=utf-8 filetype=sh : expandtab