Сделал скрипт, который делает синхронизацию с помощью rsync пользовательских профилей из удаленных офисов на сервер в центральном офисе для последующего архивирования. Данные о сервере, каталоге куда писать и скорости канала этот скрипт берет из дополнительного файла:
Код: Выделить всё
cat servers
server1 cp 1000
server2 sr 4
server3 ar 2
...
...
Подскажите как организовать, чтобы скрипт запускал процедуру синхронизации и не дожидался ее окончания.
Код: Выделить всё
#!/bin/sh
#
log="/var/log/rsync/rsync-all.log"
config="/usr/local/etc/rsyncd/servers"
echo="/bin/echo"
date="/bin/date"
grep="/usr/bin/grep"
ping="/sbin/ping"
rsync="/usr/local/bin/rsync"
rootdir="/data/stripe/backup"
mkdir="/bin/mkdir"
touch="/usr/bin/touch"
while read server dir bw
do
$echo "===================================================================" >> $log
#проверяем доступность IP сервера по пингу
$ping -q -c 4 $server > /dev/null 2>&1
if [ $? -eq 0 ]; then
$echo "`$date +%F_%H-%M-%S` Server $server ping=OK" >> $log
else
$echo "`$date +%F_%H-%M-%S` Server $server down" >> $log
exit 0;
fi
$echo "===================================================================" >> $log
#создаем каталог куда будет писать rsync
k="$rootdir/$dir/profiles"
$mkdir -p $k
#создаем файл лога
$touch /var/log/rsync/rsync-$dir.log
#высчитываем лимит скорости для rsync, оставляем 20KBs для остального трафика
let b=$bw*128-20
$echo "Start Rsync on speed $b">> $log
s="$rsync --archive --exclude-from=/usr/local/etc/rsyncd/exclude.txt --bwlimit=$b --chmod=ugo=rwx --compress-level=9 --delete-after --recursive --log-file=/var/log/rsync/rsync-$dir.log --8-bit-output $server::profiles $k"
$echo "команда старта $s">> $log
$s
done < $config