Bonjour,

J'ai fait un petit script qui me copie de(s) fichier(s) d'un machine à une autre et mon soucis est de savoir si la copie s'est effectuée ou pas. Pour ce faire j'ai utilisé le mot --stats de rsync et j'obtiens ceci:
sending incremental file list

Number of files: 3
Number of files transferred: 0
Total file size: 1997744 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 75
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 84
Total bytes received: 12
Donc mon idée est de récupérer les deux lignes contenants "Number of files". Voici mon script :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
#!/bin/bash -x
SRC_PATH="/tmp/test_directory/config/*"
DST_PATH[1]="<user>@<host>:/tmp/test_directory/config/dir1/test"
DST_PATH[2]="<user>@<host>:/tmp/test_directory/config/dir2/test"
DST_PATH[3]="<user>@<host>:/tmp/test_directory/config/dir3/test"
OPTS="-auvz --stats -e ssh"
 
for i in   1 2 3
do
  RSYNC[$i]=`/usr/bin/rsync $OPTS $SRC_PATH ${DST_PATH[$i]} 2>&1 |grep Number|awk -F":" '{print $2}'`
  echo "rsync : ${RSYNC[$i]} "
done
Voici le résultat:
rsync : 3
0
rsync : 3
0
rsync : 3
0
Comme je récupère le champs 2, j'ai les deux résultats 3 et 0! Sont-ils sur deux lignes? Comment les insérer chacun dans une variable pour que je puisse les tester?
Y a-t-il une solution plus simple?

Merci d'avance pour votre aide...