Здравствуйте!
Помогите пожалуйста разобраться, написал небольшой скрипт который по задумке должен работать так:
1. При запуске скрипта проверяем смонтирована шара или нет, если нет, то монтируем
2. Делаем бекап при помощи rsync
3. После бекапа проверяем, если шара смонтирована, то от монтируем ее.
Код скрипта:
#!/bin/bash
dir_name="//192.168.0.12/share"
# Проверяем примонтировано //192.168.0.12/share или нет, если нет, то монтируем
if ! df | grep "$dir_name"; then
mount.cifs //192.168.0.12/share /media/share/ -o user=***,password=***,iocharset=utf8,file_mode=0666,dir_mode=0777 0 0
fi
source_bkp=/media/share/
bkp_dir=/backup/share/current
del_dir=/backup/share/old/
mkdir -p ${del_dir}
# Делаем бекап
rsync -A -a -x --delete ${source_bkp} ${bkp_dir} --backup --backup-dir=${del_dir}/`date +%d-%m-%Y-%H:%M`/
# Если фаил старше 30 дней, то удаляем
find ${del_dir} -maxdepth 1 -type d -atime +30 -exec rm -rf {} \;
# Удаляем пустые дериктории
find ${del_dir} -empty -type d -delete
# Проверяем примонтировано //192.168.0.12/share или нет, если да, то отмонтируем
if df | grep "$dir_name"; then
umount //192.168.0.12/share
fi
При запуске в ручную от #sh script_name.sh, все отрабатывает как надо. Проверял несколько раз!
Решил его запускать через cron каждый день в 02:30, для этого набрал #crontab -e и добавил новую запись:
30 02 * * * /home/test/scripts/script_name.sh
Права на файл стоят #chmod 0744
Вот теперь к проблеме, сегодня с утра решил проверить бекап, а его нет.(
Вчера в директории /backup/share/current остались файлы после ручного бекапа, сегодня эта папка стала пустой, а все файлы из /backup/share/current переместились в /backup/share/old/02-02-2017-02:30.
Смею предположить что была проигнорирована команда mount.cifs и в связи с этим директория /media/share/ оказалась пустой что и привело к такому результату.
Еще раз повторю, что руками #sh script_name.sh скрипт отрабатывает нормально!
Подскажите пожалуйста, с чем это может быть связано и как с этим бороться?
Спасибо!