Добрый день. У меня логи пишутся в формате, nginx.log.2017.05.12, т.е. лог и дата к нему.
Я набросал скрипт который не делает архивацию для логов, которые уже архивированы и не делает архивацию для лога с текущей датой.
name="nginx.log"
data=$(date +%Y.%m.%d)
current_nginx=$name.$data
cd /var/log/
for i in `ls "$name*"`; do
if [[ $i != *".gz"* ]] && [[ $i != "$current_nginx" ]]; then
gzip $i
echo "make compressing for $i"
fi
echo "there are not available nginx logs. stop the script executing"
exit 1
done
Но почему-то это не отрабатывает и я получаю второе условие. Хотя у меня нету сжатых файлов и я бы хотел их сжать.
Очень хорошо работает это условие:
find /var/log/$name* -type f -print0 -and ! -name "*.gz" -and ! -name "$current_nginx" -exec gzip "{}" \;
Но меня это немного не страивает, мне нужно, выходить из тела скрипта, в случае, если у меня нету новых логов.
Как поступить в данном случае ?