Supprimer backup sauf certains jours

Résolu/Fermé
kevin54 - 9 avril 2010 à 10:25
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 9 avril 2010 à 14:08
Salut à tous!
J'utilise un serveur de fichier Freenas et chaque jour des scripts copie des sauvegardes de différents serveurs web sur mon serveur FreeNAS.

Mais je veux faire un autre script qui permet d'effacer les sauvegardes de plus de 2 jours, sauf les 3 derniers dimanches.
Pour l'instant, j'ai ceci:
find /mnt/raid/Sauvegarde/Base-Team/www -name "www_*.tar.gz" -mtime +2 -exec rm {} \;
Mais je ne sais pas comment garder les 3 derniers dimanches ...

Quelqu'un peut m'aider?
Merci!
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 avril 2010 à 10:33
Salut,

Il ressemble à quoi le nom complet de tes sauvegardes ?
En se basant que sur la date, ça me semble compromis ton histoire ;-\

A mon avis, il faudrait que dans le nom de tes archives apparaisse clairement le jour (dimanche/sunday ou dim/sun) pour éventuellement dans un premier temps faire une exclusion des noms contenant "dim" et ensuite n'en conserver que trois...
0
le nom complet ressemble à ceci :
www_04-08-10.tar.gz

Ton idée me semble pas mal mais comment la réaliser concrètement ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 avril 2010 à 10:54
Re-

En partant sur un nom d'archive modifié comme ceci "www_dim-04-08-10.tar.gz", voilà ce que tu pourrais faire pour dans un premier temps en effaçant que les archives de la semaine (sauf du dimanche) :

jp@MDK:~/tmpfs ssh$ ls -1
www_dim-04-08-10.tar.gz
www_dim-05-08-10.tar.gz
www_jeu-04-08-10.tar.gz
www_jeu-05-08-10.tar.gz
www_lun-04-08-10.tar.gz
www_lun-05-08-10.tar.gz
www_mar-04-08-10.tar.gz
www_mar-05-08-10.tar.gz
www_mer-04-08-10.tar.gz
www_mer-05-08-10.tar.gz
www_sam-04-08-10.tar.gz
www_sam-05-08-10.tar.gz
www_ven-04-08-10.tar.gz
www_ven-05-08-10.tar.gz

jp@MDK:~/tmpfs ssh$ find . \( -name "*dim*" -prune \) -o \( -type f -print \)
./www_sam-05-08-10.tar.gz
./www_ven-05-08-10.tar.gz
./www_jeu-05-08-10.tar.gz
./www_mer-05-08-10.tar.gz
./www_mar-05-08-10.tar.gz
./www_lun-05-08-10.tar.gz
./www_sam-04-08-10.tar.gz
./www_ven-04-08-10.tar.gz
./www_jeu-04-08-10.tar.gz
./www_mer-04-08-10.tar.gz
./www_mar-04-08-10.tar.gz
./www_lun-04-08-10.tar.gz

jp@MDK:~/tmpfs ssh$

Après quoi tu fais une recherche sur les "dim" et tu ne gardes que les trois derniers...
0
Merci de ton aide !
Par contre j'ai quelques questions :
-Pourquoi quand tu fais un ls-l tu a des doublons et des jours pas forcément cohérent ? C'est juste pour me montrer un exemple ?

- Ensuite comment garder les 3 derniers "dim" ?

Encore merci de ton aide, je vais essayer de m'en sortir avec ta méthode :)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 avril 2010 à 11:40
-Pourquoi quand tu fais un ls-l tu a des doublons et des jours pas forcément cohérent ? C'est juste pour me montrer un exemple ?
C'est un exemple, j'ai créé les fichiers à la va-vite, juste pour argumenter et tester ma réponse...
De plus c'est un "UN" et non pas un "ELLE" minuscule ;-\

- Ensuite comment garder les 3 derniers "dim" ?
Un truc du genre devrait t'afficher ce qu'il faut (ATTENTION : c'est un "UN" et non pas un "ELLE" minuscule) :

ls -lrt *dim* | tail +4
0
Merci pour ton aide, j'ai pas fait exactement comme ca mais je m'en suis inspiré ^^
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 avril 2010 à 14:03
Ce serait sympa de nous afficher ce que tu as fait alors... ;-\

Merci d'avance ;-)
0
J'ai fait ceci :
find /mnt/raid/Sauvegarde/Cyberviseur -name "www_dim-*.tar.gz" -mtime +21 -exec rm {} \;

Je supprime tout les www-lun , www-mar, www-mer ...etc au bout de 2 jours, sauf le www-dim qui lui est enlevé au bout de 21 jours.
0