mirror of
https://0xacab.org/liberate/backupninja.git
synced 2024-11-09 20:32:38 +01:00
rdiff works with sshd banner... rdiff local dest works... create logfile... when=hourly... rdiff nice...
This commit is contained in:
parent
fb77e73173
commit
c7e96acc45
@ -267,6 +267,8 @@ function process_action() {
|
|||||||
getconf when "$defaultwhen"
|
getconf when "$defaultwhen"
|
||||||
if [ "$processnow" == 1 ]; then
|
if [ "$processnow" == 1 ]; then
|
||||||
info "running $file because of --now"
|
info "running $file because of --now"
|
||||||
|
elif [ "$when" == "hourly" ]; then
|
||||||
|
debug "running $file because 'when = hourly'"
|
||||||
else
|
else
|
||||||
IFS=$'\t\n'
|
IFS=$'\t\n'
|
||||||
for w in $when; do
|
for w in $when; do
|
||||||
@ -408,6 +410,7 @@ getconf GZIP /bin/gzip
|
|||||||
getconf RSYNC /usr/bin/rsync
|
getconf RSYNC /usr/bin/rsync
|
||||||
|
|
||||||
[ -d "$configdirectory" ] || fatal "Configuration directory '$configdirectory' not found."
|
[ -d "$configdirectory" ] || fatal "Configuration directory '$configdirectory' not found."
|
||||||
|
[ -f "$logfile" ] || touch $logfile
|
||||||
|
|
||||||
if [ "$UID" != "0" ]; then
|
if [ "$UID" != "0" ]; then
|
||||||
echo "$0 can only be run as root"
|
echo "$0 can only be run as root"
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
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
|
version 0.4.4 -- March 18 2005
|
||||||
results of handlers are now read line by line.
|
results of handlers are now read line by line.
|
||||||
changes to rdiff handler: added "options", and "keep" is
|
changes to rdiff handler: added "options", and "keep" is
|
||||||
|
@ -2,6 +2,12 @@
|
|||||||
## passed directly to rdiff-backup
|
## passed directly to rdiff-backup
|
||||||
# options = --force
|
# 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
|
## source section
|
||||||
## (where the files to be backed up are coming from)
|
## (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)
|
# (you can also use the time format of rdiff-backup, e.g. 6D5h)
|
||||||
keep = 60
|
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
|
# files to include in the backup
|
||||||
# (supports globbing with '*')
|
# (supports globbing with '*')
|
||||||
include = /var/spool/cron/crontabs
|
include = /var/spool/cron/crontabs
|
||||||
@ -40,17 +51,18 @@ include = /var/lib/dpkg/status-old
|
|||||||
|
|
||||||
[dest]
|
[dest]
|
||||||
|
|
||||||
# only remote type is currently supported
|
# default is remote, if set to 'local' then
|
||||||
|
# ignore the 'host' and 'user' options.
|
||||||
type = remote
|
type = remote
|
||||||
|
|
||||||
# the machine which will receive the backups
|
|
||||||
host = backuphost
|
|
||||||
|
|
||||||
# put the backups under this directory
|
# put the backups under this directory
|
||||||
directory = /backups
|
directory = /backups
|
||||||
|
|
||||||
|
# the machine which will receive the backups
|
||||||
|
host = backuphost
|
||||||
|
|
||||||
# make the files owned by this user
|
# make the files owned by this user
|
||||||
# note: you must be able to ssh backupuser@backhost
|
# note: you must be able to ssh backupuser@backhost
|
||||||
# without specifying a password
|
# without specifying a password (if type = remote).
|
||||||
user = backupuser
|
user = backupuser
|
||||||
|
|
||||||
|
@ -4,11 +4,12 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
getconf options
|
getconf options
|
||||||
|
getconf testconnect yes
|
||||||
|
getconf nicelevel 0
|
||||||
|
|
||||||
setsection source
|
setsection source
|
||||||
getconf type; sourcetype=$type
|
getconf type; sourcetype=$type
|
||||||
getconf label
|
getconf label
|
||||||
getconf user root; sourceuser=$user
|
|
||||||
getconf keep 60
|
getconf keep 60
|
||||||
getconf include
|
getconf include
|
||||||
getconf exclude
|
getconf exclude
|
||||||
@ -24,29 +25,31 @@ getconf user; destuser=$user
|
|||||||
getconf host; desthost=$host
|
getconf host; desthost=$host
|
||||||
|
|
||||||
[ "$destdir" != "" ] || fatal "Destination directory not set"
|
[ "$destdir" != "" ] || fatal "Destination directory not set"
|
||||||
[ "$desttype" == "remote" ] || fatal "Only remote destinations are supported"
|
|
||||||
|
|
||||||
# see if we can login
|
if [ "$desttype" == "remote" ]; then
|
||||||
debug "su $sourceuser -c \"ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'\""
|
# see if we can login
|
||||||
if [ ! $test ]; then
|
if [ "$testconnect" == "yes" ]; then
|
||||||
result=`su $sourceuser -c "ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'" 2>&1`
|
hostalive=0
|
||||||
if [ "$result" != "1" ]; then
|
debug "ssh -o PasswordAuthentication=no $desthost -l $destuser 'echo -n 1'"
|
||||||
fatal "Can't connect to $desthost as $destuser."
|
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
|
||||||
fi
|
# see that rdiff-backup has the same version as here
|
||||||
|
debug "ssh $desthost -l $destuser '$RDIFFBACKUP -V'\""
|
||||||
# see that rdiff-backup has the same version as here
|
remoteversion=`ssh $desthost -l $destuser "$RDIFFBACKUP -V | grep rdiff-backup"`
|
||||||
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`
|
|
||||||
localversion=`$RDIFFBACKUP -V`
|
localversion=`$RDIFFBACKUP -V`
|
||||||
if [ "$remoteversion" != "$localversion" ]; then
|
if [ "$remoteversion" != "$localversion" ]; then
|
||||||
fatal "rdiff-backup does not have the same version on this computer and the backup server."
|
fatal "rdiff-backup does not have the same version on this computer and the backup server."
|
||||||
fi
|
fi
|
||||||
|
execstr_serverpart="$destuser@$desthost::$destdir/$label"
|
||||||
|
else
|
||||||
|
execstr_serverpart="$destdir/$label"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
execstr_serverpart="$destuser@$desthost::$destdir/$label"
|
|
||||||
|
|
||||||
### SOURCE ###
|
### SOURCE ###
|
||||||
|
|
||||||
[ "$label" != "" ] || fatal "Source missing label"
|
[ "$label" != "" ] || fatal "Source missing label"
|
||||||
@ -67,9 +70,9 @@ if [ "$desttype" == "remote" ]; then
|
|||||||
fi
|
fi
|
||||||
removestr="${removestr}${destdir}/${label}";
|
removestr="${removestr}${destdir}/${label}";
|
||||||
|
|
||||||
debug "su $sourceuser -c '$removestr'"
|
debug "$removestr"
|
||||||
if [ ! $test ]; then
|
if [ ! $test ]; then
|
||||||
output=`su $sourceuser -c "$removestr" 2>&1`
|
output=`$removestr 2>&1`
|
||||||
code=$?
|
code=$?
|
||||||
if [ "$code" == "0" ]; then
|
if [ "$code" == "0" ]; then
|
||||||
debug $output
|
debug $output
|
||||||
@ -81,7 +84,7 @@ if [ ! $test ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
## EXECUTE ##
|
## EXECUTE ##
|
||||||
|
|
||||||
execstr="$RDIFFBACKUP $options --print-statistics "
|
execstr="$RDIFFBACKUP $options --print-statistics "
|
||||||
|
|
||||||
# TODO: order the includes and excludes
|
# TODO: order the includes and excludes
|
||||||
@ -104,9 +107,9 @@ execstr="${execstr}--exclude '/*' "
|
|||||||
# include client-part and server-part
|
# include client-part and server-part
|
||||||
execstr="${execstr}$execstr_clientpart $execstr_serverpart"
|
execstr="${execstr}$execstr_clientpart $execstr_serverpart"
|
||||||
|
|
||||||
debug "su $sourceuser -c '$execstr'"
|
debug "$execstr"
|
||||||
if [ ! $test ]; then
|
if [ ! $test ]; then
|
||||||
output=`su $sourceuser -c "$execstr" 2>&1`
|
output=`nice -n $nicelevel su -c "$execstr" 2>&1`
|
||||||
code=$?
|
code=$?
|
||||||
if [ "$code" == "0" ]; then
|
if [ "$code" == "0" ]; then
|
||||||
debug $output
|
debug $output
|
||||||
|
Loading…
Reference in New Issue
Block a user