Что не так с этим rotate.conf?

Цель состоит в том, чтобы удалить только файлы старше четырех часов

path/to/tokens/*.tkn {
    nosharedscripts
    prerotate
       if test `stat --format=%Y $1` -le $(( `date +%s` - 14400 ));
       then exit $?;
       fi;'
    endscript
    rotate 0
}

1 ответ1

1

Вы заявили, что ваша цель - удалить файлы старше четырех часов. Используя bash 4.3.46 (Ubuntu 16.04) и find 4.7.0, я смог использовать команду find с десятичным mtime:

find /path/to/tokens/ -name "*.tkn" -mtime 0.1666666

Просто конвертируйте 4/24 в десятичную и все готово. Вы можете поместить это в скрипт и, возможно, pipe-rm или сделать -exec rm {} \; по желанию.

Он не использует logrotate, но достигает цели удаления файлов старше, чем (4/24) дней.

Изменить: бонусный раунд

Очевидно, есть опция -mmin . Попробуйте это для размера:

find /path/to/tokens/ -name "*.tkn" -mmin +240 -exec rm {} \;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .