Ceci est la structure de ma sauvegarde:script bash Ubuntu pour supprimer les anciens fichiers de sauvegarde de plusieurs répertoires
- Les sauvegardes sont stockées dans un répertoire nommé
cron_hourly_backup
- Dans ce répertoire un répertoire est créé chaque jour qui est nommé avec le format
ddmmyyyy
. - Dans chacun de ces répertoires il y a 5-6 sauvegardes db qui sont sous-évalués toutes les heures par un travail cron, et les fichiers de sauvegarde de toutes les heures ont nom unique en utilisant l'horodatage (ex:
db1_000000.zip .... db5_000000.zip
jusqu'àdb1_230000.zip ... db5_230000.zip
)
Maintenant, je veux supprimer par programme tous les fichiers de sauvegarde de plus d'un jour (OU, conserver la sauvegarde d'aujourd'hui et d'hier), mais gardez un dernier db (de tous les 5 dbs) pour chaque jour. Comment puis-je atteindre cet objectif?
Actuellement, je fais ceci:
find . -type f \(-name "*_00*" \
-o -name "*_01*"-o -name "*_02*" \
-o -name "*_03*" -o -name "*_04*" \
-o -name "*_05*" -o -name "*_06*" \
-o -name "*_07*" -o -name "*_08*" \
-o -name "*_09*" -o -name "*_10*" \
-o -name "*_11*" -o -name "*_12*" \
-o -name "*_13*" -o -name "*_14*" \
-o -name "*_14*" -o -name "*_15*" \
-o -name "*_16*" -o -name "*_17*" \
-o -name "*_18*" -o -name "*_19*" \
-o -name "*_20*" -o -name "*_21*" \
-o -name "*_22*" \) -delete
Cela fonctionne très bien, problème est
- si la sauvegarde de l'heure 23 n'est pas disponible pour tous les jours, je vais perdre tous les fichiers de ce jour-là .
- Il va également supprimer les sauvegardes d'aujourd'hui et d'hier.
Toute suggestion sur la façon de résoudre les 2 problèmes ci-dessus est très appréciée.
Tout les modifier après la création? 'trouver. -type f -nom "db *" -mtime +1 -delete'? – arco444
Non, mais il y a 5-6 db donc j'utilise * pour les inclure tous – Ash
Okay, donc je peux utiliser -mtime pour mon 2ème problème. Toute solution pour le 1er? Je veux vérifier le dernier DB de chaque jour, et supprimer toutes les sauvegardes restantes. – Ash