Mon Google-Fu me rapproche de l'objectif, mais je n'y parviens pas tout à fait, et je pense que je suis trop novice en matière de Linux pour rassembler les pièces du puzzle.
J'ai un très gros fichier journal de plus de 200 Go, qui est toujours en cours d'écriture. Logrotate ne l'atteindra pas à temps pour que l'espace disque devienne un problème. De plus, je ne veux pas déclencher un autre cycle de logrotate
car je ne veux pas qu'elle affecte toutes les autres cibles dans sa configuration. J'ai ajouté la nouvelle strophe dans mon fichier logrotate.conf
comme tel :
/log/myDevice/myDevice.log {
compress
daily
rotate 360
maxage 360
missingok
compresscmd /usr/bin/xz
dateext
compressext .xz
copytruncate
olddir /log/archive/myDevice
}
Je voudrais faire ces choses manuellement :
- copytruncate : pour supprimer le fichier journal actuel, mais permettre à syslog-ng de continuer à travailler sur le fichier ouvert/live actuel.
- (pas ci-dessus dans le fichier logrotate.conf)
split
Le système de gestion de l'information est le suivant : pour découper le rouleau de bois actuel en plus petits morceaux xz
compresser dans le dossier d'archivage
Je peux split(1)
y xz(1)
mais lorsque j'essaie d'extraire le fichier cible, je n'y arrive pas.
J'ai essayé sudo mv myDevice.log ZmyDevice.log && touch myDevice.log
mais syslog-ng se contente de déplacer le fichier d'origine (et son nouveau nom) et continue à écrire joyeusement. Ce qui m'a semblé logique lorsque j'ai pensé à la façon dont le fichier est référencé par syslog-ng.
J'essaie donc de trouver un moyen de faire une sorte de manuel. copytruncate
afin de remplacer le fichier par un autre "en place", pour ainsi dire, et laisser syslog-ng continuer à faire ce qu'il veut.