Pages : 1
#1 Le 18/03/2009, à 16:42
- wadpap
Effacer des fichiers de sauvegarde
Bonjour à tous,
Je fais des sauvegardes automatiques de ma base en mettant la date dans le fichier de sauvegarde, tout ça avec un script lancé via le cron.hourly.
Donc ca me donne des sauvegardes de type :
toto_18_03_13-30.sql
toto_18_03_14-30.sql
toto_18_03_15-30.sql
toto_18_03_16-30.sql
etc...
Le problème c'est qu'à chaque fois ça me rajoute un fichier toutes les heures. J'aimerais à chaque fois n'en garder que 3 et donc effacer celui qui a été créé 3 heures auparavant.
Voici mon script de sauvegarde :
date=$(date "+%d-%m-%y_%H-%M")
filename=toto_$date.sql
mysqldump --user=xxxxxx --password=xxxxxx database_name > $filename
Merci d'avance pour votre aide.
Hors ligne
#2 Le 18/03/2009, à 17:19
- lagentesmith
Re : Effacer des fichiers de sauvegarde
Bonjour,
Tu peux essayer de mettre un find qui recherche les fichier de plus de 3 heures pour les supprimer
find . -mmin +180 -exec rm -f {} \;
Un conseil, essayes cette commande qui ne les supprimera pas mais les listera, c'est plus sûr au début :
find . -mmin +180 -exec ls -l {} \;
Ou bien un truc peut être moins risqué, car si un jour tu as un problème et que tes sauvegardes ne s'effectuent pas pendant 3 heures pour une raison ou une autre, le script va tous les supprimer.
Tu peux compter combien tu as de fichiers toto_*.sql et si tu en as plus que 3, lancer la commande.
ex:
export nombreSave=`ls -l | grep -c toto_`
if [[ $nombreSave < 3 ]]
then
find . -mmin +180 -exec rm -f {} \;
fi
sudo apt-get remove WindowsXP
Hors ligne
#3 Le 18/03/2009, à 17:33
- wadpap
Re : Effacer des fichiers de sauvegarde
Merci pour ton aide !
Je préfère la 2eme solution.
Comme je ne suis pas très doué en script shell, j'aimerais bien comprendre :
que fais cette ligne là exactement ?
Elle trouve tous les fichiers qui ont une date de création supérieur à 180 minutes et les effaces c'est celà ?
Comment le script connait la variable mmin ?
find . -mmin +180 -exec rm -f {} \;
Hors ligne
#4 Le 18/03/2009, à 17:37
- lagentesmith
Re : Effacer des fichiers de sauvegarde
oui c'est ça,
mmin n'est pas une variable, c'est un argument de la commande find que tu peux retrouver dans le manuel de find
man find
sudo apt-get remove WindowsXP
Hors ligne
#5 Le 18/03/2009, à 17:50
- wadpap
Re : Effacer des fichiers de sauvegarde
oui c'est ça,
mmin n'est pas une variable, c'est un argument de la commande find que tu peux retrouver dans le manuel de findman find
Le problème c'est qu'il ne m'efface aucun fichier alors que j'en ai qui datent de plus de 3 heures...
Quand j'essaye de passer les commmandes à la main : sur la dernière je tape find . -mmin +180 -exec rm -f {} \
il me renvoie un prompt comme celà :
>
Hors ligne
#6 Le 19/03/2009, à 08:46
- lagentesmith
Re : Effacer des fichiers de sauvegarde
il manque un ; à la fin
si ca ne marche toujours pas, essaye de remplacer le rm -f par un ls -l pour voir s'il t'affiche les fichiers anciens.
sudo apt-get remove WindowsXP
Hors ligne
#7 Le 19/03/2009, à 11:52
- wadpap
Re : Effacer des fichiers de sauvegarde
il manque un ; à la fin
si ca ne marche toujours pas, essaye de remplacer le rm -f par un ls -l pour voir s'il t'affiche les fichiers anciens.
Ok c'est bon ça marche ! Merci bien.
Par contre j'ai une autre question :
Comment faire la même chose avec des commandes ftp. Car copie mes sauvegarde sur un ftp. Mais c'est pareil j'aimerais effacer les plus anciens.
Je sais qu'on efface avec la commande delete, mais là le find ne fonctionne pas...
Hors ligne
#8 Le 19/03/2009, à 13:29
- lagentesmith
Re : Effacer des fichiers de sauvegarde
tu ne peux pas faire la même chose la où est hébergé le site ftp ?
c'est un pc sous linux ?
dans ce cas tu fais le même script qui vérifie toutes les heures s'il y a 3 fichiers il peut en supprimer un pour préparer l'arrivée du nouveau par ftp.
Sinon autre astuce, si tu veut toujours 3 fichiers tu peux les appeler
fichier1
fichier2
et fichier3
(pas besoin de la date dans les fichiers, tu fais propriété pour savoir de quand il date)
de cette façon tu peux faire une boucle qui tourne sur 3 fichiers et comme ils ont le même nom au bout de 3 fichiers, il écrase le fichier précédent.
Je ne sait pas si je suis clair là...
sudo apt-get remove WindowsXP
Hors ligne
#9 Le 19/03/2009, à 14:06
- wadpap
Re : Effacer des fichiers de sauvegarde
Le ftp en question c'est un ftp pages perso de free. Donc accessible qu'en ftp.
Donc je vois comment y placer un script mais pas comment l'exécuter...
Hors ligne
#10 Le 20/03/2009, à 16:50
- lagentesmith
Re : Effacer des fichiers de sauvegarde
Il est possible de faire des scripts qui s'exécutent à partir de ton pc linux sur le site ftp.
ex :
tu créé un fichier save_ftp.sh
#!/bin/sh
ftp -n << 'EOF'
open tonsite.free.fr
user tonsite password
cd dossier
delete titi
delete toto
bye
EOF
Ce script se connecte au site ftp tonsite.free.fr avec le compte tonsite et le mot de passe password.
il va dans le dossier "dossier" et supprime les fichiers "titi" et "toto"
Pour info le EOF signifie End Of File et indique au script de sortir du ftp.
Pour ton utilisation tu peux donc faire un script qui supprime des fichiers et qui vient copier les nouvelles sauvegardes.
Ne pas oublier de rendre le script exécutable :
chmod +x save_ftp.sh
sudo apt-get remove WindowsXP
Hors ligne
#11 Le 02/06/2010, à 21:05
- raphdasouth
Re : Effacer des fichiers de sauvegarde
Hello
Je débute en linux et je dois également supprimer à fréquence régulière plein de fichiers images générés par des caméras.
J'ai suivi ce post et utilisé le script ci-dessus:
#!/bin/sh
ftp -n << 'EOF'
open ftpperso.free.fr
user xxxxx yyyyy
cd Cam
delete *.jpg
bye
EOF
Je lance le script depuis mon terminal et ca me renvoie un
*.jpg: No such file or directory
J'ai tenté plein de trucs, je n'y arrive pas alors que ca me semble tout con...
Pour info, j'ai testé cela, ca fonctionne parfaitement
#!/bin/sh
ftp -n << 'EOF'
open ftpperso.free.fr
user xxxxxx yyyyyyy
cd Cam
delete 1.jpg
delete 2.jpg
delete 3.jpg
bye
EOF
Dernière modification par raphdasouth (Le 02/06/2010, à 21:10)
Hors ligne
Pages : 1