Forum général.général [cygwin] /cygdrive/f/ n'est pas disponible lorsque mon script bash est exécuté par cron

Posté par (page perso) .
-3
29
mar.
2012

Bonjour,

j'essaie de mettre en place une synchronisation de fichiers journalière, avec rsync sous MS Windows.

Ce que j'utilise :

  • j'ai installé cygwin
  • avec setup.exe de cygwin, j'ai installé rsync, openssh, cron

Une fois dans un terminal cygwin, j'ai :

  • créé une clé ssh et je l'ai installé sur mon serveur distant
  • j'ai ensuite créé un script bash, qui contient ma commande rsync, à noter que ma source de données se trouve dans un lecteur f:, c'est à dire dans le dossier /cygdrive/f/ (depuis le terminal cygwin)
  • j'ai testé mon script bash, il fonctionne bien, la copie de fichiers se passe bien
  • j'ai initialisé cron, avec l'assistant cron-config
  • j'ai mis en place le lancement planifié de mon script bash avec crontab -e
  • j'ai vérifié que mon script bash se lance bien avec la commande cronevents qui permet de consulter les logs de cron

Pour finir, j'ai un problème : le point de montage /cygdrive/f/ n'est pas disponible dans mon script bash, quand celui-ci est lancé par cron.

Avez vous déjà rencontré ce problème ?
J'ai peu d'expérience avec cygwin, je ne sais pas dans quelle direction chercher.

Merci d'avance pour votre aide.
Cordialement,
Stéphane

  • # PB autorisation Réseau

    Posté par . Évalué à 1.

    Bonjour,

    Si ton lecteur F est un montage réseau, il faut s'assurer que ton job soit lancé avec un compte ayant l'autorisation de faire ces montages. Pour cela il faut que cron soit lance avec ton user.

    • [^] # Re: PB autorisation Réseau

      Posté par (page perso) . Évalué à 1.

      J'ai configuré cron avec cron-config, il m'a posé des questions au niveau des users, j'ai dis oui, que je souhaitais lancer cron (et donc les scripts qu'il lance) avec mon user courant.

      Je ne sais pas si j'ai loupé quelque chose.

      Personne n'a jamais fait cette opération ?

      • [^] # Re: PB autorisation Réseau

        Posté par . Évalué à 0.

        Essaye de rajouter la commande suivante au début de ton script.

        mount -a
        
        

        Si ta tache est lance avec le bon user, cela devrait monter tous tes montages déjà configuré.

        Sinon voit comment utiliser la commande mount :
        http://cygwin.com/cygwin-ug-net/using-utils.html

        • [^] # Re: PB autorisation Réseau

          Posté par (page perso) . Évalué à 1.

          mount -a
          
          

          C'est ce que j'ai déjà fais… sans succès :(

          • [^] # Re: PB autorisation Réseau

            Posté par . Évalué à 0.

            Alors il est plus que probable que ton lecteur réseau ne soit pas monté sous windows. Le service n'effectuant pas les mappages réseau quand il est lancé.

            Voici 2 solutions possible :
            - Soit tu appelles net use pour monter ton lecteur reseau sous windows puis
            mount -a
            - Soit tu crées un nouveau montage sous cygwin qui sera dans ce cas tout le temps accessible
            Tu crées un nouveau point de montage (un répertoire) ex: /mnt/unnom
            puis tu appelles mount
            mount \unserver\sharereseau /mnt/unnom

            Ce qui a mon sens est la version la moins dépendante de ta conf utilisateur.

    • [^] # Re: PB autorisation Réseau

      Posté par (page perso) . Évalué à 3.

      Si ton lecteur F est un montage réseau, il faut s'assurer que ton job soit lancé avec un compte ayant l'autorisation de faire ces montages. Pour cela il faut que cron soit lance avec ton user.

      En fait cela ne suffit pas.
      Lancer cron avec le bon utilisateur donne les bons droits, mais ne monte pas le lecteur réseau. Car les lecteurs réseaux sont montés par l'explorateur.
      La solution la plus simple est d'utiliser la forme \\machine\partage\chemin\fichier

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.