Написал скрипт который монтирова,синхронезировал сетевую папку и папку на машине, удалял старые файлы, проверял наличие 3 предпоследних баз (чтобы тупо все не удалилось), и в конце отцеплялся.# uname -a
FreeBSD FreeBSD 7.0-RELEASE
Данный скрипт работает если его запустить руками из под рутом, все нормально проходит и работает, пишет лог.
#! /bin/sh
dt=`date \+\%Y\%m\%d` # дата в формате 20091231
dt1=`date \+\%d.\%m.\%Y` # дата в формате 2009.12.31
let "oldt = $dt - 8" # получаем дату которая была 8 дней назад
let "oldd = $dt - 3" # получаем дату которая была 3 дня назад
in="/backup" # исходная папка
out="/shares/gm4/Upload/" # конечная папка
inc=--include # исключаем
exc=--exclude # включаем
log="/shares/gm4/Upload/backup/log/$dt1.log" # куда пишем лог
nam0="rsync" # имя скрипта
nam1="tmp" # имя файла для проверки
#sleep 10
#######################################################
########### Проверка на повторный запуск ##############
echo "1. Проверка на запуск копии ..." >> $log
rn0=`ps -ax | grep -c $nam0`
echo "rn0 = "$rn0
if !(test $rn0 -gt "2")
then
echo "2. Скрипт уже запущен!!!" >> $log
exit 1;
else
echo "2. Скрипт запускается..." >> $log
fi
########################################################
echo "3. Монтирую сетевой диск..." >> $log
mount_smbfs -N //administrator@server/backup /backup && # монтируем сетевой каталог
#######################################################
########### Проверяем подмонтировалась ли папка #######
rn1=`ls -l $in | grep -c $nam1`
echo "rn1 = "$rn1
if !(test $rn1 -gt "0")
then
echo "4. Сетевой диск не примонтирован!!!" >> $log
exit 0;
else
echo "4. Сетевой диск примонтирован..." >> $log
fi
######################################################
########## Синхронизация папок #######################
echo "5. Синхронизация..." >> $log
rsync -auxS --progress $inc '*.rar' $exc 'tmp' $exc '*.*' $in $out # синхронизируем файлы с раширением rar
echo " " >> $log
#sleep 300
rn2=`ls -l $in | grep -c base$dt.rar`
echo "rn2 = "$rn2
if !(test $rn2 -gt "0")
then
echo "6. Базы не синхронизировались!!!" >> $log
exit 0;
else
echo "6. Синхронизация закончена." >> $log
fi
########################################################
#### Дальше проверяем предпредпоследний архив базы #####
echo "7. Проверка архивов..." >> $log
rn3=`ls -l $in | grep -c base$oldd.rar` # тут происходит поиск предпредпоследний базы
echo "rn3 = "$rn3
#Если базы, останавливаем скрипт
if !(test $rn3 -gt "0")
then
echo "8. нет старых архивов!!!" >> $log
exit 0;
# Если они есть то удаляем старые базы
else
echo "8. Все в порядке базы на месте, удаляем старые архивы!" >> $log
rm "$out/backup/"base$oldt.rar 2>/dev/null # удаляем в конечной папке 8 дневные архивы
rm "$in/"base$oldt.rar 2>/dev/null # удаляем в исходной папке 8 дневные архивы
fi
######################################################
########### Проверяем подмонтировалась ли папка #######
echo "9. Отключаю сетевой диск..." >> $log
umount $in
rn4=`ls -l $in | grep -c rar`
echo "rn4 = "$rn4
if !(test $rn4 -gt "0")
then
echo "10. Сетевой диск отмонтирован!!" >> $log
exit 0;
else
echo "10. не смог отмонтировать сетевой диск!!!" >> $log
cd $out
umount $in
но если запускать по крону он не синхронезирует папки почему-то(
#minute hour mday month wday who command
0 7 * * * root /usr/local/etc/myscript/rsync/rsync
затыки происходят на строке
rsync -auxS --progress $inc '*.rar' $exc 'tmp' $exc '*.*' $in $out # синхронизируем
ответ из /var/log/cron
May 17 22:09:00 file /usr/sbin/cron[28327]: (root) CMD (/usr/local/etc/myscript/rsync/rsync)
хелп ми народ плз...