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 :

Information, debbugage et analyse d'un scripte de copie particuliere


Sujet :

Shell et commandes GNU

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    le listeres : http://f4cs.com/listeres.lst
    le fichiers : http://f4cs.com/fichiers.lst

    le repertoir commenté, pour le moment je le laisse pasque si non je vais devoir fair des rm -R a tout bout de champ ^^

    sans les guillemet, c'est la meme chose, meme erreur. En plus j'ai des nom de fichier qui peuvent contenir des espaces

    le scripte se situe dans /root

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    tu peux faire un find /root/facs_ffa/dod -type f pour voir si tu vois bien tout tes fichiers (ce que je pense entre nous mais là je suis un peu à sec d'idées...).

    dans ton fichier fichier.lst tu n'as que :
    root/facs_ffa/dod/models/mapmodels/bord.mdl
    ko

    ou alors tu as :
    root/facs_ffa/dod/models/mapmodels/bord.mdl
    root/facs_ffa/dod/models/mapmodels/bord.mdl ko

  3. #23
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    bonjour,

    Voila une possibilite .. parmis beaucoup d'autres ..

    je me suis inspiré du meme script, et si j'ai bien compris !! voici le resultat..
    #!/bin/bash
    #set -x
    PATH_SERV="/root/facs_ffa/dod" #Emplacement serveur
    PATH_SAVE="/root/maps" #Emplaccement sauvegarde
    TEMPOFILE="/tmp/fictempo"
    for file in `ls ${PATH_SERV}/maps/*.res`
    do
    fic=$(basename $file)
    sed 1,6d ${PATH_SERV}/maps/$fic >> $TEMPOFILE && mv $TEMPOFILE ${PATH_SAVE}/$fic
    if [[ -f ${PATH_SAVE}/$fic ]]; then
    echo "${PATH_SAVE}/$fic ok" >> result
    else
    echo "${PATH_SAVE}/$fic ko" >> result
    fi
    done
    mais je te conseilles aussi d'utiliser le code sortie ($?) des commandes au cas ou ... ainsi qu'un set -x pour le debug ...

    voila

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    J'ai 2-3 questions a propose de ton code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 1,6d ${PATH_SERV}/maps/$fic >> $TEMPOFILE && mv $TEMPOFILE ${PATH_SAVE}/$fic
    Ici, tu copie le contenu du fiché dans $TEMPOFILE, pourquoi tu le deplace apres ?
    Moi c'est les fichier llisté par $file que je veut deplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ -f ${PATH_SAVE}/$fic ]]
    Ici, tu test l'existant du fichié de listag, pas ceux des fichié deplacé

    Excuse moi si j'ai fait une erreru dans mon analyse mais il me semble que c'est pas tout a fait ce que je charche a faire.

    J'essay de reexpliquer plus simplement ^^.
    J'ai une 100aine de fichié .res
    Ces fichié contienne une liste de fichié a sauvegardé.
    sachant que caque fichié savegardé le sera dans un sous-dossié qui depend du fichié .res

  5. #25
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    Bonjour,

    Autant pour moi ... j'avais lu le probleme en diagonale ... ca m'apprendra

    Donc si je ne n'ai rien manqué, voici une solution .. faite un peu a la va vite, mais bon .. c'est sans doute ce que tu cherches.


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #!/bin/bash
    #set -x
    PATH_SERV="/root/facs_ffa/dod" #Emplacement serveur
    PATH_SAVE="/root/maps" #Emplaccement sauvegarde
    Refdate=$(date +%Y%m%d)
     
     
    for file in `ls ${PATH_SERV}/maps/*.res`
    do
            # On recupere le nom du fichier
            Dir=$(basename $file | cut -d'.' -f1)
            # On verifie que le dossier existe . Au quel cas on le cree
            [[ ! -d ${PATH_SAVE}/$Dir ]] && mkdir ${PATH_SAVE}/$Dir
            # On enleve les lignes debutant par // ou vide
            grep -Ev "^($|//)" $file |
            while read line
            do
                    echo $line
                    Dirname=$(dirname $line)
                    Basename=$(basename $line)
                    [[ ! -d ${PATH_SAVE}/${Dir}/${Dirname} ]] && mkdir -p ${PATH_SAVE}/${Dir}/${Dirname}
                    if [[  -e ${PATH_SERV}/$line ]]; then
                            cp ${PATH_SERV}/$line ${PATH_SAVE}/${Dir}/${Dirname}
                            Result=$(cd ${PATH_SAVE}/${Dir}/${Dirname};tar -cf ${Basename}_${Refdate}.tar $Basename && gzip ${Basename}_${Refdate}.tar;echo $?)
                            if [[ $Result -eq 0 ]]; then
                                    echo "${PATH_SAVE}/${Dir}/${Dirname}/$line ok" >> result
                            else
                                    echo "${PATH_SAVE}/${Dir}/${Dirname}/$line ko" >> result
                            fi
                    fi
            done
    done

    Au cas ou dis moi !!

  6. #26
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    Desoler pour le temps de reponse, j'ai eu pas aml de pb ces temps ci.

    J'ai essayer ton scripte, il ne marchait pas. J'ai pas trop approfondit mes recherche ca dans mes peregrination j'ai trouver une solution a mon probleme :
    la redirection des message d'erreur. (c'est beau ^^)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande >> fichier 2>&1
    Pour ceux que ca interesse.

    Une petite dernierre question par contre,
    est-il possible de suprimé reccurcivement tout les dossier, si ils sont vides uniquement ?

    merci encor

    [edit] en cherchant un peu j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -a $list | sed -e "/\.$/d" | wc -l
    [edit 2] Le scripte finale, si ca interesse quelqu'un :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!/bin/bash
    serveur='facs_ffa'
    for res in `ls -1 /root/$serveur/dod/maps/*.res | cut -c 25-`
    do
    	nom_map=$(echo $res | cut -d'.' -f1)
    	mkdir -p /root/maps/$nom_map
    	# Création de l'arboressence
    	for dossier in `ls -R1 /root/$serveur/dod/ | grep /root/$serveur/dod | cut -c 20- | tr -d ":"`
    	do
    		mkdir -p /root/maps/$nom_map/$dossier
    		echo /root/maps/$nom_map/$dossier >> listing.dossier
    	done
    	echo Arboressence crée
    	# Copie des fichiers
    	cat /root/$serveur/dod/maps/$res | grep -Ev "^($|//)" | tr -d "\r" | while read element
    	do
     
    		cp "/root/$serveur/dod/$element" "/root/maps/$nom_map/$element" >> not_copy.sh 2>&1
    	done
    	cp /root/$serveur/dod/maps/$nom_map.bsp /root/maps/$nom_map/maps/$nom_map.bsp >> not_copy.sh 2>&1
    	cp /root/$serveur/dod/maps/$nom_map.res /root/maps/$nom_map/maps/$nom_map.res >> not_copy.sh 2>&1
    	echo Copie fini
    	# Nettoyage de l'arboressences vide
    	tac listing.dossier | while read list
    	do
    		chem=$(ls -a $list | sed -e "/\.$/d" | wc -l)
    		if [ $chem == 0 ]; then
    			echo $list
    			rm -rf $list
    		fi
    	done
    	rm -f listing.dossier
    	echo Optimisation des dossiers fini
    	#Et on compresse
    	tar cvfz /root/maps/$nom_map.tar.gz /root/maps/$nom_map
    	echo compression fini
    	# Affichage de la progression
    	echo $nom_map ok
    done

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Analyse d'un script php malveillant
    Par sami_c dans le forum Langage
    Réponses: 15
    Dernier message: 07/02/2013, 14h49
  2. Réponses: 8
    Dernier message: 25/07/2012, 17h00
  3. Réponses: 7
    Dernier message: 10/08/2011, 15h31
  4. [SNMP] récupérer des informations de la MIB avec un script snmp
    Par patchiko dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/06/2007, 11h05
  5. [DOS] Script de copie
    Par Empty_body dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 01/03/2007, 09h21

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