Проверка наличия в каталоге ненулевого вчерашнего бэкапа
Задача, казалось бы несложная, но не получается сделать, чтобы правильно работало.
Есть каталог, куда ежедневно складывается бэкап (или не складывается, в случае сбоев, для проверки чего, собственно, и нужен этот скрипт) Логика должна быть такая: В каталоге находится самый новый файл, проверяется, что он не старше, например, чем 1500 минут (25 часов), и то, что файл ненулевого размера. Если условия совпадают, то скрипт должен отдать 0, в противном случае 1 Вот, что я сделал: #!/bin/bash BACKUPDIR=/mnt/MY_DIR LASTBACKUP=$(find $BACKUPDIR -mmin -1500 | awk '(NR == 2)') if test -s $LASTBACKUP then echo 0 else echo 1 fi Обнаружил, что некорректно работает, да и тут сразу видна ошибка: в случае, если find $BACKUPDIR -mmin -1500 ничего не найдёт, то переменной $LASTBACKUP ничего не присвоится. Были варианты, и наиболее приближенные к правде, однако и они выдавали 0 тогда, когда должны были выдавать 1. Результат выполнения предполагается скормить заббиксу. Смотрел ман по команде test, с ним удобно работать, когда известно имя файла, которое будем проверять, так же не удалось найти способ проверить, "на сколько новый или старый файл", кроме как ключ к команде find. поделитесь, пожалуйста своими соображениями. |
Удалось сделать код рабочим, выглядит это примерно так:
#!/bin/bash BACKUPDIR=/mnt/BACKUPDIR LASTBACKUP=$(find $BACKUPDIR -mmin -1500 | awk '(NR == 2)') a=$(find $BACKUPDIR -mmin -1500 | awk '(NR == 2)' | wc -l) b=0 if [ $a \> $b ] then if test -s $LASTBACKUP then echo 0 else echo 1 fi else echo "1" fi Не уверен, что такой способ написания является оптимальным, но работает. |
Время: 02:00. |
Время: 02:00.
© OSzone.net 2001-