(erledigt) logrotate: mit compresscmd verschlüsselte gpg-Dateien ins log-Unterverzeichnis verschieben

GwenDragon

Registered User
Kaputte Logviewer versuchen alle Logdateien in /var/www/vhosts/DOMAIN.TLD/log/ zu lesen, leider auch die als GPG komprimierten, was zu Problemen der Anzeige führt.

Ich benutze derzeit das hier als globale logrotate config:
Code:
# ---- encrypt saved logs
shred
compress
compresscmd /usr/bin/gpg
compressoptions --always-trust --encrypt --recipient s12@DOMAIN.TLD
compressext .gpg
# ---

Die Domain selbst hat in logroate.d diese:
Code:
/var/www/vhosts/DOMAIN.TLD/logs/*.processed {
    daily
    rotate 7
    compress
    missingok
    copytruncate
}
/var/www/vhosts/DOMAIN.TLD/logs/error_log {
    daily
    rotate 7
    compress
    missingok
    copytruncate
}
/var/www/vhosts/DOMAIN.TLD/logs/proxy_error_log {
    daily
    rotate 7
    compress
    missingok
    copytruncate
}
/var/www/vhosts/DOMAIN.TLD/logs/php-fpm_error.log {
    daily
    rotate 7
    compress
    missingok
    copytruncate
}
Das erzeugt aber eben die gpg-Dateien wie z.B. error_log.1.gpg etc. im selben Verzeichnis wie die Logdateien.

Wie kann ich bei lograte per compresscmd anweisen, die .gpg-Dateien in eine notfalls zu erstellendes ./enc/ zu schieben?

Ich komme ja nicht einfach an das aktuell abgearbeitet Verzeichnis der Logdateien sonst könnte ich ja mit mkdir das Unterverzeichns erzeugen und mit mv dahin schieben.

Mein Denkfehler?
 
Last edited:
Code:
... {
    ...
    compress
    olddir /var/log/archiv
    ....
}
 
olddir kenn ich ja. ;-)
Aber das ist je keine Möglichkeit etwas in einem relativen Pfad abzulegen.

Für meine Lösung soll aber nicht alles in einen einzelnen Ordner sondern unterhalb von z.B. /var/www/vhosts/DOMAIN.TLD/logs/old/ wobei verschiedene Domains auf dem Server sind.

Gibt es mit logrotate überhaupt eine Lösung?
Sonst würde ich nämlich einen cronjob nehmen, der dann das Unterverzeichnis erstellt und dann die .gpg-Dateien verscheibt, aber das ist eben nicht so schön, finde ich.
 
man logrotate.conf
...
olddir directory

Logs are moved into directory for rotation. The directory must be on the same physical device
as the log file being rotated, unless copy, copytruncate or renamecopy option is used. The directory
is assumed to be relative to the directory holding the log file unless an absolute path name is
specified.
When this option is used all old versions of the log end up in directory. This option may be
overridden by the noolddir option.
...
 
@greystone Himmel, ist sollte nicht nach den Beispielen in der man-page gehen und dann dekne, dass es nur mit absoluten Pfaden geht.
Danke, ich muss mal meien Brille putzen.

Muss ich nun mal testen auf meiner lokalen VM wie das klappt mit olddir.

//EDIT: Das Unterverzeichnis muss aber existieren.
Aber eben mal olddir nehmen ist auch nicht.

Dann kann ich ja gleich ein bash-Programm schreiben, das per postrotate lastaction und endscript oder Cronjob die verschlüsselten Logs verschiebt.
Ich dachte halt es gäbe eine elegante Lösung, die ich eben nur übersehen hab.
 
Last edited:
Weitere Nachprüfung bei dem Logviewer hat nun ergeben, dass dieser keine versteckten Dateien liest, wäre auch eine Lösung.

Nur wie bekomme ich den Dateinamen in compressoptions sodass och bei gpg den Parameter -o nutzen kann?

Oder sollte compressoptions --always-trust --encrypt --recipient s12@DOMAIN.TLD --output ".$1" klappen?
Geht nicht über compressoptions
 
Last edited:
So, ich löse das nun über einen cronjob, der die verschlüsselten Webserver-Logs umbenennt, sodass sie versteckt sind – damit ist eine Verschiebung unnötig geworden.
Warum? Kunde will nicht, dass die logrotate-Konfigs angetastet werden.

Erledigt.
 
Back
Top