Pb find et ctime

Fermé
Rubbick Messages postés 29 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 19 novembre 2014 - 30 oct. 2014 à 14:15
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 - 31 oct. 2014 à 04:47
Bonjour,

J'ai petit soucis avec find et ctime, je vous explique.

2 dumps d'une base postgres sont exécutés tous les jours, un a 2h00 du matin l'autre a midi.
y'a un bout de script simple qui vérifie que le dump s'est déroulé correctement et si c'est le cas efface le fichier de dump le plus ancien avant de placer le nouveau dans le bon répertoire

FILE=db_test.`date +\%d.\%m.\%Y`.dump

pg_dump --file=$2 --format=c --compress=$PGCOMPRESSIONLEVEL --schema=test --schema=public $1

if [ $? = 0 ]
then
find /var/backups/dump -type f -ctime 0.65 -exec rm -f {} \;
mv /var/backups/dump_tmp/$FILE /var/backups/dump
else
mv /var/backups/dump_tmp/$FILE /var/backups/dump/$FILE.ERROR

fi
exit 0


le problème que je rencontre est que quand le script de dump de 2h00 s'exécute, il conserve bien le dump généré à midi la veille et efface celui de 2h00 de la veille, je me retrouve avec 2 dumps...celui de midi de la veille et celui qui vient d'être générer...c'est ce que je veux.

mais quand celui de midi s'exécute il efface les 2, je voudrais qu'il ne m'efface que celui de midi de la veille et conserver celui de 2h00.
Je me retrouve qu'avec celui qui vient d'être générer...j'ai essayer pas mal de d'ajustement de ctime avec toujours le même résultat.

J'espère que c'est assez claire pour avoir un petit coup main car là je m'arrache les cheveux.

Merci à vous.

1 réponse

jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
31 oct. 2014 à 04:47
Bonjour,
Je crois que je comprends le problème.

Essaie de remplacer -ctime par -mmin
Dans ton cas, ctime ne peut pas être un entier, c'est un peu embêtant.

Si tu utilises mmin tu peux mettre un entier.

Je mettrai la valeur 900 derrière.
A tester.

-mmin 900


Comme ci-dessous :
if [ $? = 0 ]
then
find /var/backups/dump -type f -mmin 900 -exec rm -f {} \;
mv /var/backups/dump_tmp/$FILE /var/backups/dump
else
mv /var/backups/dump_tmp/$FILE /var/backups/dump/$FILE.ERROR

fi
exit 0
0