#! /bin/sh # This file is part of BEAM # Copyright (C) 2012 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 . libdir=@LIBDIR@/beam 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 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 else verbose= fi # Set it to "echo" to initiate dry-run mode. unset dry_run # Number of tar errors detected during the run tarerror=0 level=0 round=0 ########################################################### # Utility functions ########################################################### help() { cat < EOF 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 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 \ ${dry_run+--dry-run} --suffix $backup_suffix $backup_archive_dir @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" } umask ${backup_umask:-077} prologue_hook="beam_lock $prologue_hook" if [ -n "$backup_logfile" ]; then runhook openlog_hook exec >>$backup_logfile exec 2>&1 fi if [ -z "$backup_notify_email" ]; then backup else report=$backup_snapshot_dir/report.$$ touch $report backup 2>&1 | tee $report mail_report $report rm $report fi # finis coronat opus