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érateurDe rien ;-))
-
J'ai trouvé !
/usr/bin/rsync -rtpv -a -e 'ssh' $source:"''$lesrep''" $destination >> $fi_log
Merci pour ton aide -
ModérateurAvec un seul répertoire en paramètre, ça passe ? (avec et sans quotes)
T'as essayé de déboguer ? -
rsync error: syntax or usage error (code 1) at main.c(1064) [receiver=2.6.8]
-
ModérateurC'est quoi l'erreur exacte qui te sort ?
T'as essayé de lancer ton script en mode débogage (set -xv) ?
-
Merci frère !
Déjà essayé mais ça ne marche toujours pas. Je cherche encore -
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
;-))