Retourner aux forums || Retourner au forum general.general

general.general : supprimer les fichiers vieux de 1jour

Posté par funzyrip () le 13 janvier 2006
0
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

> Lire le message (11 commentaires, moyenne: 1,5).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Un truc du genre

Posté par Calim' Héros (Jabber id, page perso, ) le 13/01/2006 à 09:09. (lien). Évalué à 2.

find $BACKDIR -atime +1 -exec rm -rf '{}' ';'

--
Ce commentaire est :
Génial, Nul, 42
  • [^]Re: Un truc du genre

    Posté par funzyrip () le 13/01/2006 à 09:20. (lien). Évalué à 1.

    :-) oui merci pour la fin de la commande

    mais en fait elle s'execute bien la commande mais elle ne fait pas ce que je veux :-p

    les fichiers et répertoires ne sont pas supprimés...
    je ne dois pas faire appel a la bonne commande pourtant je vois pas comment faire autrement??

manque juste la fin

Posté par matli () le 13/01/2006 à 09:22. (lien). Évalué à 1.

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

    Posté par funzyrip () le 13/01/2006 à 09:34. (lien). Évalué à 1.

    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

      Posté par rangzen (page perso, ) le 13/01/2006 à 10:22. (lien). Évalué à 2.

      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

        Posté par funzyrip () le 13/01/2006 à 10:33. (lien). Évalué à 1.

        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

          Posté par gaaaaaAab () le 13/01/2006 à 11:13. (lien). Évalué à 3.

          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

            Posté par funzyrip () le 13/01/2006 à 14:38. (lien). Évalué à 1.

            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

              Posté par gaaaaaAab () le 13/01/2006 à 15:31. (lien). Évalué à 2.

              mais voila y a pas création du fichier....


              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

              Posté par gnujsa () le 13/01/2006 à 18:46. (lien). Évalué à 2.

              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

                Posté par funzyrip () le 17/01/2006 à 17:10. (lien). Évalué à 1.

                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

Revenir en haut de page || Retourner aux forums || Retourner au forum general.general