Forum général.général supprimer les fichiers vieux de 1jour

Posté par  .
Étiquettes : aucune
0
13
jan.
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
  • # Un truc du genre

    Posté par  (site web personnel) . Évalué à 2.

    find $BACKDIR -atime +1 -exec rm -rf '{}' ';'
    • [^] # Re: Un truc du genre

      Posté par  . É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  . É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  . É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  (site web personnel) . É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  . É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  . É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  . É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  . É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  . É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  . É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

Suivre le flux des commentaires

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