Ma SME sert à récupérer chaque nuit des fichiers de sauvegardes de sites hébergés ailleurs. Ça fonctionne très bien, mais avec le temps je me retrouve à devoir faire le ménage plus ou moins régulièrement pour purger les fichiers trop vieux. À la main c'est pénible car je sauvegarde plusieurs sites.
Voici ce que j'ai mis en place.
Donc chaque nuit j'obtiens un nouveau fichier par site. Celui-ci est nommé suivant le format :
NomDuSite-AAAAMMJJ-HHMMSS.ext
J'aimerai ne conserver que :
- les 7 derniers jours : toutes les sauvegardes quotidiennes
- les 30 à 7 derniers jours : une sauvegarde par semaine (1, 8, 15 et 22 du mois)
- les 1 an à 30 derniers jours : une sauvegarde mensuelle (1er du mois)
- plus vieux : une sauvegarde annuelle
J'ai fait ce script, un peu brut de fonderie, mais ça marche bien. Je le déclenche toutes les nuits par cron :
#!/bin/bash
cd /le/chemin/vers/mes/sauvegardes/
find NomDuSite-20??0201-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??0301-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??0401-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??0501-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??0601-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??0701-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??0801-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??0901-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??1001-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??1101-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20??1201-??????.ext -mtime +365 -exec rm {} \;
find NomDuSite-20????02-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????03-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????04-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????05-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????06-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????07-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????08-??????.ext -mtime +30 -exec rm {} \;
find NomDuSite-20????09-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????10-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????11-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????12-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????13-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????14-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????15-??????.ext -mtime +30 -exec rm {} \;
find NomDuSite-20????16-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????17-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????18-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????19-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????20-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????21-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????22-??????.ext -mtime +30 -exec rm {} \;
find NomDuSite-20????23-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????24-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????25-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????26-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????27-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????28-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????29-??????.ext -mtime +30 -exec rm {} \;
find NomDuSite-20????30-??????.ext -mtime +7 -exec rm {} \;
find NomDuSite-20????31-??????.ext -mtime +7 -exec rm {} \;