Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Проверка наличия в каталоге ненулевого вчерашнего бэкапа

Ответить
Настройки темы
Проверка наличия в каталоге ненулевого вчерашнего бэкапа

Пользователь


Сообщения: 136
Благодарности: 5

Профиль | Отправить PM | Цитировать


Задача, казалось бы несложная, но не получается сделать, чтобы правильно работало.

Есть каталог, куда ежедневно складывается бэкап (или не складывается, в случае сбоев, для проверки чего, собственно, и нужен этот скрипт)

Логика должна быть такая:
В каталоге находится самый новый файл, проверяется, что он не старше, например, чем 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.

поделитесь, пожалуйста своими соображениями.

Отправлено: 13:56, 15-07-2021

 

Пользователь


Сообщения: 136
Благодарности: 5

Профиль | Отправить PM | Цитировать


Удалось сделать код рабочим, выглядит это примерно так:

#!/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

Не уверен, что такой способ написания является оптимальным, но работает.

Отправлено: 16:46, 15-07-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Проверка наличия в каталоге ненулевого вчерашнего бэкапа

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Проверка наличия файлов Svnkill Скриптовые языки администрирования Windows 9 17-02-2018 22:40
PowerShell - Проверка наличия процесса botkin1 Скриптовые языки администрирования Windows 0 12-05-2016 07:33
Любой язык - проверка наличия файла в директории icetanker Скриптовые языки администрирования Windows 11 19-10-2014 21:37
CMD/BAT - проверка наличия файлов neprotiv Скриптовые языки администрирования Windows 0 04-04-2013 22:09
Любой язык - [решено] Проверка наличия обновления SANIOK_AV Скриптовые языки администрирования Windows 4 18-08-2011 14:47




 
Переход