35 lines
1.1 KiB
Text
35 lines
1.1 KiB
Text
#!/bin/bash
|
|
|
|
LOGFILE="/srv/rsync-log/<%= @source_host -%>-$(date +"%F-%T").log"
|
|
|
|
FLOCK="/usr/bin/flock"
|
|
FLOCK_OPTS="--exclusive --nonblock"
|
|
FLOCK_FILE="/var/lock/<%= @name -%>"
|
|
|
|
RSYNC="/usr/bin/rsync"
|
|
RSYNC_OPTS="-ax <%= @acl ? "-A" : "" -%> --delete --itemize-changes <%= @_excludes -%>"
|
|
|
|
(
|
|
$FLOCK $FLOCK_OPTS 200 || exit $?
|
|
/usr/bin/printf "***** <%= @_source -%> -> <%= @_target -%>\n"
|
|
/usr/bin/printf "***** Backup started %s\n\n" "$(date +"%F %T UTC")"
|
|
/usr/bin/time -p $RSYNC $RSYNC_OPTS <%= @_source -%> <%= @_target %>
|
|
RSYNCEXIT=$?
|
|
if [ $RSYNCEXIT -ne 0 ]; then
|
|
echo "ERROR: rsync job (<%= @name -%>) process returned $RSYNCEXIT"
|
|
fi
|
|
/usr/bin/printf "\n***** Backup ended %s\n" "$(date +"%F %T UTC")"
|
|
) 200>$FLOCK_FILE >$LOGFILE 2>&1
|
|
|
|
FLOCKEXIT=$? # flock's return code
|
|
|
|
# Look for unknown lines in log
|
|
/bin/egrep -v "^$|([^ ]{11} )|([*]{5} )|(real|user|sys)" $LOGFILE >/dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
/bin/egrep -v "^([^ ]{11} )" $LOGFILE
|
|
fi
|
|
|
|
if [ $FLOCKEXIT -ne 0 ]; then
|
|
echo "ERROR: Rsync job (<%= @name -%>) already running or other error (exit code $FLOCKEXIT)"
|
|
exit $FLOCKEXIT
|
|
fi
|