Bez zmiany procesu sam logrotate nie zrobi tego, czego tu szukasz. Kluczowym problemem jest to, że chociaż logrotate może przyjmować symbole wieloznaczne, nie będzie traktować plików jako jednego, jeśli to zrobisz, a zamiast tego spróbuje obrócić je wszystkie osobno, co zdecydowanie NIE jest tym, czego chcesz.
Możesz jednak ustawić sposób działania tak, jak to opisujesz, o ile najnowsza kopia zapasowa jest tworzona bez datownika. Jeśli proces tworzenia kopii zapasowej tworzy /root/backup.tar.gz
na przykład, możesz użyć następującej konfiguracji logrotate:
/root/backup.tar.gz {
rotate 5
nocompress
dateext
dateformat _%Y-%m-%d
extension .tar.gz
missingok
}
Krótki przegląd dostępnych tutaj opcji:
rotate 5
- zachowaj 5 obrotów przed usunięciem
nocompress
- nie kompresuj plików po obróceniu
dateext
- użyj daty jako rozszerzenia rotacji zamiast zwiększania liczb
dateformat _%Y-%m-%d
- ustaw format rozszerzenia daty, którego chcesz użyć
extension .tar.gz
- .tar.gz
nadejdź po rozszerzeniu obrotu
missingok
- jeśli pliku, który chcemy obrócić, nie ma, nie przejmuj się nim i przejdź dalej (domyślnie jest to błąd)
Mam nadzieję że to pomoże!
Aby to zrobić, nie musisz używać logrotate. Wystarczy użyć następującego polecenia:
To polecenie pozostawi ostatnie 5 plików i usunie pozostałe (jeśli istnieją). Możesz go użyć w zadaniu cron.
źródło
Właśnie miałem taką samą sytuację. Logrotate brzmi całkiem fajnie, ale nie działało dla mnie w 100%, ponieważ nie pasuje do danych i nazw plików.
Aby uniknąć nieporozumień, postanowiłem włączyć następujący wiersz do wykonania po utworzeniu bieżącej kopii zapasowej w celu zachowania ostatnich 5 kopii zapasowych.
Moje logi to:
Nowa linia do mojego skryptu zapasowego (na podstawie powyższego komentarza)
Pozdrowienia,
źródło
Możesz go obrócić ręcznie.
Teraz, aby umieścić dane w dzienniku, po prostu zrób
źródło