Jak skonfigurować Logrotate, aby nie usuwał moich plików dziennika po rotacji?


24

Jest na to sposób?


Czy możesz nam powiedzieć, dlaczego chcesz to zrobić? Może są inne opcje ...
chmeee,

W moim przypadku byłoby miło pobrać duże stare dzienniki na pamięć zewnętrzną i zachować nowe na serwerze. Potrzebuję więc prostego rozdzielacza kłód.
sekrett

2
Mój przypadek użycia dla tej konfiguracji to: Chcę zachować mój dziennik na zawsze, ponieważ może być potrzebny do celów kontrolnych, ALE chcę, aby moje pliki zostały obrócone, aby bieżący dziennik nie urósł zbyt duży, a obracane mogły być skompresowany - w przeciwnym razie tworzenie kopii zapasowych dzienników na zewnętrznym serwerze jest zbyt trudne, a sprawdzanie plików również zbyt wolne.
Rudolf Mayer

Odpowiedzi:


32

W swoim pliku logrotate.conf (lub ekwiwalentnym pliku logrotate.d) zmień wiersz z napisem „

rotate 10

(Twój numer może być inny) na większą liczbę. To pozwoli mu zachować tyle dni dzienników. Możesz zrobić to 36500, co potrwa 100 lat.


6
Kiedy zrobiłem to na raspberry pi (raspian), to zamarzało każdej nocy. Kiedyś zastanawiałem się nad uruchomieniem procesów i otwieraniem plików za pomocą konsoli szeregowej i dowiedziałem się, że próbuje zmienić nazwę 100000 nieistniejących plików. Strzeż się tego. Niestety nie mam bardziej szczegółowych informacji
Christian

0

Szukałem tego, aby rotować kopie zapasowe moich baz danych codziennie, co tydzień i co miesiąc; więc obracam plik codziennie, ale zachowuję plik, aby wykonać rotację tygodniową, i to samo dla rotacji rocznej.

Użyj opcji kopiowania. Z instrukcji:

copy

kopia Wykonaj kopię pliku dziennika, ale nie zmieniaj wcale oryginału. Tej opcji można użyć na przykład do utworzenia migawki bieżącego pliku dziennika lub gdy jakieś inne narzędzie wymaga obcięcia lub parsowania pliku. Gdy ta opcja jest używana, opcja tworzenia nie przyniesie żadnego efektu, ponieważ stary plik dziennika pozostaje na swoim miejscu.


Jest to to samo co komentarz poniżej ( serverfault.com/a/50186/275485 ) i nie zapewnia poprawnej odpowiedzi; kopia nie oznacza, że ​​twoje stare pliki, które zostały obrócone, nie zostaną usunięte.
Rudolf Mayer

-3

Odkładając na bok punkt, w którym obrót wymaga usunięcia ... ;-)

Wygląda na to, że możesz po prostu dodać słowo „kopiuj” do odpowiedniego pliku (prawdopodobnie w /etc/logrotate.d). Na przykład skrypt logrotate apache2 wyglądałby tak:

/var/log/apache2/*.log {
    tygodniowo
    missingok
    obróć 52
    kompres
    delaycompress
    notifempty
    Kopiuj
    skrypty współdzielone
    postrotate
        if [-f "`. / etc / apache2 / envvars; echo $ {APACHE_PID_FILE: - / var / run / apache2.pid} `"]; następnie
            /etc/init.d/apache2 reload> / dev / null
        fi
    endcript
}

Wypróbuj to i sprawdź, czy robi to, co chcesz.


2
Zakładając, że chce, aby pliki zostały „obrócone”, ale nigdy nie usunie starych plików, nie zrobi tego. Dodanie „kopii” do sekcji konfiguracji oznacza, że ​​oryginalny plik będzie nadal się powiększał, ale ostatecznie starsze kopie pliku zostaną usunięte. W moim rozumieniu „kopiowanie” jest przydatne przede wszystkim wtedy, gdy oczekujesz obcięcia / usunięcia oryginału przez inny proces.
Insyte

Dokładnie, o to, jak myślałem, o to prosił. W szczególności poprosił o sposób „nie usuwać moich plików dziennika”, a nie „nie usuwać starych archiwów moich plików dziennika”. Chyba powinienem bardziej uważać na pytania, które dotyczą tylko tematu, a nie ciała ;-)
Justin Ellison,

2
Wyrażenie „po rotacji” stanowi wskazówkę.
Wstrzymano do odwołania.

4
„Odkładając na bok punkt, w którym obrót wymaga usunięcia ...” Niekoniecznie. Rotacja może polegać jedynie na kompresji starych kłód i zachowaniu ich, i wydaje się, że o to pyta pytanie.
reflexiv
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.