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"
|
||||
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"
|
||||
|
@ -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
|
||||
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
|
||||
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
|
||||
|
||||
# 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`
|
||||
fi
|
||||
# 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
|
||||
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user