J'écris un petit script bash à utiliser avec cron, pour sauvegarder la base de données. Lorsque je recherche d'anciennes sauvegardes (plus de 180 jours), la commande find les supprime.find commande avec -delete retourne toujours le code d'état 0
Il ne les supprime, mais aussi quand il le fait et quand il n'y a rien à supprimer, il retourne 0.
#!/bin/bash
# Vars
TODAY=$(date +%d%m%y)
BDIR=/backup/
FLOG="/var/log/mydb_backup.log"
# Backing up the db
su -c "pg_dump --format=c --file=${BDIR}mydb_db_backup.${TODAY} mydb" postgres
if [ $? -eq 0 ]; then
LOG="mydb DB of ${TODAY} backed up!"
else
LOG="Problem to back up mydb DB of ${TODAY}"
fi
# Delete db backup older than 180+ days
find ${BDIR} -type f -mtime +180 -delete
if [ $? -eq 0 ]; then
LOG+=" - Old DB backup deleted"
else
LOG+=" - No Old DB backup to delete"
fi
# Writing result
echo ${LOG} >> ${FLOG}
echo $?
retour toujours 0, même si elle ne supprimait pas quoi que ce soit (qui devrait se produire le premier mois seulement). Y a-t-il quelque chose que je fais de mal?
Copie inter-site: https://serverfault.com/questions/225798/can-i-make-find-return-non-0-who-no-matching-files-are-found –
En raison de la suppression de la suppression Tout n'est pas une erreur. 'find' ne renvoie pas le nombre de fichiers supprimés, mais un code d'état décrivant toute erreur survenue pendant l'exécution. Comme il a couru sans erreurs, il a renvoyé 0 comme prévu – litelite
Vrai .. J'ai totalement oublié qu'il ne s'agit pas de supprimer mais de trouver. Merci les gars! Je vais le réparer d'une manière ou d'une autre;) – Nihvel