web-dev-qa-db-fra.com

Comment insérer une date dans le nom de fichier avec logrotate

J'ai besoin de configurer logrotate pour faire pivoter les fichiers journaux à partir d'une application exécutée sur le serveur. J'ai besoin de la date à l'intérieur du nom de fichier.

J'ai mis dateext et également dateformat pour ajouter un - dans la date. Le nom du fichier résultat est: quel que soit.csv_2012-03-03

Je voudrais que l'horodatage fasse partie du nom de fichier en conservant l'extension; Quelle que soit_2012-03-03.csv.

29
Bernard Sfez

Pour insérer la date dans le nom de fichier (et non comme extension) d'un fichier sous Linux lors de la rotation d'un fichier, il est correct d'utiliser:

# Daily rotation
    daily

# We keep original file live
    copytruncate

# Rotation is 1 so we have always .1 as extension
    rotate 1

# If file is missing keep working
    missingok

    sharedscripts
    postrotate
            day=$(date +%Y-%m-%d)
            mv blabla.csv.1 /var/www/gamelogs/dir/blabla$day.csv
    endscript
}

C'est simple et ça marche bien.

23
Bernard Sfez

Vous devriez pouvoir garder l'extension à part, par ex. whatever.2012-03-03.csv, avec la configuration suivante:

whatever.csv {
  dateext
  dateformat .%Y-%m-%d
  extension .csv
  ...
}

Notez que dateext est délibérément vide.

61
Stéphane