]> Frank Brehm's Git Trees - my-stuff/backup.git/commitdiff
Auf den vorherigen Stand gebracht
authorFrank Brehm <frank@brehm-online.com>
Wed, 2 Nov 2011 07:55:24 +0000 (08:55 +0100)
committerFrank Brehm <frank@brehm-online.com>
Wed, 2 Nov 2011 07:55:24 +0000 (08:55 +0100)
bin/backup-per-ftp.pl
bin/backup-post.sh
bin/backup-svn-full.sh [new file with mode: 0755]
bin/backup-svn-inc.sh [new file with mode: 0755]
bin/backup-svn.sh [new file with mode: 0755]
bin/backup-wrapper.sh
etc/config.yml
etc/log4perl.conf
lib/FrBr/Backup/App.pm

index a89f87a69b1113f04aae8748c2bf64483c60f9a1..3e0b99ea9efb6ec8b32bc9d36bbcde96ee9be5ba 100755 (executable)
@@ -1,8 +1,5 @@
 #!/usr/bin/perl
 
-# $Id$
-# $URL$
-
 use strict;
 use warnings;
 
index 1fe6fa8e90a1b7bea4852f1f7df69873b418f843..e210fde2bcd304b1b686b5f8b51f8ac291489ddb 100755 (executable)
@@ -27,4 +27,6 @@ echo
 echo "[`date`]: Backup beendet."
 echo
 
+exit 0
+
 # vim: noai : ts=4 fenc=utf-8 filetype=sh : expandtab
diff --git a/bin/backup-svn-full.sh b/bin/backup-svn-full.sh
new file mode 100755 (executable)
index 0000000..afc424f
--- /dev/null
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib64/subversion/bin
+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=
+
+BACKUP_SCRIPT=$( realpath $( dirname $0 )/backup-svn.sh )
+
+if [ ! -x ${BACKUP_SCRIPT} ] ; then
+       printf "Script %s exitiert nicht oder ist nicht ausführbar.\n" ${BACKUP_SCRIPT} >&2
+       exit 5
+fi
+
+BACKUP_DIR=/var/backup/svn
+test -d ${BACKUP_DIR} || mkdir -p ${BACKUP_DIR} || exit 5
+cd ${BACKUP_DIR}
+
+echo
+echo "[$( date +'%Y-%m-%d %H:%M:%S' )]: Starte Full Backup der Subversion Repositories"
+echo
+
+printf "Lösche vorhergehende Backups ... "
+rm svn*
+printf "OK\n"
+
+${BACKUP_SCRIPT}
+
+echo "Linke Dumps nach /var/backup ..."
+for dump in svn*.dump.gz ; do
+       if [ -f "${dump}" ] ; then
+               target="/var/backup/${dump}"
+               if [ ! -f "${target}" ] ; then
+                       ln "${dump}" "${target}"
+               fi
+       fi
+done
+
+svn_md5_file=/var/backup/svn.md5
+echo "Erstelle MD5-Checksummendatei ${svn_md5_file} ..."
+cp /dev/null ${svn_md5_file}
+for file in svn*.dump.gz.md5 ; do
+       if [ -f "${file}" ] ; then
+               cat "${file}"  | sed 's|/var/backup/svn/||' >> ${svn_md5_file}
+       fi
+done
+
+echo
+echo "[$( date +'%Y-%m-%d %H:%M:%S' )]: Full Backup der Subversion Repositories beendet"
+
+# vim: noai : ts=4 fenc=utf-8 filetype=sh
diff --git a/bin/backup-svn-inc.sh b/bin/backup-svn-inc.sh
new file mode 100755 (executable)
index 0000000..1a4ccaf
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib64/subversion/bin
+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=
+
+BACKUP_SCRIPT=$( realpath $( dirname $0 )/backup-svn.sh )
+
+if [ ! -x ${BACKUP_SCRIPT} ] ; then
+       printf "Script %s exitiert nicht oder ist nicht ausführbar.\n" ${BACKUP_SCRIPT} >&2
+       exit 5
+fi
+
+BACKUP_DIR=/var/backup/svn
+test -d ${BACKUP_DIR} || mkdir -p ${BACKUP_DIR} || exit 5
+cd ${BACKUP_DIR}
+
+echo
+echo "[$( date +'%Y-%m-%d %H:%M:%S' )]: Starte Incremental Backup der Subversion Repositories"
+echo
+
+${BACKUP_SCRIPT}
+
+echo
+echo "[$( date +'%Y-%m-%d %H:%M:%S' )]: Full Incremental der Subversion Repositories beendet"
+
+# vim: noai : ts=4 fenc=utf-8 filetype=sh
diff --git a/bin/backup-svn.sh b/bin/backup-svn.sh
new file mode 100755 (executable)
index 0000000..f0c5948
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/bash
+
+export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib64/subversion/bin
+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=
+
+BACKUP_DIR=/var/backup/svn
+test -d ${BACKUP_DIR} || mkdir -p ${BACKUP_DIR} || exit 5
+cd ${BACKUP_DIR}
+
+for repo_base in /var/lib/svn-repos /var/lib/svn-repos-priv ; do
+#for repo_base in /var/lib/svn-repos ; do
+
+       test -d ${repo_base} || continue
+
+       prefix=$( basename ${repo_base} | sed 's/svn-repos//' )
+       printf "\nSvn-Basedir: %s\n" ${repo_base}
+
+       for repo in ${repo_base}/* ; do
+
+               test -d ${repo} || continue
+
+               repo_name=$( basename ${repo} )
+
+               cur_revision=$( svnlook youngest ${repo} )
+               if [ "$?" != "0" ] ; then
+                       printf "Verzeichnis %s ist kein Subversion Repository.\n" ${repo} >&2
+                       continue
+               fi
+
+               changed=$( svnlook date -r ${cur_revision} ${repo} )
+               date_str=$( echo ${changed} | awk '{ print $1 "_" $2 }' )
+               dumpfile=${BACKUP_DIR}/svn${prefix}.${repo_name}.full.${cur_revision}.${date_str}.dump
+
+        rev_file=${BACKUP_DIR}/svn${prefix}.${repo_name}.revision
+               last_revision=
+               dump_revisions="-r 0:${cur_revision}"
+        if [ -f ${rev_file} ] ; then
+                       last_revision=$( cat ${rev_file} | sed 's/[^0-9]//g' )
+            if [ "${last_revision}" != "" ] ; then
+                               last_revision=$(( last_revision + 1 ))
+                               if [ "${last_revision}" -gt "${cur_revision}" ] ; then
+                                       printf "\n[$( date +'%Y-%m-%d %H:%M:%S' )]\n"
+                                       printf "Dump Repository %s ist auf dem neuestem Stand.\n" ${repo}
+                                       continue
+                               fi
+                               dumpfile=${BACKUP_DIR}/svn${prefix}.${repo_name}.inc.${cur_revision}.${date_str}.dump
+                               dump_revisions="--incremental -r ${last_revision}:${cur_revision}"
+                       else
+                               rm ${rev_file}
+                       fi
+               fi
+
+               printf "\n[$( date +'%Y-%m-%d %H:%M:%S' )]\n"
+               printf "Dumping Repository %s nach %s\n" ${repo} "${dumpfile}.gz"
+               printf "    (Revision %d, Letzte Änderung: %s)\n" ${cur_revision} "${changed}"
+               md5_file=${dumpfile}.gz.md5
+               #set -x
+               svnadmin dump --quiet ${dump_revisions} ${repo} | gzip -9 >"${dumpfile}.gz"
+               md5sum "${dumpfile}.gz" >${md5_file}
+               echo ${cur_revision} >${rev_file}
+               #set +x
+
+       done
+
+done
+
+# vim: noai : ts=4 fenc=utf-8 filetype=sh
index a0dea1d0f79123a37119a14e67206d7d141e064d..cc0d128a3880a90c9c41e155aef5217840c09eec 100755 (executable)
@@ -19,6 +19,8 @@ export LC_MEASUREMENT=de_DE.utf8
 export LC_IDENTIFICATION=de_DE.utf8
 export LC_ALL=
 
+MY_HOSTNAME=$( hostname | perl -p -E '$_ =~ s/^(.)/uc($1)/e;' )
+
 LOG_NEW=${LOG}.new
 
 MY_UID=$( id -u )
@@ -30,12 +32,13 @@ fi
 BASEDIR=$(dirname $0)
 
 BACKUP_PRE_SCRIPT="${BASEDIR}/backup-pre.sh"
+BACKUP_SVN_SCRIPT="${BASEDIR}/backup-svn-full.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} ; do
+for S in ${BACKUP_PRE_SCRIPT} ${BACKUP_SVN_SCRIPT} ${BACKUP_SCRIPT} ${BACKUP_POST_SCRIPT} ; do
     if [ ! -x ${S} ] ; then
         echo "Script '${S}' fehlt." >&2
         ALL_SCRIPTS_FOUND=0
@@ -51,12 +54,20 @@ if [ "${ALL_SCRIPTS_FOUND}" == "0" ] ; then
 fi
 
 cp /dev/null ${LOG_NEW}
-for S in ${BACKUP_PRE_SCRIPT} ${BACKUP_SCRIPT} ${BACKUP_POST_SCRIPT} ; do
+echo "Backupergebnisse:" >>${LOG_NEW}
+echo "=================" >>${LOG_NEW}
+echo                     >>${LOG_NEW}
+for S in ${BACKUP_PRE_SCRIPT} ${BACKUP_SVN_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}
+    RES=$?
+    echo -e "Rückgabewert von '${S}': ${RES}\n" | tee -a ${LOG_NEW} 
+    if [ "${RES}" != "0" ] ; then
+        break
+    fi
 done
 
 cat ${LOG_NEW} >> ${LOG}
-echo -e "Backupergebnisse:\n" | nail -s "Backup Sarah [`date +'%Y-%m-%d'`]" -a "${LOG_NEW}" $RCPT
+echo "" | mailx -s "Backup ${MY_HOSTNAME} [`date +'%Y-%m-%d'`]" -q "${LOG_NEW}" $RCPT
 
 # vim: noai : ts=4 fenc=utf-8 filetype=sh : expandtab
index 842d4cee3d7c56bfd527ec2bc7887183e558f421..4a8fd0e118a21e0dfc6628725074d3caa9dd62ec 100644 (file)
@@ -3,9 +3,6 @@
 #
 # partielle lokale Änderungen können in einer 'config_local.yml' vorgenommen werden
 #
-# $Id: config.yml 512 2010-05-05 08:00:18Z fbrehm $
-# $URL: http://svn.technik.berlin.strato.de/svn-os/trunk/sd-mailversand/etc/config.yml $
-#
 ---
 # Produktionsstatus: Darf nur 'prod', 'test' oder 'dev' annehmen.
 #production_state: prod
index a654870fc77292a2f4b0a0d670230d5f819929ed..63c9168182225ae5b1a9da4c171b2dd954985800 100644 (file)
@@ -5,9 +5,6 @@
 # Diese Konfiguration kann von einer log4perl_local.conf überschrieben werden.
 # (Kein Merging! - Siehe Log::Log4perl zu Details der Konfiguration)
 #
-# $Id$
-# $URL$
-#
 ##############################################################################
 
 # Root-Logger
index 35d1673c3e3da9b2fe8a9bb6b32dd5ef7fe97318..3c973c97ddf4ac8700698397330d03ac1b894cac 100644 (file)
@@ -1,8 +1,5 @@
 package FrBr::Backup::App;
 
-# $Id$
-# $URL$
-
 =head1 NAME
 
 FrBr::Backup::App
@@ -35,12 +32,7 @@ with 'MooseX::Daemonize::WithPidFile';
 
 # Versionitis
 
-my $Revis = <<'ENDE';
-    $Revision$
-ENDE
-$Revis =~ s/^.*:\s*(\S+)\s*\$.*/$1/s;
-
-use version; our $VERSION = qv("0.9.1"); $VERSION .= " r" . $Revis;
+use version; our $VERSION = qv("0.9.2");
 
 #############################################################################################