diff options
-rw-r--r-- | Make.rules | 2 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | README | 4 | ||||
-rw-r--r-- | backup.in | 100 | ||||
-rw-r--r-- | beam.in | 77 | ||||
-rwxr-xr-x | cleaner.in | 85 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | doc/Makefile.am | 2 | ||||
-rw-r--r-- | doc/beam-backup.1in | 4 | ||||
-rw-r--r-- | doc/beam-cleaner.1in | 4 | ||||
-rw-r--r-- | doc/beam-list.1in | 4 | ||||
-rw-r--r-- | doc/beam-module.5in | 4 | ||||
-rw-r--r-- | doc/beam-restore.1in | 4 | ||||
-rw-r--r-- | doc/beam-s3.1in | 4 | ||||
-rw-r--r-- | doc/beam.1in | 4 | ||||
-rw-r--r-- | lib/beam/Makefile.am | 2 | ||||
-rw-r--r-- | lib/beam/common.in | 264 | ||||
-rwxr-xr-x | lib/beam/fs.sh | 186 | ||||
-rwxr-xr-x | lib/beam/ldap.sh | 2 | ||||
-rwxr-xr-x | lib/beam/postgres.sh | 106 | ||||
-rw-r--r-- | lib/beam/s3.sh | 114 | ||||
-rw-r--r-- | list.in | 68 | ||||
-rw-r--r-- | restore.in | 104 | ||||
-rw-r--r-- | s3.in | 58 |
25 files changed, 622 insertions, 590 deletions
@@ -1,5 +1,5 @@ # This file is part of BEAM -# Copyright (C) 2012 Sergey Poznyakoff +# Copyright (C) 2012-2014 Sergey Poznyakoff # # BEAM is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/Makefile.am b/Makefile.am index c65a39d..551f7b2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ # This file is part of BEAM -# Copyright (C) 2012 Sergey Poznyakoff +# Copyright (C) 2012-2014 Sergey Poznyakoff # # BEAM is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -1,5 +1,5 @@ -BEAM NEWS -- history of user-visible changes. 2013-08-05 -Copyright (C) 2012, 2013 Sergey Poznyakoff. +BEAM NEWS -- history of user-visible changes. 2014-03-19 +Copyright (C) 2012-2014 Sergey Poznyakoff. See the end of file for copying conditions. Please send mailutils bug reports to <gray@gnu.org.ua>. @@ -44,7 +44,7 @@ First release. ---------------------------------------------------------------------- Copyright information: -Copyright (C) 2012, 2013 Sergey Poznyakoff. +Copyright (C) 2012-2014 Sergey Poznyakoff. Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the @@ -1,5 +1,5 @@ BEAM README file. -Copyright (C) 2012 Sergey Poznyakoff +Copyright (C) 2012-2014 Sergey Poznyakoff See the end of file for copying conditions. * Introduction @@ -112,7 +112,7 @@ Send bug reports to <gray@gnu.org.ua>. * Copyright information: -Copyright (C) 2012 Sergey Poznyakoff +Copyright (C) 2012-2014 Sergey Poznyakoff Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that @@ -1,6 +1,6 @@ #! /bin/sh # This file is part of BEAM -# Copyright (C) 2012 Sergey Poznyakoff +# Copyright (C) 2012-2014 Sergey Poznyakoff # # BEAM is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,8 +23,8 @@ ts=`date +%Y%m%d`; week=`date +%U` if [ "$1" = "--wtf" ]; then - wtf $(basename $0) create a backup - exit 0 + wtf $(basename $0) create a backup + exit 0 fi load_config @@ -36,9 +36,9 @@ taroptions="-c -Hpax $backup_tar_options $backup_rsh_command" # Set it to "-v" to make script verbose if [ -n "$backup_verbose" ]; then - verbose=-v + verbose=-v else - verbose= + verbose= fi # Set it to "echo" to initiate dry-run mode. unset dry_run @@ -54,7 +54,7 @@ round=0 ########################################################### help() { - cat <<EOF + cat <<EOF usage: $0 [OPTIONS] makes incremental backup of that system @@ -71,7 +71,7 @@ OPTIONS: Report bugs to <@PACKAGE_BUGREPORT@> EOF - exit 0 + exit 0 } ########################################################### @@ -80,63 +80,63 @@ EOF while [ $# -ne 0 ] do - case $1 in - -v|--verbose) verbose="$verbose -v";; - -l|--logfile) shift; backup_logfile=$1;; - -n|--dry-run) dry_run=echo; backup_logfile=;; - -N|--no-logfile) backup_logfile=;; - -h|--help) help;; - -V|--version) print_version;; - -L|--level) shift; level=$1;; - -R|--round) shift; round=$1;; - --week) shift; week=$1;; - *) echo >&2 "$0: unrecognized option $1"; exit 1;; - esac - shift + case $1 in + -v|--verbose) verbose="$verbose -v";; + -l|--logfile) shift; backup_logfile=$1;; + -n|--dry-run) dry_run=echo; backup_logfile=;; + -N|--no-logfile) backup_logfile=;; + -h|--help) help;; + -V|--version) print_version;; + -L|--level) shift; level=$1;; + -R|--round) shift; round=$1;; + --week) shift; week=$1;; + *) echo >&2 "$0: unrecognized option $1"; exit 1;; + esac + shift done backup() { - logit "started" - - runhook prologue_hook - trap "runhook epilogue_hook" EXIT INT QUIT TERM - - if test -n "$backup_retain_interval" && - test $backup_retain_interval -gt 0; then - @LIBEXECDIR@/beam-cleaner --retain $backup_retain_interval $verbose \ + logit "started" + + runhook prologue_hook + trap "runhook epilogue_hook" EXIT INT QUIT TERM + + if test -n "$backup_retain_interval" && + test $backup_retain_interval -gt 0; then + @LIBEXECDIR@/beam-cleaner --retain $backup_retain_interval $verbose \ ${dry_run+--dry-run} --suffix $backup_suffix $backup_archive_dir - @LIBEXECDIR@/beam-cleaner --retain $backup_retain_interval $verbose \ + @LIBEXECDIR@/beam-cleaner --retain $backup_retain_interval $verbose \ ${dry_run+--dry-run} --suffix .db $backup_snapshot_dir - fi - - for item in $backup_items - do - eval type=\$${item}_type - ${type}_backup $item - done - - trap - EXIT INT QUIT TERM - runhook epilogue_hook - - logit "finished" + fi + + for item in $backup_items + do + eval type=\$${item}_type + ${type}_backup $item + done + + trap - EXIT INT QUIT TERM + runhook epilogue_hook + + logit "finished" } umask ${backup_umask:-077} prologue_hook="beam_lock $prologue_hook" if [ -n "$backup_logfile" ]; then - runhook openlog_hook - exec >>$backup_logfile - exec 2>&1 + runhook openlog_hook + exec >>$backup_logfile + exec 2>&1 fi if [ -z "$backup_notify_email" ]; then - backup + backup else - report=$backup_snapshot_dir/report.$$ - touch $report - backup 2>&1 | tee $report - mail_report $report - rm $report + report=$backup_snapshot_dir/report.$$ + touch $report + backup 2>&1 | tee $report + mail_report $report + rm $report fi @@ -1,4 +1,19 @@ #! /bin/sh +# This file is part of BEAM +# Copyright (C) 2012-2014 Sergey Poznyakoff +# +# BEAM is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# BEAM is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BEAM. If not, see <http://www.gnu.org/licenses/>. libdir=@LIBDIR@/beam set -e @@ -6,53 +21,53 @@ set -e set +e help() { - cat <<EOT + cat <<EOT usage: beam COMMAND [OPTIONS] [ITEM [ITEM...]] COMMANDS are: EOT - for cmd in @LIBEXECDIR@/beam-* - do - test -x $cmd && $cmd --wtf - done - wtf help display help page for a particular command - echo "" - echo "Report bugs to <@PACKAGE_BUGREPORT@>" - exit 0 + for cmd in @LIBEXECDIR@/beam-* + do + test -x $cmd && $cmd --wtf + done + wtf help display help page for a particular command + echo "" + echo "Report bugs to <@PACKAGE_BUGREPORT@>" + exit 0 } while [ $# -ne 0 ] do - case $1 in - -h|--help) help;; - -V|--version) print_version;; - --) shift; break;; - -*) echo >&2 "$0: unrecognized option $1"; exit 1;; - *) break;; - esac - shift + case $1 in + -h|--help) help;; + -V|--version) print_version;; + --) shift; break;; + -*) echo >&2 "$0: unrecognized option $1"; exit 1;; + *) break;; + esac + shift done if [ $# -eq 0 ]; then - error "command not specified" - abend 1 "try $0 --help for more details" + error "command not specified" + abend 1 "try $0 --help for more details" fi if [ $1 = "help" ]; then - shift - if [ $# -eq 0 ]; then - man 1 beam - else - man 1 beam-$1 - fi - exit $? + shift + if [ $# -eq 0 ]; then + man 1 beam + else + man 1 beam-$1 + fi + exit $? fi if [ -x @LIBEXECDIR@/beam-$1 ]; then - cmd=@LIBEXECDIR@/beam-$1 - shift - $cmd $@ + cmd=@LIBEXECDIR@/beam-$1 + shift + $cmd $@ else - error "unknown command" - abend 1 "try $0 --help for more details" + error "unknown command" + abend 1 "try $0 --help for more details" fi @@ -1,4 +1,19 @@ #! /bin/sh +# This file is part of BEAM +# Copyright (C) 2012-2014 Sergey Poznyakoff +# +# BEAM is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# BEAM is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BEAM. If not, see <http://www.gnu.org/licenses/>. libdir=@LIBDIR@/beam set -e @@ -29,27 +44,27 @@ EOF while [ $# -ne 0 ] do - case $1 in - -s|--suffix) shift; suffix=$1;; - -r|--retain) shift; retainweeks=$1;; - -v|--verbose) verbose=echo;; - -n|--dry-run) dry_run=echo; verbose=echo;; - -h|--help) help;; - --wtf) wtf $(basename $0) clean up old files; exit 0;; - --) shift; break;; - -*) echo >&2 "$0: unrecognized option $1" - exit 1;; - *) break - esac - shift + case $1 in + -s|--suffix) shift; suffix=$1;; + -r|--retain) shift; retainweeks=$1;; + -v|--verbose) verbose=echo;; + -n|--dry-run) dry_run=echo; verbose=echo;; + -h|--help) help;; + --wtf) wtf $(basename $0) clean up old files; exit 0;; + --) shift; break;; + -*) echo >&2 "$0: unrecognized option $1" + exit 1;; + *) break + esac + shift done case $# in -0) echo >&2 "$0: not enough arguments" - exit 1;; -1) dir=$1;; -*) echo >&2 "$0: too many arguments" - exit 1;; + 0) echo >&2 "$0: not enough arguments" + exit 1;; + 1) dir=$1;; + *) echo >&2 "$0: too many arguments" + exit 1;; esac thisweek=$(date +%U) @@ -58,31 +73,31 @@ thisweek=$(date +%U) # because weeks prior to 10 begin with 0 and therefore are processed # as octal numbers. This causes grief for weeks 08 and 09. if [ $thisweek -gt $retainweeks ]; then - lastweek=$(expr $thisweek - $retainweeks) + lastweek=$(expr $thisweek - $retainweeks) else - lastweek=$(expr $thisweek + 54 - $retainweeks) + lastweek=$(expr $thisweek + 54 - $retainweeks) fi $verbose \# removing from $dir files ending in $suffix and older than week $lastweek if [ -z "$suffix" ]; then - find $dir -maxdepth 1 -type f -printf '%f\n' + find $dir -maxdepth 1 -type f -printf '%f\n' else - find $dir -maxdepth 1 -type f -name "*$suffix" -printf '%f\n' + find $dir -maxdepth 1 -type f -name "*$suffix" -printf '%f\n' fi | while read name do - $verbose \# considering $name - week=$(expr "$name" : '[^-][^-]*-\([0-9][0-9]*\)-.*') - if [ $thisweek -ge $week ]; then - if [ $(expr $thisweek - $week) -gt $retainweeks ]; then - $verbose \# removing $name - $dry_run rm $dir/$name - fi - else - if [ $(expr $thisweek + 54 - $week) -gt $retainweeks ]; then - $verbose \# removing $name - $dry_run rm $dir/$name - fi - fi + $verbose \# considering $name + week=$(expr "$name" : '[^-][^-]*-\([0-9][0-9]*\)-.*') + if [ $thisweek -ge $week ]; then + if [ $(expr $thisweek - $week) -gt $retainweeks ]; then + $verbose \# removing $name + $dry_run rm $dir/$name + fi + else + if [ $(expr $thisweek + 54 - $week) -gt $retainweeks ]; then + $verbose \# removing $name + $dry_run rm $dir/$name + fi + fi done diff --git a/configure.ac b/configure.ac index a90c938..6e39a4a 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ # This file is part of BEAM -*- autoconf -*- -# Copyright (C) 2012, 2013 Sergey Poznyakoff +# Copyright (C) 2012-2014 Sergey Poznyakoff # # BEAM is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/doc/Makefile.am b/doc/Makefile.am index 846c1de..0d82900 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,5 +1,5 @@ # This file is part of BEAM -# Copyright (C) 2012 Sergey Poznyakoff +# Copyright (C) 2012-2014 Sergey Poznyakoff # # BEAM is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/doc/beam-backup.1in b/doc/beam-backup.1in index be45a44..2438d7b 100644 --- a/doc/beam-backup.1in +++ b/doc/beam-backup.1in @@ -1,5 +1,5 @@ .\" This file is part of BEAM -*- nroff -*- -.\" Copyright (C) 2012 Sergey Poznyakoff +.\" Copyright (C) 2012-2014 Sergey Poznyakoff .\" .\" BEAM is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by @@ -14,7 +14,7 @@ .\" You should have received a copy of the GNU General Public License .\" along with BEAM. If not, see <http://www.gnu.org/licenses/>. .\" -.TH BEAM\-BACKUP 1 "October 24, 2012" "BEAM" "BEAM User Reference" +.TH BEAM\-BACKUP 1 "March 19, 2014" "BEAM" "BEAM User Reference" .SH NAME beam\-backup \- create a back up. .SH SYNOPSIS diff --git a/doc/beam-cleaner.1in b/doc/beam-cleaner.1in index 36f2de7..59a39b4 100644 --- a/doc/beam-cleaner.1in +++ b/doc/beam-cleaner.1in @@ -1,5 +1,5 @@ .\" This file is part of BEAM -*- nroff -*- -.\" Copyright (C) 2012 Sergey Poznyakoff +.\" Copyright (C) 2012-2014 Sergey Poznyakoff .\" .\" BEAM is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by @@ -14,7 +14,7 @@ .\" You should have received a copy of the GNU General Public License .\" along with BEAM. If not, see <http://www.gnu.org/licenses/>. .\" -.TH BEAM\-CLEANER 1 "October 24, 2012" "BEAM" "BEAM User Reference" +.TH BEAM\-CLEANER 1 "March 19, 2014" "BEAM" "BEAM User Reference" .SH NAME beam\-cleaner \- clean up old backup files. .SH SYNOPSIS diff --git a/doc/beam-list.1in b/doc/beam-list.1in index 0614e81..57aa537 100644 --- a/doc/beam-list.1in +++ b/doc/beam-list.1in @@ -1,5 +1,5 @@ .\" This file is part of BEAM -*- nroff -*- -.\" Copyright (C) 2012 Sergey Poznyakoff +.\" Copyright (C) 2012-2014 Sergey Poznyakoff .\" .\" BEAM is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by @@ -14,7 +14,7 @@ .\" You should have received a copy of the GNU General Public License .\" along with BEAM. If not, see <http://www.gnu.org/licenses/>. .\" -.TH BEAM\-LIST 1 "October 24, 2012" "BEAM" "BEAM User Reference" +.TH BEAM\-LIST 1 "March 19, 2014" "BEAM" "BEAM User Reference" .SH NAME beam\-list \- list items included in backup .SH SYNOPSIS diff --git a/doc/beam-module.5in b/doc/beam-module.5in index f650c65..9ba239f 100644 --- a/doc/beam-module.5in +++ b/doc/beam-module.5in @@ -1,5 +1,5 @@ .\" This file is part of BEAM -*- nroff -*- -.\" Copyright (C) 2012 Sergey Poznyakoff +.\" Copyright (C) 2012-2014 Sergey Poznyakoff .\" .\" BEAM is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by @@ -14,7 +14,7 @@ .\" You should have received a copy of the GNU General Public License .\" along with BEAM. If not, see <http://www.gnu.org/licenses/>. .\" -.TH BEAM\-MODULE 5 "January 16, 2013" "BEAM" "BEAM Programmer Reference" +.TH BEAM\-MODULE 5 "March 19, 2014" "BEAM" "BEAM Programmer Reference" .SH NAME beam\-module \- format of .BR beam (1) diff --git a/doc/beam-restore.1in b/doc/beam-restore.1in index bbbfbba..6d24ad8 100644 --- a/doc/beam-restore.1in +++ b/doc/beam-restore.1in @@ -1,5 +1,5 @@ .\" This file is part of BEAM -*- nroff -*- -.\" Copyright (C) 2012 Sergey Poznyakoff +.\" Copyright (C) 2012-2014 Sergey Poznyakoff .\" .\" BEAM is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by @@ -14,7 +14,7 @@ .\" You should have received a copy of the GNU General Public License .\" along with BEAM. If not, see <http://www.gnu.org/licenses/>. .\" -.TH BEAM\-RESTORE 1 "October 24, 2012" "BEAM" "BEAM User Reference" +.TH BEAM\-RESTORE 1 "March 19, 2014" "BEAM" "BEAM User Reference" .SH NAME beam\-restore \- restore file system from a backup. .SH SYNOPSIS diff --git a/doc/beam-s3.1in b/doc/beam-s3.1in index 68dc66b..a295270 100644 --- a/doc/beam-s3.1in +++ b/doc/beam-s3.1in @@ -1,5 +1,5 @@ .\" This file is part of BEAM -*- nroff -*- -.\" Copyright (C) 2012 Sergey Poznyakoff +.\" Copyright (C) 2012-2014 Sergey Poznyakoff .\" .\" BEAM is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by @@ -14,7 +14,7 @@ .\" You should have received a copy of the GNU General Public License .\" along with BEAM. If not, see <http://www.gnu.org/licenses/>. .\" -.TH BEAM\-S3 1 "October 24, 2012" "BBE" "BBE User Reference" +.TH BEAM\-S3 1 "March 19, 2014" "BBE" "BBE User Reference" .SH NAME beam\-s3 \- manage a backup s3 bucket .SH SYNOPSIS diff --git a/doc/beam.1in b/doc/beam.1in index fc15064..0fd3ce5 100644 --- a/doc/beam.1in +++ b/doc/beam.1in @@ -1,5 +1,5 @@ .\" This file is part of BEAM -*- nroff -*- -.\" Copyright (C) 2012 Sergey Poznyakoff +.\" Copyright (C) 2012-2014 Sergey Poznyakoff .\" .\" BEAM is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by @@ -14,7 +14,7 @@ .\" You should have received a copy of the GNU General Public License .\" along with BEAM. If not, see <http://www.gnu.org/licenses/>. .\" -.TH BEAM 1 "October 24, 2012" "BEAM" "BEAM User Reference" +.TH BEAM 1 "March 19, 2014" "BEAM" "BEAM User Reference" .SH NAME beam \- a backup manager .SH SYNOPSIS diff --git a/lib/beam/Makefile.am b/lib/beam/Makefile.am index 22c9a12..81385ad 100644 --- a/lib/beam/Makefile.am +++ b/lib/beam/Makefile.am @@ -1,5 +1,5 @@ # This file is part of BEAM -# Copyright (C) 2012 Sergey Poznyakoff +# Copyright (C) 2012-2014 Sergey Poznyakoff # # BEAM is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/lib/beam/common.in b/lib/beam/common.in index 4f2184b..94b4565 100644 --- a/lib/beam/common.in +++ b/lib/beam/common.in @@ -34,111 +34,111 @@ backup_pidfile="/var/run/beam.pid" backup_tmp_dir=/tmp error() { - echo >&2 $0: $* + echo >&2 $0: $* } logit() { - echo `date`: $* + echo `date`: $* } abend() { - ec=$1 - shift - error $@ - exit $ec + ec=$1 + shift + error $@ + exit $ec } beam_lock() { - if [ -r $backup_pidfile ]; then + if [ -r $backup_pidfile ]; then pid=$(head -n 1 $backup_pidfile) if [ -z "$pid" ]; then - abend 1 "pidfile $backup_pidfile exists but is unreadable or empty" + abend 1 "pidfile $backup_pidfile exists but is unreadable or empty" fi abend 1 "another beam process (pid $pid) is still running; exiting" - fi - echo $$ > $backup_pidfile || exit 1 - epilogue_hook="$epilogue_hook beam_unlock" + fi + echo $$ > $backup_pidfile || exit 1 + epilogue_hook="$epilogue_hook beam_unlock" } beam_unlock() { - rm -f $backup_pidfile + rm -f $backup_pidfile } tarcode() { - case $1 in - 0) logit "success";; - 1) logit "some files changed while being archived";; - 2) logit "fatal error occurred, but trying to continue anyway" - tarerror=$((tarerror + 1));; - *) logit "unexpected error code $1" - tarerror=$((tarerror + 1)); - esac + case $1 in + 0) logit "success";; + 1) logit "some files changed while being archived";; + 2) logit "fatal error occurred, but trying to continue anyway" + tarerror=$((tarerror + 1));; + *) logit "unexpected error code $1" + tarerror=$((tarerror + 1)); + esac } load_config() { - local delayed_exit remote - - test -z "$BEAM_CONFIG" && BEAM_CONFIG=@SYSCONFDIR@/beam.conf - if [ -r $BEAM_CONFIG ]; then - . $BEAM_CONFIG - else - abend 1 "configuration file $BEAM_CONFIG does not exist or is unreadable" - fi + local delayed_exit remote - if [ -z "$backup_items" ]; then - abend 1 "backup_items not specified" - fi - - if [ -z "$backup_archive_dir" ]; then - if [ -n "$backup_bucket_name" ]; then - backup_archive_dir=$backup_mp_s3 + test -z "$BEAM_CONFIG" && BEAM_CONFIG=@SYSCONFDIR@/beam.conf + if [ -r $BEAM_CONFIG ]; then + . $BEAM_CONFIG else - abend 1 "backup_archive_dir not set" + abend 1 "configuration file $BEAM_CONFIG does not exist or is unreadable" fi - fi - - delayed_exit= - loaded_types= - for item in $backup_items - do - eval type=\$${item}_type - if [ -z "$type" ]; then - error "${item}_type not set" - delayed_exit=1 - continue + + if [ -z "$backup_items" ]; then + abend 1 "backup_items not specified" fi + + if [ -z "$backup_archive_dir" ]; then + if [ -n "$backup_bucket_name" ]; then + backup_archive_dir=$backup_mp_s3 + else + abend 1 "backup_archive_dir not set" + fi + fi + + delayed_exit= + loaded_types= + for item in $backup_items + do + eval type=\$${item}_type + if [ -z "$type" ]; then + error "${item}_type not set" + delayed_exit=1 + continue + fi - if echo "$loaded_types" | grep -wq $type; then - : - elif [ -x $libdir/${type}.sh ]; then - . $libdir/${type}.sh || delayed_exit=1 - loaded_types="$loaded_files + if echo "$loaded_types" | grep -wq $type; then + : + elif [ -x $libdir/${type}.sh ]; then + . $libdir/${type}.sh || delayed_exit=1 + loaded_types="$loaded_files $type" - else - error "$libdir/${type}.sh not found" - delayed_exit=1 - fi + else + error "$libdir/${type}.sh not found" + delayed_exit=1 + fi - ${type}_check $item || delayed_exit=1 - done + ${type}_check $item || delayed_exit=1 + done - test -n "$delayed_exit" && abend 1 "aborting" + test -n "$delayed_exit" && abend 1 "aborting" - tar_suffix=${backup_suffix:-.tar} + tar_suffix=${backup_suffix:-.tar} - if [ -n "$backup_bucket_name" ]; then - . @LIBDIR@/beam/s3.sh - prologue_hook="s3_mount $prologue_hook" - fi + if [ -n "$backup_bucket_name" ]; then + . @LIBDIR@/beam/s3.sh + prologue_hook="s3_mount $prologue_hook" + fi - remote=${backup_archive_dir%%:*} - if [ "$remote" != "$backup_archive_dir" ]; then - beam_rsh="${backup_rsh:-ssh} $remote" - backup_local_archive_dir=${backup_archive_dir#*:} - else - beam_rsh= - backup_local_archive_dir=$backup_archive_dir - fi + remote=${backup_archive_dir%%:*} + if [ "$remote" != "$backup_archive_dir" ]; then + beam_rsh="${backup_rsh:-ssh} $remote" + backup_local_archive_dir=${backup_archive_dir#*:} + else + beam_rsh= + backup_local_archive_dir=$backup_archive_dir + fi } beam_exec() { @@ -152,67 +152,67 @@ beam_exec() { } runhook() { - local hook_list + local hook_list - eval hook_list=\$$1 - for hook in $hook_list - do - $hook - done + eval hook_list=\$$1 + for hook in $hook_list + do + $hook + done } print_version() { - name=$(basename $0) - cat <<EOF + name=$(basename $0) + cat <<EOF $name (@PACKAGE_NAME@) @PACKAGE_VERSION@ Copyright (C) 2012 Sergey Poznyakoff License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. EOF - exit 0 + exit 0 } wtf() { - l=`echo "${1#beam-}"|sed "s|.|.|g"` - s=$(echo " " | sed "s|$l|${1#beam-}|") - shift - echo " $s $@" + l=$(echo "${1#beam-}"|sed "s|.|.|g") + s=$(echo " " | sed "s|$l|${1#beam-}|") + shift + echo " $s $@" } dry_mail() { - echo "=============================================================" - cat - - echo "=============================================================" + echo "=============================================================" + cat - + echo "=============================================================" } # mail_report FILE mail_report() { - : ${backup_mailer_program:=/usr/sbin/sendmail -oi -t -F $backup_sender_email} - if [ -n "$dry_run" ]; then - echo "Sending mail using $backup_mailer_program" - backup_mailer_program=dry_mail - fi - if [ -z "$backup_sender_email" ]; then - backup_sender_email=root@$(hostname) - fi - case $backup_sender_email in - "<"*) ;; - *) backup_sender_email="<$backup_sender_email>" - esac - if [ -n "$backup_sender_personal" ]; then - case $backup_sender_personal in - \"*) ;; - *) backup_sender_personal="\"$backup_sender_personal\"" + : ${backup_mailer_program:=/usr/sbin/sendmail -oi -t -F $backup_sender_email} + if [ -n "$dry_run" ]; then + echo "Sending mail using $backup_mailer_program" + backup_mailer_program=dry_mail + fi + if [ -z "$backup_sender_email" ]; then + backup_sender_email=root@$(hostname) + fi + case $backup_sender_email in + "<"*) ;; + *) backup_sender_email="<$backup_sender_email>" esac - backup_sender_personal="$backup_sender_personal " - fi - if [ -z "$backup_report_subject" ]; then - backup_report_subject="Backup of $(hostname) on $(date)" - fi - test -n "$backup_report_signature" && - echo "$backup_report_signature" >> $report - (cat - <<EOF + if [ -n "$backup_sender_personal" ]; then + case $backup_sender_personal in + \"*) ;; + *) backup_sender_personal="\"$backup_sender_personal\"" + esac + backup_sender_personal="$backup_sender_personal " + fi + if [ -z "$backup_report_subject" ]; then + backup_report_subject="Backup of $(hostname) on $(date)" + fi + test -n "$backup_report_signature" && + echo "$backup_report_signature" >> $report + (cat - <<EOF From: ${backup_sender_personal}$backup_sender_email To: $backup_notify_email Subject: $backup_report_subject @@ -220,34 +220,34 @@ X-Beam-Items: $backup_items X-Beam-Round: $round X-Beam-Level: $level EOF - if [ -n "$backup_report_headers" ]; then - echo "$backup_report_headers" - fi - echo "" - if [ -n "$backup_report_intro" ]; then - echo "$backup_report_intro" - fi - cat $report -) | $backup_mailer_program + if [ -n "$backup_report_headers" ]; then + echo "$backup_report_headers" + fi + echo "" + if [ -n "$backup_report_intro" ]; then + echo "$backup_report_intro" + fi + cat $report + ) | $backup_mailer_program } beam_logrotate() { - local conf=/tmp/beam-logrotate.conf u - if test -z "$backup_logrotate_conf"; then - backup_logrotate_conf="weekly + local conf=/tmp/beam-logrotate.conf u + if test -z "$backup_logro |