Bonjour à tous,
J'ai créé un script permettant :
- Exporter (dump) une base de données PostGre
- Compresser sous Zip le "dump"
- Synchroniser (export) en Rsync avec un NAS distant le dossier d'exportation
Le tout fonctionne très bien mais, comme j'ai un export/sauvegarde toutes les heures, je me retrouve avec des fichiers compressés de quelques 10 Mo grossissant toutes les heures.
Ce n'est pas encore dérangeant car j'ai un gros disque dur mais je souhaiterais purger les anciennes sauvegardes automatiquement qui ne servent pas à grand chose sauf à prendre de la place.
Le format des fichiers compressés est sous la forme : YYYYmmdd_hhiiss.zip
Est ce que vous connaissez des pistes sur lesquelles je pourrais me baser pour créer mon script ? Je souhaiterais le créer et comprendre plutôt que de faire un bête copier-coller…
Je pensais, à intervalle régulier, (cron) lister les fichiers dans le dossier de synchronisation grâce à stat puis si la date de création est > 4 mois (par exemple) => rm. Est ce que cela pourrait fonctionner ainsi ?
# find est ton ami
Posté par guitou . Évalué à 4.
Hello.
Avec la commande find, les options -mtime (ou -ctime) et -delete, tu devrais trouver ton bonheur.
Teste sans l'option delete pour la mise au point.
++
Gi)
[^] # Re: find est ton ami
Posté par AureusMS . Évalué à 1.
Merci pour ta réponse.
J'ai cherché et ai conçu cela (très simple finalement) :
Tu m'indiques que cette commande pourrait fonctionner :
find $chemin -iname "*.zip" -type f -ctime +180 -maxdepth 1 -delete
Est ce que cette commande va exécuter ce que je recherche (fichiers zip > 180 jours = poubelle)? (je préfère demander à cause de la commande rm ou delete)
[^] # Re: find est ton ami
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
broyeur et non poubelle mais oui, ça va le faire comme indiqué.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: find est ton ami
Posté par AureusMS . Évalué à 1.
Merci pour ta réponse.
J'ai cherché et ai conçu cela (très simple finalement) :
Tu m'indiques que cette commande pourrait fonctionner :
find $chemin -iname "*.zip" -type f -ctime +180 -maxdepth 1 -delete
Est ce que cette commande va exécuter ce que je recherche (fichiers zip > 180 jours = poubelle)? (je préfère demander à cause de la commande rm ou delete)
# Yep
Posté par guitou . Évalué à 2. Dernière modification le 22 novembre 2022 à 19:25.
Cela me semble correct.
Toutefois, je reitere: teste sans le -delete avant, pour voir si la liste des fichiers renvoyee te semble correcte ;)
Edit: toutefois, en un mot!
# Script
Posté par nico4nicolas . Évalué à 3.
Il y a quelques années, j'avais fait un petit script pour gérer nos sauvegardes sur un serveur. Il faudrait certainement changer le parser la date dans le nom du fichier pour que ça fonctionne mais le script permettait de garder toutes les sauvegardes de la semaine, 1 sauvegarde par semaine pour les semaines précédentes la semaine en cours, 1 sauvegarde par mois pour les mois précédents le mois en cours.
Il y a certainement beaucoup à redire et à améliorer sur l'écrire du script mais de mémoire, c'était fonctionnel.
# logrotate est ton ami
Posté par NeoX . Évalué à 8.
bien que prevu pour les logs, ca marche pour tout type de fichier en fait
1) c'est installé à peu pres partout
2) ca prend les fichiers non compressé et ca va les compresser pour toi
3) ca gere l'effacement dans le temps, par exemple en lui disant que tu veux garder les N derniers
ainsi tu pourrais avoir le dernier export en clair,
les N suivants compressés
les plus anciens sont virés
[^] # Re: logrotate est ton ami
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
Ceci dit, l'exercice est intéressant ne serait-ce pour la première raison évoquée (et je me suis déjà retrouvé sur des bécanes sans logrotate, le dernier en date étant un Windows, et juste avant un MacOs)
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.