Espace dans 1 script lancé ds 1 cron
Résolu
Bonjour les amis, j'ai un petit problème dans un script que je veux utiliser pour faire des sauvegarde automatiques. J'utilise la commande "rsync" qui dans sa syntaxe permet de sauvegarder un ou plusiuers répertoires. Dans ce cas, les répertoires sont séparé en mode commande par des espaces: ( ex: rsync -rtpv -a -e 'ssh' root@verisign:'/usr/share/uniclient /usr/share/prgsign' /usr/share )
Le problème, c'est kan je veux mettre cela dans un cron. Il y a un problème d'interprètation des espaces.
Voici mon script, en bas comment puis je l'améliorer pourqu'il fonctionne ?
source=root@verisign
lesrep="/usr/share/prgsign /usr/share/marc /usr/share/phpmyadmin"
destination=/usr/share
fi_log=/root/logs/resultat_cron_programmes.txt
date >> $fi_log
echo ------------------Synchronisation des Programmes----------------- >> $fi_log
/usr/bin/rsync -rtpv -a -e 'ssh' $source:'$lesrep' $destination >> $fi_log
echo ------------------Synchronisation des programmes Terminée--------------------------- >> $fi_log
Le problème, c'est kan je veux mettre cela dans un cron. Il y a un problème d'interprètation des espaces.
Voici mon script, en bas comment puis je l'améliorer pourqu'il fonctionne ?
source=root@verisign
lesrep="/usr/share/prgsign /usr/share/marc /usr/share/phpmyadmin"
destination=/usr/share
fi_log=/root/logs/resultat_cron_programmes.txt
date >> $fi_log
echo ------------------Synchronisation des Programmes----------------- >> $fi_log
/usr/bin/rsync -rtpv -a -e 'ssh' $source:'$lesrep' $destination >> $fi_log
echo ------------------Synchronisation des programmes Terminée--------------------------- >> $fi_log
Configuration: Linux Firefox 1.5.0.9
7 réponses
-
ModérateurSalut,
Il te faut encadrer tes simples quotes '$lesrep' (qui dans ce cas là empêche l'interprétation de ta variable) par des doubles quotes "'$lesrep'", ou les échapper avec des backslahs \'$lesrep\' :/usr/bin/rsync -rtpv -a -e 'ssh' $source:"'$lesrep'" $destination >> $fi_log /usr/bin/rsync -rtpv -a -e 'ssh' $source:\'$lesrep\' $destination >> $fi_log
;-))
-
Merci frère !
Déjà essayé mais ça ne marche toujours pas. Je cherche encore -
ModérateurC'est quoi l'erreur exacte qui te sort ?
T'as essayé de lancer ton script en mode débogage (set -xv) ?
-
rsync error: syntax or usage error (code 1) at main.c(1064) [receiver=2.6.8]
-
ModérateurAvec un seul répertoire en paramètre, ça passe ? (avec et sans quotes)
T'as essayé de déboguer ? -
J'ai trouvé !
/usr/bin/rsync -rtpv -a -e 'ssh' $source:"''$lesrep''" $destination >> $fi_log
Merci pour ton aide -
ModérateurDe rien ;-))