IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

archiver en gardant des traces


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut archiver en gardant des traces
    Bonjour,

    Je cherche à faire un script pour créer automatiquement des archives de fichiers non utilisés : par exemple, si je n'ai pas accédé à un fichier depuis 1 an, il est automatiquement ajouté à une archive, et transféré ailleurs, le principe étant de libérer de l'espace disque.

    Comme c'est automatique, j'aimerai trouver un moyen de laisser une trace du fichier : par exemple, un fichier texte qui comporte le nom de l'archive créée à la place du fichier que j'aurai archivé.

    Je sais récupérer les noms des fichiers avec find pour l'archivage, mais je ne vois pas comment créer les fichiers 1 par 1 à l'emplacement des fichiers que j'aurai archivé.

    Merci d'avance

  2. #2
    Membre chevronné Avatar de Leeloo_Multiboot
    Profil pro
    Administrateur Unix/Linux
    Inscrit en
    Avril 2008
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur Unix/Linux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2008
    Messages : 417
    Par défaut
    Bonjour,

    As-tu un bout de script à nous montrer?

    Dans ton cas, l'utilisation de commandes de base avec une boucle devrait faire l'affaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    find /ton_repertoire -type f -atime=+365 | while read line
    do
    ext=".tar"
    tar -cjf $line$ext $line && echo "Nom du fichier archivé: "$line >> /ton_repertoire/fichier_trace && mv $line$ext /ton/repertoire/darchivage/
    rm -rf $line
    done

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut
    Après pas mal de tests (je découvre :p) j'en étais arrivé là pour la partie "trace" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/bin/bash
     
    TESTOK=5
    TODAY=`date +%Y%m%d`
    NLINE=0
     
    find /home/test/ -type f -ctime -$TESTOK \> /home/archivage/$TODAY.txt
     
    cat /home/archivage/$TODAY.txt | while read LINE
    do
    	((NLINE++))
    	currentArchive=`sed -n "$NLINE p"  /home/archivage/$TODAY.txt`
    	echo "$TODAY" > $currentArchive.arch
     
    done
    Je suis en train de chercher comment exclure les fichiers créés en trace de l'archivage suivant , mais pour le moment j'ai un message d'erreur avec la condition qu'il m'avais semblé falloir utiliser, à savoir : -wholename pattern - prune

    Merci pour cette aide je vais décortiquer le code pour mieux comprendre les commandes à utiliser

    Edit : à première vue il semble que j'ai loupé pas mal de raccourcis possible :/

  4. #4
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    La réponse de Leeloo_Multiboot est pas mal, mais quelles remarques:
    - autant mettre ext en dehors de la boucle (plus clair, mais je pense que tu l'a écrit à la volée)
    - perso je mettrai le rm -rf sur la même ligne que le tar avec && parce que si jamais le tar foire (par exemple disque non monté, plus de place sur cette partition... etc...), tu n'as rien archivé et en même temps détruit des originaux
    - si tu cherche que des fichiers (-type f) le -r (récursif) du rm ne sert à rien !
    - s'il y a différents fichiers qui ont le même nom, tu vas juste garder le dernier (le code si dessous ne fait rien, c'est moins pire )

    Sinon, Shimegi je n'ai pas tout pigé à ton dernier post

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    ext=".tgz"
    find "/ton/repertoire" -type f -atime=+365 | while read line
    do
            backup=`basename $line`
            backup="/ton/backup/$backup$ext"
            [ ! -e "$backup" ] && tar cjzf "$backup" "$line" && echo "$line > $backup" >> "/ton/repertoiredetrace/fichier_trace" && rm -f "$line"
    done

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut
    Ben je cherche comment faire pour éviter que les fichiers créés comme trace lors de l'archivage puissent être eux aussi archivés, donc à les exclure du "find"

    Le man me retourne différentes options de tri par nom (je leur mets une extension .arch pour les identifier), qui serait si j'ai bien tout compris -wholename forme-du-nom-a-exclure -prune

    Mais j'ai visiblement pas pigé un truc comme il faudrait puisque ça ne fonctionne pas

    Je sais pas si j'aurai le temps aujourd'hui d'appliquer la solution, mais je vous tiens au courant

    Encore merci

  6. #6
    Membre chevronné Avatar de Leeloo_Multiboot
    Profil pro
    Administrateur Unix/Linux
    Inscrit en
    Avril 2008
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur Unix/Linux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2008
    Messages : 417
    Par défaut
    Ben je cherche comment faire pour éviter que les fichiers créés comme trace lors de l'archivage puissent être eux aussi archivés, donc à les exclure du "find
    Tu n'as pas besoin de créer un fichier de trace par fichier archivé, tu ajoutes au fichier de trace global comme dans les scripts précédents.
    Tu n'as pas besoin d'exclure le fichier de trace, l'option -atime=+365 de find le fait pour toi

Discussions similaires

  1. afficher des traces pour debug
    Par el3gans dans le forum MFC
    Réponses: 6
    Dernier message: 03/02/2006, 22h32
  2. [Servlet] Effectuer des traces avec log4j
    Par Shiryu44 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 04/04/2005, 16h43
  3. [JAR] créer une archive .jar contenant des images.
    Par keny dans le forum Général Java
    Réponses: 2
    Dernier message: 14/03/2005, 13h17
  4. [Applet] afficher des traces
    Par greg_one dans le forum Applets
    Réponses: 3
    Dernier message: 05/07/2004, 17h02
  5. Trouver les redirections dans des traces
    Par severine dans le forum Développement
    Réponses: 3
    Dernier message: 21/04/2004, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo