Information, debbugage et analyse d'un scripte de copie particuliere
Bonjour,
Ce que je cherche a faire :
Je cherche a crée un programme qui va compresser un certain nombre de fichier selon une liste.
je tien a garder l'arborescence des fichier depuis un certain dossier (dod)
en concret, j'ai une liste de fichier :
listeres.lst
Code:
1 2 3
| /root/facs_ffa/dod/maps/dod_25doors.res
/root/facs_ffa/dod/maps/dod_2pillboxes.res
/root/facs_ffa/dod/maps/dod_4saisons.res |
Ces fichier sont des listing :
dod_25doors.res
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| // dod_25doors.res - created with RESGen v2.0.2.
// RESGen is made by Jeroen "ShadowLord" Bogers,
// with serveral improvements and additions by Zero3Cool.
// For more info go to http://resgen.hltools.com
// .res entries (7):
models/mapmodels/bord.mdl
models/mapmodels/by_furniture_group-wreck.mdl
models/mapmodels/couch1bl.mdl
models/mapmodels/flo_komode02.mdl
models/mapmodels/mawibse_lamp_01.mdl
models/mapmodels/piano2.mdl
sprites/glow01.spr |
Donc je cher a déplacer
/root/facs_ffa/dod/models/mapmodels/bord.mdl
/root/facs_ffa/dod/models/mapmodels/by_furniture_group-wreck.mdl
...
vers
/root/maps/dod_25doors/models/mapmodels/bord.mdl
/root/maps/dod_25doors/models/mapmodels/by_furniture_group-wreck.mdl
Et donc voici mon code :
Code:
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
| #!/bin/sh
PATH_SERV="/root/facs_ffa/dod" #Emplacement serveur
PATH_SAVE="/root/maps" #Emplaccement sauvegarde
ls ${PATH_SERV}/maps/*.res > listeres.lst #Listage de fichier qui resence les fichier a sauvegarder
cat listeres.lst | while read RES_FILE #Pour chaque fichier ressource
do
{
tail -n $(expr `cat ${RES_FILE} | wc -l` - 6) ${RES_FILE} >> fichiers.lst #On ignore les 6 ère ligne, on copie le reste
temp_name=$(echo ${RES_FILE} | cut -c 25-) #On pré-filtre le nom du sous-dossier de la sauvegarde
map_name=$(echo ${temp_name%.*}) #On extrait le nom du sous-dossier de la sauvegarde
echo "mkdir ${PATH_SAVE}/${map_name}" #On crée le sous-dossier de la sauvegarde
cat fichiers.lst | while read FILE_NEEDED #Pour chaque fichier a sauvegarder
do
{
fileing=${PATH_SERV}/${FILE_NEEDED}
if test ! -r "$fileing" #On vérifie que le fichier existe
then
{
cd ${PATH_SERV} #On se place a la racine du serveur
tar -cf ${PATH_SAVE}/${file}/arch.tar ${FILE_NEEDED} #On compresse le fichier AVEC l'arborescence par rapport au serveur
cd ${PATH_SAVE}/${file}/ #On se place dans le dossier de sauvegarde
tar -xf arch.tar #On décompresse en recréant l'arborescence
rm -f arch.tar #On supprime l'archive temporaire
#echo "${FILE_NEEDED} ne peut-etre copier" >> /root/bug.txt
}
else
{
echo "${FILE_NEEDED} peut-etre copier" >> /root/ok.txt #On crée un fichier en cas d'erreur
}
fi
}
done
rm fichiers.lst #On supprime le fichier de listing temporaire
}
done
rm listeres.lst #On supprime le fichier de listing des ressources |
Ce qui semble ne pas marcher :
Code:
if test ! -r "$fileing"
Cet if me revoit systématiquement sur une erreur, même quand le fichier existe, si je ne met pas les guillemets il trouve uniquement les fichiers contenant des espaces, les fichiers sans espaces ne sont pas trouvé.
Ce qui n’a pas encore était testé :
Code:
1 2 3 4 5
| cd ${PATH_SERV} #On se place a la racine du serveur
tar -cf ${PATH_SAVE}/${file}/arch.tar ${FILE_NEEDED} #On compresse le fichier AVEC l'arborescence par rapport au serveur
cd ${PATH_SAVE}/${file}/ #On se place dans le dossier de sauvegarde
tar -xf arch.tar #On décompresse en recréant l'arborescence
rm -f arch.tar #On supprime l'archive temporaire |
Merci d'avance pour vos explications, toutes vos remarque seront accueil avec joie du moment qu’elles sont constructives.