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
Ces fichier sont des listing :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
dod_25doors.res
Donc je cher a déplacer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
/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 :
Ce qui semble ne pas marcher :
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 #!/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
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é.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if test ! -r "$fileing"
Ce qui n’a pas encore était testé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager