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.
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
}
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.
Odpowiedzi:
W swoim pliku logrotate.conf (lub ekwiwalentnym pliku logrotate.d) zmień wiersz z napisem „
(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.
źródło
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:
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.
źródło
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:
Wypróbuj to i sprawdź, czy robi to, co chcesz.
źródło