Bonjour à tous,
J'ai un petit problème que je ne comprend pas, en effet j'ai écris un petit script me permettant de sauvegarder des fichiers sur un serveur si ceux ci sont plus récents sur mon pc que sur mon serveur.
Il marche très bien sur mon pc portable mais sur mon pc fixe il tourne à l'infinie. (Pour tester j'ai pourtant la même arborescence de répertoires et fichiers à copier)
Après quelques tests je me suis rendu compte que c'est la boucle for qui ne marche pas correctement (que sur mon pc fixe :o). En effet j'ai un répertoire "ARM" dans /home/fabien/Documents/ et la boucle affiche à l'infinie "ARM".
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 #/bin/sh ping -c 1 "192.168.1.100" > /dev/null #test du réseau if [ $? -ne 0 ] then echo "Le serveur n'est pas accessible." exit 1 fi mount | grep "//192.168.1.100" > /dev/null #test du montage if [ $? -eq 1 ] then echo "Le montage n'est pas disponible." exit 2 fi if [ $# -eq 1 ] then pc="/home/fabien/Documents/$1" serveur="/media/Partage/BackUp/Backup_pc/$1/" rep="$1" else pc="/home/fabien/Documents" serveur="/media/Partage/BackUp/Backup_pc/" rep="" fi if [ $# -eq 3 ] then nbfic="$2" taillefic="$3" else nbfic=0 taillefic=0 fi for ficourep in "$pc"/* do fic=`basename "$ficourep"` echo "$fic" if [ -f "$ficourep" ] #si le "fic" est un fichier then if [ ! -f "$serveur$fic" ] #si le fic n'est pas présent sur le serveur then echo "Copie de $fic" cp "$ficourep" "$serveur" tfic=`stat -c %s "$ficourep"` taillefic=`expr $taillefic + $tfic` nbfic=`expr $nbfic + 1` else #si le fic est déjà présent date_serv=`stat -c "%Y" "$serveur$fic"` date_pc=`stat -c "%Y" "$ficourep"` if [ "$date_pc" -gt "$date_serv" ] #si le fic est plus récent then echo "Copie de $fic" cp "$ficourep" "$serveur" tfic=`stat -c %s "$ficourep"` taillefic=`expr $taillefic + $tfic` nbfic=`expr $nbfic + 1` fi fi elif [ -d "$ficourep" ] #si le "fic" est un repertoire then if [ ! -d $serveur$fic ] #si le "fic" n'existe pas sur le serveur then mkdir $serveur$fic fi sh "$0" "$rep/$fic" $nbfic "$taillefic" fi done tailletot="$taillefic octet" if [ $taillefic -gt 1024 -a $taillefic -lt 1048576 ] then taillefic=$(echo "scale = 2; $taillefic/1024" | bc) tailletot="$taillefic ko" elif [ $taillefic -gt 1048576 ] then taillefic=$(echo "scale = 2; $taillefic/1024" | bc) tailletot="$taillefic mo" fi if [ $nbfic -gt 1 ] then nbtot="$nbfic fichiers" else [ $nbfic -eq 1 ] nbtot="$nbfic fichier" fi echo "$nbtot mis à jour pour un total de $tailletot" exit 0
Mes 2 pc tournent sous ubuntu 12.04
Merci de votre aide!
Partager