Skip to content
Snippets Groups Projects
Commit c7e96acc authored by elijah's avatar elijah
Browse files

rdiff works with sshd banner... rdiff local dest works... create logfile......

rdiff works with sshd banner... rdiff local dest works... create logfile... when=hourly... rdiff nice...
parent fb77e731
Branches
Tags
No related merge requests found
......@@ -267,6 +267,8 @@ function process_action() {
getconf when "$defaultwhen"
if [ "$processnow" == 1 ]; then
info "running $file because of --now"
elif [ "$when" == "hourly" ]; then
debug "running $file because 'when = hourly'"
else
IFS=$'\t\n'
for w in $when; do
......@@ -408,6 +410,7 @@ getconf GZIP /bin/gzip
getconf RSYNC /usr/bin/rsync
[ -d "$configdirectory" ] || fatal "Configuration directory '$configdirectory' not found."
[ -f "$logfile" ] || touch $logfile
if [ "$UID" != "0" ]; then
echo "$0 can only be run as root"
......
version 0.5 -- April 12 2005
rdiff handler works when remote sshd has a banner
rdiff handler supports local dest
logfile is created if it doesn't exist
added "when = hourly"
xxxx fixed bug with 'when' option
added 'nice' to rdiff handler
fixed bug where actions were not run in numeric order.
version 0.4.4 -- March 18 2005
results of handlers are now read line by line.
changes to rdiff handler: added "options", and "keep" is
......
......@@ -2,6 +2,12 @@
## passed directly to rdiff-backup
# options = --force
## default is 0, but set to 19 if you want to lower the priority.
# nicelevel = 19
## default is yes. set to no to skip the test if the remote host is alive
# testconnect = no
######################################################
## source section
## (where the files to be backed up are coming from)
......@@ -18,6 +24,11 @@ type = local
# (you can also use the time format of rdiff-backup, e.g. 6D5h)
keep = 60
# a note about includes and excludes:
# all the excludes come after all the includes.
# otherwise, the order is not taken into account.
# currently, you cannot do "include = /"
# files to include in the backup
# (supports globbing with '*')
include = /var/spool/cron/crontabs
......@@ -40,17 +51,18 @@ include = /var/lib/dpkg/status-old
[dest]
# only remote type is currently supported
# default is remote, if set to 'local' then
# ignore the 'host' and 'user' options.
type = remote
# the machine which will receive the backups
host = backuphost
# put the backups under this directory
directory = /backups
# the machine which will receive the backups
host = backuphost
# make the files owned by this user
# note: you must be able to ssh backupuser@backhost
# without specifying a password
# without specifying a password (if type = remote).
user = backupuser
......@@ -4,11 +4,12 @@
#
getconf options
getconf testconnect yes
getconf nicelevel 0
setsection source
getconf type; sourcetype=$type
getconf label
getconf user root; sourceuser=$user
getconf keep 60
getconf include
getconf exclude
......@@ -24,29 +25,31 @@ getconf user; destuser=$user
getconf host; desthost=$host
[ "$destdir" != "" ] || fatal "Destination directory not set"
[ "$desttype" == "remote" ] || fatal "Only remote destinations are supported"
# see if we can login
debug "su $sourceuser -c \"ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'\""
if [ ! $test ]; then
result=`su $sourceuser -c "ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'" 2>&1`
if [ "$result" != "1" ]; then
fatal "Can't connect to $desthost as $destuser."
if [ "$desttype" == "remote" ]; then
# see if we can login
if [ "$testconnect" == "yes" ]; then
hostalive=0
debug "ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'"
ret=`ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n host is alive'`
if echo $ret | grep "host is alive"; then
debug "Connected to $desthost as $destuser successfully"
else
fatal "Can't connect to $desthost as $destuser."
fi
fi
fi
# see that rdiff-backup has the same version as here
debug "su $sourceuser -c \"ssh $desthost -l $destuser '$RDIFFBACKUP -V'\""
if [ ! $test ]; then
remoteversion=`su $sourceuser -c "ssh $desthost -l $destuser '$RDIFFBACKUP -V'" 2>&1`
# see that rdiff-backup has the same version as here
debug "ssh $desthost -l $destuser '$RDIFFBACKUP -V'\""
remoteversion=`ssh $desthost -l $destuser "$RDIFFBACKUP -V | grep rdiff-backup"`
localversion=`$RDIFFBACKUP -V`
if [ "$remoteversion" != "$localversion" ]; then
fatal "rdiff-backup does not have the same version on this computer and the backup server."
fi
execstr_serverpart="$destuser@$desthost::$destdir/$label"
else
execstr_serverpart="$destdir/$label"
fi
execstr_serverpart="$destuser@$desthost::$destdir/$label"
### SOURCE ###
[ "$label" != "" ] || fatal "Source missing label"
......@@ -67,9 +70,9 @@ if [ "$desttype" == "remote" ]; then
fi
removestr="${removestr}${destdir}/${label}";
debug "su $sourceuser -c '$removestr'"
debug "$removestr"
if [ ! $test ]; then
output=`su $sourceuser -c "$removestr" 2>&1`
output=`$removestr 2>&1`
code=$?
if [ "$code" == "0" ]; then
debug $output
......@@ -81,7 +84,7 @@ if [ ! $test ]; then
fi
## EXECUTE ##
execstr="$RDIFFBACKUP $options --print-statistics "
# TODO: order the includes and excludes
......@@ -104,9 +107,9 @@ execstr="${execstr}--exclude '/*' "
# include client-part and server-part
execstr="${execstr}$execstr_clientpart $execstr_serverpart"
debug "su $sourceuser -c '$execstr'"
debug "$execstr"
if [ ! $test ]; then
output=`su $sourceuser -c "$execstr" 2>&1`
output=`nice -n $nicelevel su -c "$execstr" 2>&1`
code=$?
if [ "$code" == "0" ]; then
debug $output
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment