lordtaki Posté(e) le 10 octobre 2018 Partager Posté(e) le 10 octobre 2018 Une vilaine expression régulière qui devrait faire l'affaire : *.*.20*_* En partant du principe que cela ne marchera que jusqu'en 2099. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
unPixel Posté(e) le 10 octobre 2018 Auteur Partager Posté(e) le 10 octobre 2018 (modifié) Rien compris 😂 Je fais quoi de ça stp ? *.*.20*_* Modifié le 10 octobre 2018 par InfoYANN 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordtaki Posté(e) le 10 octobre 2018 Partager Posté(e) le 10 octobre 2018 pour le find sur les répertoires : -name "*.*.20*_*" 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
unPixel Posté(e) le 10 octobre 2018 Auteur Partager Posté(e) le 10 octobre 2018 Ah ok. Bah je vais testé et je te tiendrai au courant 😉 Merci beaucoup ! Au faite, mon &DATE ne te plait pas pour la suppression des dossiers ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordtaki Posté(e) le 10 octobre 2018 Partager Posté(e) le 10 octobre 2018 C'est surtout que je ne comprends pas la signification derrière &DATE 🙂 Tu veux faire quoi avec cette syntaxe? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
unPixel Posté(e) le 10 octobre 2018 Auteur Partager Posté(e) le 10 octobre 2018 Bah cette ligne fournit le nommage des dossiers de sauvegardes. $BACKUP_DIR/$DATE/ par exemple. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordtaki Posté(e) le 10 octobre 2018 Partager Posté(e) le 10 octobre 2018 Déjà le & n'est pas bon, ce serait $. Ensuite, dans ton script la variable DATE c'est la date du jour. En faisant un find dans la foulée avec cette variable tu n'auras aucun résultat car il n'a pas 2 jours d'ancienneté. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
unPixel Posté(e) le 10 octobre 2018 Auteur Partager Posté(e) le 10 octobre 2018 (modifié) Citation Déjà le & n'est pas bon, ce serait $. Je me suis juste trompé en l'écrivant ici 😉 Pour le find, je comprend ce que tu veux dire. Mais alors je dois mettre quoi pour supprimer en fonction de l'ancienneté des dossiers stp ? Pour rappel, actuellement, le script comprend ça pour la suppression : # Suppression des fichiers .sql.gz après X jours. find $BACKUP_DIR/ -type f -name "*.sql.gz" -mtime +$RETENTION -exec rm {} \; # Suppression des dossiers vides. find $BACKUP_DIR/ -type d -name "*.*.20*_*" -mtime +$RETENTION -exec rmdir {} \; Je laisse comme ça selon tes conseils ? Modifié le 10 octobre 2018 par InfoYANN 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordtaki Posté(e) le 12 octobre 2018 Partager Posté(e) le 12 octobre 2018 Je te fais la traduction option par option: Citation find $BACKUP_DIR/ -type f -name "*.sql.gz" -mtime +$RETENTION -exec rm {} \; Chercher dans BACKUP_DIR les fichiers qui se terminent par .sql.gz et qui ont une date de modification de plus de RETENTION jour(s), lancer alors la commande rm sur chacun de ces fichiers. Citation find $BACKUP_DIR/ -type d -name "*.*.20*_*" -mtime +$RETENTION -exec rmdir {} \; Chercher dans BACKUP_DIR les répertoires dont le nom contient dans un ordre précis . .20 et _ et qui ont une date de modification de plus de RETENTION jour(s), lancer alors la commande rmdir sur chacun de ces fichiers (suppression faite uniquement si le répertoire est vide). Ne pas oublier de faire des tests avec -ls (ou -exec ls {} \; ). 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
unPixel Posté(e) le 12 octobre 2018 Auteur Partager Posté(e) le 12 octobre 2018 Merci pour tes explications 😉 Bon alors bonne nouvelle, les fichiers se suppriment bien. Mais pas les dossiers vides alors je me retrouve avec les dossiers mais sans les fichiers lol. find $BACKUP_DIR/ -type d -name "*.*.20*_*" -mtime +$RETENTION -exec rmdir {} \; passe pas 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordtaki Posté(e) le 12 octobre 2018 Partager Posté(e) le 12 octobre 2018 (modifié) avec -ls ça donne quoi comme résultat pour les dossiers? Sinon, je soupçonne que la suppression des fichiers modifie justement la date de modification du dossier qui les contient. Alternative, regexp moins pourrie: Citation # equivalent à mtime +1 pour la construction du timestamp DATE_2_DELETE=$(date --date "2 days ago" +"%d.%m.%Y_") find $BACKUP_DIR/ -type d -name "${DATE_2_DELETE}*" -exec rm -rf {} \; Vu qu'on utilise rm -rf impératif de s'assurer avant avec un -ls Modifié le 12 octobre 2018 par lordtaki 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
unPixel Posté(e) le 12 octobre 2018 Auteur Partager Posté(e) le 12 octobre 2018 (modifié) Je te confirme en effet que ça doit prendre la date de modification puisque le dossier vidé est daté au niveau modif de la date et heure de suppression. Je viens de tester ceci : find $BACKUP_DIR/ -type d -name "*.*.20*_*" -mtime +$RETENTION -ls Résultat : toujours pareil. Le dossier vide ne se supprime pas. J'ai ensuite essayé : DATE_2_DELETE=$(date --date "2 days ago" +"%d.%m.%Y_") find $BACKUP_DIR/ -type d -name "${DATE_2_DELETE}*" -ls Résultat : pareil, les dossiers vides ne se suppriment pas. J'ai donc testé : DATE_2_DELETE=$(date --date "2 days ago" +"%d.%m.%Y_") find $BACKUP_DIR/ -type d -name "${DATE_2_DELETE}*" -exec rm -rf {} \; Résultat : toujours pareil EDIT : je viens de tester ceci : find $BACKUP_DIR/ -type d -name "*.*.20*_*" -empty -type d -delete Résultat : cette commande fonctionne et supprime les dossiers vides. Elle peut convenur ou il vaut mieux l'éviter stp ? Modifié le 12 octobre 2018 par InfoYANN 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordtaki Posté(e) le 15 octobre 2018 Partager Posté(e) le 15 octobre 2018 l'option -ls ne supprime rien, au contraire elle liste. Le but est de vérifier les résultats d'une commande find avant de passer à l'étape suppression. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
unPixel Posté(e) le 15 octobre 2018 Auteur Partager Posté(e) le 15 octobre 2018 Ok mais il liste ou stp car il me créer aucune liste ou n'inscrit rien dans le fichier log. Quand à la commande qui fonctionne, tu en penses quoi stp ? Citation find $BACKUP_DIR/ -type d -name "*.*.20*_*" -empty -type d -delete 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordtaki Posté(e) le 15 octobre 2018 Partager Posté(e) le 15 octobre 2018 Normalement la sortie standard. S'il n'y a pas de résultat cela n'affiche rien. Quand je disais de faire -ls avant de faire -delete (ou -exec rm ...) c'était plutôt de tester la commande dans un terminal en direct (pas dans un script) avant de balancer la vraie commande qui supprime. Ta commande tu l'as déjà testée et elle fonctionne, que dire de plus? 🙂 Citation DATE_2_DELETE=$(date --date "2 days ago" +"%d.%m.%Y_") find $BACKUP_DIR/ -type d -name "${DATE_2_DELETE}*" -exec rm -rf {} \; Suis étonné que ceci ne fonctionne pas. Surtout que j'ai rapidement testé dans un terminal. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
unPixel Posté(e) le 15 octobre 2018 Auteur Partager Posté(e) le 15 octobre 2018 Supris aussi car elle me parait correcte. Après, je suis pas expert dans le domaine alors je ne sais pourquoi elle ne passe pas. Mais il y a pas mal de petites choses qui passent pas côté NAS Synology. Je me demande si ils ne brident pas ou ne changent pas à leurs sauces certaines commandes. Possible ? Merci en tout cas pour ton aide 😉 PS: j'avais pas compris qu'il fallait que je teste en direct via le terminal pour la commande -ls 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.