Aller au contenu

Petit soucis dans un script.


Messages recommandés

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é par InfoYANN
Lien vers le commentaire
Partager sur d’autres sites

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 {} \; ).

Lien vers le commentaire
Partager sur d’autres sites

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

 

 

Lien vers le commentaire
Partager sur d’autres sites

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é par lordtaki
Lien vers le commentaire
Partager sur d’autres sites

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é par InfoYANN
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.