Forum Programmation.shell Récupération d arborescence et de fichier ini / conf

Posté par  .
Étiquettes : aucune
0
21
sept.
2004
Bonjour ,

Je cherche à récupérer des fichiers d'un type précis (on va dire des .conf et des .ini ) qui se baladent dans un arborescence plus ou moins profonde (l'exemple que je vais donner est a deux niveaux , mais l'ideal serai de pouvoir aller jusqu'au bout). Le but étant de créer une archive tar ou tgz qui lorsqu'on la décompresse regénérerai l'arborescence complète d'où se trouvaient les fichiers ini et conf en question :

exemple :
/export/home/monprog
data.dat
prog.bin
prog.ini
/export/home/monprog/sousprog
sousdata.dat
sousprog.bin
sousprog.ini
/export/home/monprog/sousprog2
sousdata2.dat
sousprog2.bin
sousprog2.ini

Si je lance mon script là dessus , il doit me générer un fichier qui une fois décompressé me donne la chose suivante :

/temp/export/home/monprog
prog.ini
/temp/export/home/monprog/sousprog
sousprog.ini
/temp/export/home/monprog/sousprog2
sousprog2.ini

Je ne l'ai pas encore précisé mais ceci est pour récupérer les fichiers de conf d un serveur sun qui fait tourner différentes applications GL Trade .

Je pense qu'un tel script servira à tout les admins *nix .


Merci d'avance pour votre aide
  • # avec find

    Posté par  . Évalué à 4.

    Cette commande : find monprog -name \*.ini -o -name \*.dat
    te donne la liste des fichiers ("-o" signifie "or" logique) que tu cherches.

    Pour archiver dans un fichier, je ferais :
    tar czf monarchive.tgz $(find monprog -name \*.ini -o -name \*.dat)

    Jette un oeil au man de find, tu verras qu'il y a pas mal de possibilités, comme limiter la profondeur de recherche avec "-maxdepth levels", filtrer en fonction de la taille avec "-size arg", filtrer en fonction du type avec "-type filetype".
    Par exemple :
    find -type f -maxdepth 2 -size -100k
    te donne tous les fichiers de moins de 100k dans le répertoire courant et les sous-répertoires juste en-dessous.

    Sinon je crois que tar a des options pour restreindre le type de fichier qu'il prend en compte.
    • [^] # Re: avec find

      Posté par  . Évalué à 4.

      Passer le résultat de "find" en argument ne fonctionne pas s'il est trop long.
      Utiliser plutôt l'option --files-from de tar et lui faire avaler stdin (-T options courte):

      find /export/home/monprog -name \*.ini -o -name \*.dat | tar -cpvszf /mon_fichier.tar.gz -T -
  • # Tentative

    Posté par  . Évalué à 3.

    tar cjf nomdutar.bz2 `find racinearbo \( -name '*.conf' -o -name '*.ini' \) -print`
    Hopzisselp
    • [^] # Re: Tentative

      Posté par  . Évalué à 4.

      Je ferais plutot un find racinearbo \( -name '*.conf' -o -name '*.ini' \) | tar cjf nomdutar.bz2

      Attention, si c'est une SUN, n'utilise pas le tar livré avec le système (Entre autres, il n'accepte pas le 'j' de cjf, et sur certaines versions de solaris le tar est buggé). Installe un gnu tar ou utilise cpio.
  • # Pour ceux que ca interresseraient :

    Posté par  . Évalué à 1.

    donc sous une Sun (Sun OS 5.8) voila ce que j obtients :

    tar -cf config_ùname -a |cut -f2 -d" "`_`date +%Y%m%d`.tar `find ./ -name *.ini`

    voila , on lance ca dans le repertoire depuis lequel on veux recupérer l'arborescence de fichier ini

    Merci a tous pour votre aide
    • [^] # Klavouicage

      Posté par  . Évalué à 2.

      La touche ` semble une touche morte sur ton clavier ;-)
      en effet
      `u
      est devenu
      ù

Suivre le flux des commentaires

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