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,8 +1,8 @@ # 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 # the Free Software Foundation; either version 3, or (at your option) # any later version. # diff --git a/Makefile.am b/Makefile.am index c65a39d..551f7b2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,8 +1,8 @@ # 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 # the Free Software Foundation; either version 3, or (at your option) # any later version. # @@ -1,8 +1,8 @@ -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>. Version 1.5, 2013-08-05 @@ -41,13 +41,13 @@ Version 1.2 (git) 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 copyright notice and this permission notice are preserved, thus giving the recipient permission to redistribute in turn. @@ -1,8 +1,8 @@ BEAM README file. -Copyright (C) 2012 Sergey Poznyakoff +Copyright (C) 2012-2014 Sergey Poznyakoff See the end of file for copying conditions. * Introduction BEAM is a flexible and configurable tool for backup management. Its name is an acronym for "Backup Easy And Manageable". The tool @@ -109,13 +109,13 @@ The documentation in man page format is available: 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 the copyright notice and this permission notice are preserved, thus giving the recipient permission to redistribute in turn. @@ -1,9 +1,9 @@ #! /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 # the Free Software Foundation; either version 3, or (at your option) # any later version. # @@ -20,28 +20,28 @@ set -e . $libdir/common.sh set +e 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 taroptions="-c -Hpax $backup_tar_options $backup_rsh_command" ########################################################### # Global variables ########################################################### # 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 # Number of tar errors detected during the run tarerror=0 @@ -51,13 +51,13 @@ round=0 ########################################################### # Utility functions ########################################################### help() { - cat <<EOF + cat <<EOF usage: $0 [OPTIONS] makes incremental backup of that system OPTIONS: -v, --verbose increase verbosity @@ -68,77 +68,77 @@ OPTIONS: -R, --round N mark archives with incremental round N --week N force using week number N instead of the current one -h, --help produce this help list Report bugs to <@PACKAGE_BUGREPORT@> EOF - exit 0 + exit 0 } ########################################################### # Main ########################################################### 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 # finis coronat opus @@ -1,58 +1,73 @@ #! /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 . $libdir/common.sh 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,7 +1,22 @@ #! /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 . $libdir/common.sh set +e @@ -26,63 +41,63 @@ OPTIONS are: EOF exit 0 } 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) # Warning: do not use shell arithmetic expansions on week numbers, # 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,8 +1,8 @@ # 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 # the Free Software Foundation; either version 3, or (at your option) # any later version. # diff --git a/doc/Makefile.am b/doc/Makefile.am index 846c1de..0d82900 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,8 +1,8 @@ # 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 # the Free Software Foundation; either version 3, or (at your option) # any later version. # 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,8 +1,8 @@ .\" 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 .\" the Free Software Foundation; either version 3, or (at your option) .\" any later version. .\" @@ -11,13 +11,13 @@ .\" 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/>. .\" -.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 .B beam backup [\fB\-vnN\fR] [\fB\-\-verbose\fR] [\fB\-l\fR \fIFILE\fR]\ [\fB\-\-logfile\fR \fIFILE\fR]\ 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,8 +1,8 @@ .\" 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 .\" the Free Software Foundation; either version 3, or (at your option) .\" any later version. .\" @@ -11,13 +11,13 @@ .\" 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/>. .\" -.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 .B beam\-cleaner [\fB\-s\fR \fISUF\fR] [\fB\-r\fR \fIN\fs] [\fB\-vn\fR] \ [\fB\-\-suffix\fR \fISUF\fR] [\fB\-\-retain\fR \fIN\fR] \ 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,8 +1,8 @@ .\" 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 .\" the Free Software Foundation; either version 3, or (at your option) .\" any later version. .\" @@ -11,13 +11,13 @@ .\" 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/>. .\" -.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 .B beam list [\fB\-l\fR] [\fB\-\-number\fR] 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,8 +1,8 @@ .\" 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 .\" the Free Software Foundation; either version 3, or (at your option) .\" any later version. .\" @@ -11,13 +11,13 @@ .\" 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/>. .\" -.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) modules .SH DESCRIPTION This manual page explains how to write new modules for 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,8 +1,8 @@ .\" 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 .\" the Free Software Foundation; either version 3, or (at your option) .\" any later version. .\" @@ -11,13 +11,13 @@ .\" 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/>. .\" -.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 .B beam restore [\fB\-cntv\fR] [\fB\-\-confirm\fR] [\fB\-C\fR \fIDIR\fR]\ [\fB\-\-directory\fR \fIDIR\fR] [\fB\-\-verbose\fR] 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,8 +1,8 @@ .\" 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 .\" the Free Software Foundation; either version 3, or (at your option) .\" any later version. .\" @@ -11,13 +11,13 @@ .\" 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/>. .\" -.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 .B beam s3 mount diff --git a/doc/beam.1in b/doc/beam.1in index fc15064..0fd3ce5 100644 --- a/doc/beam.1in +++ b/doc/beam.1in @@ -1,8 +1,8 @@ .\" 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 .\" the Free Software Foundation; either version 3, or (at your option) .\" any later version. .\" @@ -11,13 +11,13 @@ .\" 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/>. .\" -.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 .B beam backup [\fIoptions\fB] 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,8 +1,8 @@ # 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 # the Free Software Foundation; either version 3, or (at your option) # any later version. # 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 @@ -31,117 +31,117 @@ backup_snapshot_dir= backup_verbose= backup_logfile="/var/log/backup" 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() { if [ -z "$beam_rsh" ]; then set -- $(echo "$@" | sed 's/\\\\\([bcfnrtv0]\)/\\\1/g') "$@" @@ -149,105 +149,105 @@ beam_exec() { set -- $(echo "$@" | sed 's/\\\\\([bcfnrtv0]\)/\\\1/g;s/[]\[\\\*]/\\&/g') $beam_rsh "$@" fi } runhook() { - local hook_list + loca |