Без изменения вашего процесса, logrotate сам по себе не будет делать то, что вы ищете здесь. Ключевая проблема здесь заключается в том, что, хотя logrotate может использовать подстановочные знаки, он не будет обрабатывать файлы как один, если вы это сделаете, и вместо этого попытается повернуть их все по отдельности, что, безусловно, НЕ то, что вам нужно.
Однако вы можете заставить его работать так, как вы описываете, при условии, что самая последняя резервная копия создается без отметки даты. Если вы создаете, /root/backup.tar.gz
например, процесс резервного копирования , вы можете использовать следующую конфигурацию logrotate:
/root/backup.tar.gz {
rotate 5
nocompress
dateext
dateformat _%Y-%m-%d
extension .tar.gz
missingok
}
Краткое описание вариантов здесь:
rotate 5
- сохраняйте 5 вращений перед удалением
nocompress
- не сжимайте файлы после вращения
dateext
- использовать дату как расширение ротации вместо увеличения чисел
dateformat _%Y-%m-%d
- установить формат расширения даты, который вы хотите использовать
extension .tar.gz
- .tar.gz
приехать после продления вращения
missingok
- если файл, который мы хотим повернуть, отсутствует, не беспокойтесь об этом и двигайтесь дальше (по умолчанию выбрасывается ошибка)
Надеюсь это поможет!
Вам не нужно использовать logrotate, чтобы сделать это. Просто используйте команду как это:
Эта команда оставит последние 5 файлов и удалит оставшиеся (если есть). Вы можете использовать его в работе cron.
источник
У меня просто была такая же ситуация. Logrotate звучит довольно круто, но он не работает для меня на 100%, потому что он не соответствует данным и именам файлов.
Поэтому, чтобы избежать путаницы, я решил добавить следующую строку для выполнения после создания моей текущей резервной копии, чтобы сохранить последние 5 резервных копий.
Мои журналы:
Новая строка в моем резервном скрипте (на основе комментария выше)
С Уважением,
источник
Вы можете повернуть его вручную.
Теперь, чтобы поместить данные в журнал, просто сделайте
источник