Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

purge selon ancienneté fichiers.....

3 réponses
Avatar
Florent GILAIN
Bonjour a tous,

J'ai un paquet de fichiers de log générés par mes applications qui ont la
forme :

nom_bidon.out.ANNEEMOISJOUR

Mon but est de pouvoir, via un script, les archiver en pouvant demander de
conserver ceux plus récents qu'un certain nombre de jours...

Exemple :

Pour archiver ceux de plus de 7 jours :

monscript.ksh nom_bidon.out 7

Merci de votre aide, je vois pas trop comment fonctionner avec les calculs
sur les dates....

Florent G.

3 réponses

Avatar
Stephane CHAZELAS
Le Tue, 8 Jul 2003 12:31:51 +0200, Florent GILAIN écrivait :
[...]
Pour archiver ceux de plus de 7 jours :

monscript.ksh nom_bidon.out 7

Merci de votre aide, je vois pas trop comment fonctionner avec les calculs
sur les dates....


En supposant que les fichiers soient de la forme
prefix.20030708

#! /bin/sh
prefix=$1
days=$2
directory=/var/log/toto
archive=/var/log/archive
IFS=" "; set -f

cd "$directory" || exit

ls | awk -F. -v days="$days" -v prefix="${prefix}." `
date +'-v Y=%Y -v M=%m -v D=%d'
` -v archive="$archive" '
function daysSinceEpoch(y,m,d) {
return int((y-(m<3?1969:1968))*1461/4)+int((153*(m+(m<3?9:-3))+2)/5)+d-672
}
BEGIN {
limitÚysSinceEpoch(Y,M,D) - days
lp = length(prefix)
}
substr($0,1,lp) == prefix &&
daysSinceEpoch(substr($NF,1,4), substr($NF,5,2),
substr($NF,7,2)) <= limit {
system("mv " $0 " " archive)
}'

(pas testé, mais tu as l'idée: daysSinceEpoch retourne le nombre
de jours depuis 1970/1/1, note que ça ne fonctionnera plus après
2100).

--
Stéphane

Avatar
André
Bonjour,

man find donne une réponse instructive ex :

find . -name "*out*" -mtime 7 | tar cvf archive.tar

@+
"Florent GILAIN" a écrit dans le message de
news:bee6pf$k74$
Bonjour a tous,

J'ai un paquet de fichiers de log générés par mes applications qui ont la
forme :

nom_bidon.out.ANNEEMOISJOUR

Mon but est de pouvoir, via un script, les archiver en pouvant demander de
conserver ceux plus récents qu'un certain nombre de jours...

Exemple :

Pour archiver ceux de plus de 7 jours :

monscript.ksh nom_bidon.out 7

Merci de votre aide, je vois pas trop comment fonctionner avec les calculs
sur les dates....

Florent G.




Avatar
[SauroN]
"Florent GILAIN" a écrit dans le message de
news:bee6pf$k74$
| Bonjour a tous,
|
| J'ai un paquet de fichiers de log générés par mes applications qui ont la
| forme :
|
| nom_bidon.out.ANNEEMOISJOUR
|
| Mon but est de pouvoir, via un script, les archiver en pouvant demander de
| conserver ceux plus récents qu'un certain nombre de jours...
|
| Exemple :
|
| Pour archiver ceux de plus de 7 jours :
|
| monscript.ksh nom_bidon.out 7
|
| Merci de votre aide, je vois pas trop comment fonctionner avec les calculs
| sur les dates....
|
| Florent G.
|
|
|

regarde du cotes de rotatelog

c ets exactement ce qu il fait

il archive par defaut les n-4 fichier de log, fait de l etetage, du gzip/
tar gz, et meme des action pre et post ( genre arret de l appli ou kill -hup
pour que le nouveau fichier de log soit pris en compte ....)