general.general : supprimer les fichiers vieux de 1jour
Posté par funzyrip () le 13 janvier 2006
Bonjour à tous,
je cherche a supprimer dans un répertoire tous les fichiers et répertoires vieux de 24heures (toux ceux qui ont été créés la veille)
j'ai trouvé ça :
find $BACKDIR -atime +1 -exec rm -rf {}
mais ça ne fonctionne pas
ind: missing argument to `-exec'
mes recherches google n'ont pas pas données grand chose
peut etre qu'une option dans le man de rm m'a échappé???
si vous avez une solution... merci d'avance
je cherche a supprimer dans un répertoire tous les fichiers et répertoires vieux de 24heures (toux ceux qui ont été créés la veille)
j'ai trouvé ça :
find $BACKDIR -atime +1 -exec rm -rf {}
mais ça ne fonctionne pas
ind: missing argument to `-exec'
mes recherches google n'ont pas pas données grand chose
peut etre qu'une option dans le man de rm m'a échappé???
si vous avez une solution... merci d'avance
> Lire le message (11 commentaires, moyenne: 1,5).
Vous avez demandé le commentaire #670679.



manque juste la fin
find $BACKDIR -atime +1 -exec rm -rf {} \;
le \; indique la fin de la commande en argument d'exec. Il faut l'échapper car sinon le shell l'interprète comme un véritable séparateur de commande
[^]Re: manque juste la fin
euh
a chaque fois ca s'execute bien mais ça supprime jamais rien :-/
ou plutôt que les fichiers vieux de 1 jour, y aurai pas un moyen de supprimer ceux qui ont plus de 24h ou 12h??
merci de votre aide
[^]Re: manque juste la fin
J'espère pour toi que si tu t'amuses à ça sous root, tu viens également de recompiler ton système en entier en moins de 24h ou 12h :)
[^]Re: manque juste la fin
non mais je dois faire de la sauvegarde avec rsync...
dans un dossier /backup je créer des dossiers ttes les heures dans lesquels viennent se mettre les fichiers modifiés ou supprimés...
mais voila je voudrais que les dossiers de 09h-12-01-2006 d'hier soit supprimé...
find $BACKDIR -atime +1 -exec rm -rf {} \;
et cette commande ne supprime rien du tout ???
j'ai bo chercher je ne trouve pas....???
[^]Re: manque juste la fin
man find
forcément, avec -atime, ça va pas faire tout à fait ce que tu veux, surout si tu fais des ls pour voir si les fichiers sont toujours là ;-)
Essaie avec mtime ou ctime
[^]Re: manque juste la fin
bah apparement ce n'est pas possible...
-atime n
dernier accès au fichier il y a n*24 heures.
-ctime n
dernière modification du statut du fichier il y a n*24 heures.
mtime n
Fichier dont les données ont été modifiées il y a n*24 heures.
mais voila y a pas création du fichier....
pas si fort ke ça le pinguouin :-p
[^]Re: manque juste la fin
et non. Mais cette date là, tu l'auras pas !
cf les réponses de Lew Pitcher
http://groups.google.com/group/alt.os.linux/browse_thread/th(...)
c'est en anglais et ça dit que la date de création n'est pas préservée. Le mieux que tu auras, c'est le mtime. Et comme le thread date d'aujourd'hui, ça doit s'appliquer aussi aux noyaux 2.6 et pas à un 2.2 antédiluvien ;)
[^]Re: manque juste la fin
Rapidement:
atime: Lecture du fichier
mtime: Ecriture du fichier
ctime: Ecriture des meta-données du fichier (l'inode, donc proprietaire, groupe, permission, taille, etc...)
find $BACKDIR -mtime 1 renvoie tout les fichiers accedé en écriture il y a 24h
find $BACKDIR -mtime +1 renvoie tout les fichiers accedé en écriture il y a plus de 24h
find $BACKDIR -mtime -1 renvoie tout les fichiers accedé en écriture il y a moins de 24h
Comme dit le commentaire au dessus, il n'y a pas de date de création, mais le mtime devrait faire l'affaire dans ton cas.
P.S. j'espere que tu es sur du contenu de la variable $BACKDIR ...
[^]Re: manque juste la fin
bah en fait non aucun truc ne convient puisque le poste doit mettre a jour je ne sais pas une table d'index ou un truc dans le genre puisque les heures d'accès et d'écriture des fichiers sont bizarres (du style le matin a 7h26 alors qu'il n'y a personne dans les locaux ni aucun service lancé a cette heure)
je me suis amusé a écrire un truc pour supprimé les dossiers nommé de la veille... c pas optimal (ex: si on coupe le poste mardi a 16h et qu'on rallume jeudi a 18h le dossier de 16h de mardi ne sera pas supprimé) mais ça marche mieux que les find xtime qui me supprimaient des fichiers de 2h comme ceux de 24h et de plus a chaque restauration que j'aurai effectuée les fichiers auraient eu leur date de modifier et seraient faire .... .!
#########################################################################
# Variable representant le jour de la sauvegarde
#########################################################################
JOUR=`date +%Hh--%d-%m-%Y`
HIER=`date +%Hh--%d-%m-%Y --date '1 days ago'`
LUNDI=`date +%w`
VEND=`date +%Hh--%d-%m-%Y --date '3 days ago'`
#########################################################################
# Suppression du dossier backup de la veille
# Si le jour est lundi, on supprime le dossier backup de vendredi
#########################################################################
if [ $LUNDI -eq 1 ]
then
if [ -d "$BACKUPDIR/$VEND" ]
then
echo "Suppression du backup des 24 dernieres heures $BACKUPDIR/${VEND}";
rm -rf $BACKUPDIR/$VEND;
fi
else
if [ -d "$BACKUPDIR/$HIER" ]
then
echo "Suppression du backup des 24 dernieres heures $BACKUPDIR/${JOUR}";
rm -rf $BACKUPDIR/$HIER;
fi
fi
#########################################################################
## Creation du dossier backup du jour
#########################################################################
if [ -d "$BACKUPDIR/$JOUR" ]
then
echo "Le repertoire $BACKUPDIR/${JOUR} existe deja!";
else
mkdir $BACKUPDIR/$JOUR;
fi
BACKDIR=$BACKUPDIR/$JOUR
###########################################################
ca me permet ainsi d'avoir toujours un cycle de 24h pour restaurer les fichiers