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
Configuration: Linux
Firefox 1.5.0.9

7 réponses

  1. J'ai trouvé !

    /usr/bin/rsync -rtpv -a -e 'ssh' $source:"''$lesrep''" $destination >> $fi_log

    Merci pour ton aide
    1
    1. Modérateur
      Avec un seul répertoire en paramètre, ça passe ? (avec et sans quotes)

      T'as essayé de déboguer ?
      0
      1. rsync error: syntax or usage error (code 1) at main.c(1064) [receiver=2.6.8]
        0
        1. Modérateur
          C'est quoi l'erreur exacte qui te sort ?

          T'as essayé de lancer ton script en mode débogage (set -xv) ?
          0
          1. Merci frère !

            Déjà essayé mais ça ne marche toujours pas. Je cherche encore
            0
            1. Modérateur
              Salut,

              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
              ;-))
              1