Alte Dateien weg zippen..

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
tanita
Beiträge: 78
Registriert: 14.08.2003 13:45:27
Wohnort: Muc
Kontaktdaten:

Alte Dateien weg zippen..

Beitrag von tanita » 25.11.2005 11:40:31

Hallo,

ich möchte einen EIn-/Zweizeiler tippen, welches Logfiles, dessen Datum > aktuelles Datum sind, zippt und die Originale löschtn. Wie kann man das Datum einer Datei in der if-Anfweisung abfragen? Oder hat jemand Tipps was man noch so in einem Backup-Skript so abfragen kann?

Danke,
Gruß T.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 25.11.2005 12:08:22

Hm, also zum einen hat logrotate schon sowas aehnliches eingebaut und der wird normal fuer die meisten Logfiles genutzt (

Code: Alles auswählen

man logrotate
).
Wenn du das fuer eigene speziellere Sachen brauchst, die du z.B. nicht mit logrotate verarbeiten kannst, dann waere z.B. find dein Freund.
Ganz grob mal:

Code: Alles auswählen

find <verzeichnis> -type f -ctime 1 -exec gzip {} \;
Das sollte alle Dateien im angebenen Verzeichnis und darunter finden, die einen Tag alt sind (also letzte Aenderung ist einen Tag her). Diese werden dann mittels gzip gepackt. Loeschen musst du die Originale dann nicht extra.
Wie gesagt, mehr Infos gibt dir z.B. die Manpage zu find.

tanita
Beiträge: 78
Registriert: 14.08.2003 13:45:27
Wohnort: Muc
Kontaktdaten:

Beitrag von tanita » 25.11.2005 12:29:36

logrotate ist an der Stelle ungünstig. find kenne ich auch, dachte aber, vielleicht gibt es einen andneren Befehl.

Trotzdem danke,
Gruß T.

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22447
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 25.11.2005 13:46:02

Logrotate läßt sich doch konfigurieren.

Die Konfigs sind im Verzeichnis

Code: Alles auswählen

/etc/logrotate.d
Zuletzt geändert von KBDCALLS am 10.11.2006 22:41:50, insgesamt 1-mal geändert.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

tanita
Beiträge: 78
Registriert: 14.08.2003 13:45:27
Wohnort: Muc
Kontaktdaten:

Beitrag von tanita » 25.11.2005 15:40:29

hm.. aber logrotate überschreibt doch wieder.. - muss mal weiter lesen.

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22447
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 25.11.2005 17:04:04

tanita hat geschrieben:hm.. aber logrotate überschreibt doch wieder.. - muss mal weiter lesen.
Schon richtig. Aber normalerweise erst nach 10 Tagen..
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

tanita
Beiträge: 78
Registriert: 14.08.2003 13:45:27
Wohnort: Muc
Kontaktdaten:

Beitrag von tanita » 25.11.2005 17:10:26

Das kann man ja einstellen. Wenn ich es richtig verstanden habe, können in der postrotate und endscript Shell-Befehle aufgeführt werden. Dort kopiere ich z.B. alle *gz in ein anderes Verzeichnis. Auf ner Testmaschine hab ich jetzt mal was konifuriert. Mal sehen, was nach dem WE da raus kommt..

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22447
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 25.11.2005 17:24:15

Diie Apachelogfiles sind auf Wöchentlich und 52 Wochen eingestellt.

Code: Alles auswählen

/var/log/apache2/*.log {
	weekly
	missingok
	rotate 52
	compress
	delaycompress
	notifempty
	create 640 root adm
	sharedscripts
	postrotate
		if [ -f /var/run/apache2.pid ]; then
			/etc/init.d/apache2 restart > /dev/null
		fi
	endscript
}
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

tanita
Beiträge: 78
Registriert: 14.08.2003 13:45:27
Wohnort: Muc
Kontaktdaten:

Beitrag von tanita » 26.11.2005 09:57:46

@KBDCALLS, danke für dein Post, ist hilfreich. Kann es momentan nur in der Firma testen und jetzt ist WE, deshalb präventiv ein paar Fragen.

Werden durch weekly-> ein File/Woche und das durch rotate 52 -> 52 Wochen lang die Logfiles geschrieben, bzw. erst nach einer Woche wieder überschrieben?

Ich brauche täglich ein File (je nach Grösse ggf. mehr), die müssen archiviert werden und sollen erst nach einer Woche wieder überschrieben werden. D.h. daily und rotate 7 - richtig?

Ich will den Webwasher logrotieren und hatte auch gegrübelt, wie ich den schmerzlos restarten kann. Dieser startet mehrere Prozesse, d.h. mit einem kill -HUP wüsste ich nicht welchen.. ein restart gibt es meines Wissens nicht. Wollte das eigentlich vermeiden ihn zu stoppen, werde denke ich nicht drum rum kommen, ihn bei postrotate zu stoppen und dann wieder zu starten. Oder hat jemand in Fällen, wenn es mehrere Prozesse sind, eine andere Idee?

Habe am Beispiel Squid getestet. Weill es eine Testmaschine ist, geht eben kaum Traffic drüber, d.h. die Logfiles sind ziemlich leer.. und den zu restarten ist durch squid -k ... auch recht einfach..


Nochmal zu dem:

Code: Alles auswählen

find <verzeichnis> -type f -ctime 1 -exec gzip {} \;
So werden ja nur die Files vom letzten Tag gezipp, mit -ctime 2 die zwei Tage jünger usw... Wie finde ich all die, die kleiner als aktuelles Datum sind?

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 26.11.2005 10:25:17

hallo,

find -ctime +n

findet dateien die älter sind als n tage .... siehe "man"
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

tapferesschneiderlein
Beiträge: 189
Registriert: 11.08.2005 09:27:01

Beitrag von tapferesschneiderlein » 28.11.2005 10:53:17

Falls find in Deinem Fall wirklich nicht gut geeignet ist, geht eine if-Abfrage auch mit stat.

Code: Alles auswählen

man stat

Antworten