mirror of
https://github.com/deajan/osync
synced 2024-11-05 12:01:02 +00:00
103 lines
2.1 KiB
Bash
103 lines
2.1 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
PROGRAM="Osync-batch" # Batch program to run osync instances sequentially and rerun failed ones
|
||
|
AUTHOR="(L) 2013-2014 by Orsiris \"Ozy\" de Jong"
|
||
|
CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr"
|
||
|
PROGRAM_BUILD=2411201401
|
||
|
|
||
|
## Runs an osync instance for every conf file found
|
||
|
## If an instance fails, run it again if time permits
|
||
|
|
||
|
## Configuration file path. The path where all the osync conf files are, usually /etc/osync
|
||
|
CONF_FILE_PATH=/etc/osync
|
||
|
|
||
|
## If maximum execution time is not reached, failed instances will be rerun. Max exec time is in seconds. Example is set to 10 hours.
|
||
|
MAX_EXECUTION_TIME=36000
|
||
|
|
||
|
## Max retries specifies the number of reruns an instance may get
|
||
|
MAX_RETRIES=36000
|
||
|
|
||
|
|
||
|
## Osync executable full path can be set here if it cannot be found on the system
|
||
|
if ! type -p osync.sh > /dev/null 2>&1
|
||
|
then
|
||
|
OSYNC_EXECUTABLE=osync.sh
|
||
|
else
|
||
|
OSYNC_EXECUTABLE=$(type -p osync.sh)
|
||
|
fi
|
||
|
|
||
|
## Log file path
|
||
|
if [ -w /var/log ]
|
||
|
then
|
||
|
LOG_FILE=/var/log/osync-batch.log
|
||
|
else
|
||
|
LOG_FILE=./osync-batch.log
|
||
|
fi
|
||
|
|
||
|
# No need to edit under this line ##############################################################
|
||
|
|
||
|
function Log
|
||
|
{
|
||
|
prefix="TIME: $SECONDS - "
|
||
|
echo -e "$prefix$1" >> "$LOG_FILE"
|
||
|
|
||
|
if [ $silent -eq 0 ]
|
||
|
then
|
||
|
echo -e "$prefix$1"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
function Batch
|
||
|
{
|
||
|
## Get list of .conf files
|
||
|
for i in $(ls $CONF_FILE_PATH/*.conf)
|
||
|
do
|
||
|
if [ "$RUN" == "" ]
|
||
|
then
|
||
|
RUN="$i"
|
||
|
else
|
||
|
RUN=$RUN" $i"
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
RETRIES=0
|
||
|
while [ $MAX_EXECUTION_TIME -gt $SECONDS ] && [ "$RUN" != "" ] && [ $MAX_RETRIES -gt $RETRIES ]
|
||
|
do
|
||
|
Log "Osync instances will be run for: $RUN"
|
||
|
for i in $RUN
|
||
|
do
|
||
|
$OSYNC_EXECUTABLE $i --silent
|
||
|
if [ $? != 0 ]
|
||
|
then
|
||
|
Log "Run instance $(basename $i) failed"
|
||
|
if [ "RUN_AGAIN" == "" ]
|
||
|
then
|
||
|
RUN_AGAIN="$i"
|
||
|
else
|
||
|
RUN_AGAIN=$RUN_AGAIN" $i"
|
||
|
fi
|
||
|
else
|
||
|
Log "Run instance $(basename $i) succeed."
|
||
|
fi
|
||
|
done
|
||
|
RUN="$RUN_AGAIN"
|
||
|
RUN_AGAIN=""
|
||
|
RETRIES=$(($RETRIES + 1))
|
||
|
done
|
||
|
}
|
||
|
|
||
|
silent=0
|
||
|
for i in "$@"
|
||
|
do
|
||
|
case $i in
|
||
|
--silent)
|
||
|
silent=1
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
Log "$(date) Osync batch run"
|
||
|
Batch
|
||
|
|