Forum Programmation.shell cron & rsync & fusesmb: "link_stat failed"

Posté par  .
Étiquettes :
0
20
mar.
2008
Bonjour !

Voila un problème concernant un cron job qui éxécute un rscync entre une partition SMB (\\PDASERV0103\D$) est un disque USB (/mnt/usbdisk). OS: fedora Core 5.
En résumé le script lancé à la main fonctionne, lancé avec cron, ça ne fonctionne plus.

#! /bin/bash

# étape 1: les variables
OPT='--archive --human-readable --delete --stats'
DST=/mnt/usbdisk
REP1=/mnt/voisinage/PDADOM01/PDASERV0103/D$/rccmx_g

# étape 2: je monte ma partition Windows avec fusesmb
fusesmb /mnt/voisinage 2>&1

#étape 3: lancement de rsync
rsync $OPT $REP1 $DST/PDASERV0103 2>&1
umount /mnt/voisinage 2>&1


le cron job

21 9 * * * root /root/script/usb-backup.sh |mail -s USB toto@ici.fr

En retour j'obtiens systématiquement le même message d'erreur:

rsync: link_stat "/mnt/voisinage/PDADOM01/PDASERV0103/D$" failed: No such file or directory (2)

Est-ce un problème de syntaxe bash ?

A+
N.
  • # chemins absolu

    Posté par  . Évalué à 2.

    Le problème vient peut-être de ton PATH.

    Essaies de mettre des chemins absolu vers tes exécutables (/usr/bin/rsync) dans ton script.

    J'espère que ca répondra à ton problème.
    • [^] # Re: chemins absolu

      Posté par  . Évalué à 1.

      Ok merci pour ta réponse.

      J'ai inclu le chemin complet pour rsync.
      Le résultat est le même.
      Lancé à la mano, ça passe, avec crontab, rsync a de nouveau un problème avec la source.
      J'ai modifié le script pour supprimer les variables:


      mount /dev/sdc1 /mnt/usbdisk 2>&1
      fusesmb /mnt/voisinage 2>&1

      /usr/bin/rsync --archive --human-readable --delete --stats /mnt/voisinage/PDADOM01/PDASERV0103/D$/ /mnt/usbdisk/PDASERV0103/D 2>&1

      umount /mnt/usbdisk 2>&1
      umount /mnt/voisinage 2>&1


      Voila, c'est encore plus simple comme ça.
      Donc il ne fait que copier le contenu de D$ vers /mnt/usbdisk/PDASERV0103/D

      J'ai essayé avec /mnt/voisinage/PDADOM01/PDASERV0103/D\$/
      (antislash devant $). Pareil...
  • # SELinux?

    Posté par  (site web personnel) . Évalué à 1.

    Pour un probleme bizarre avec Fedora, surtout si c'est une histoire de difference avec la ligne de commande, mon premier reflexe serait de jetter un coup d'oeil vers la configuration de SELinux.

    Ce n'est vraiment rien de plus qu'une idee, mais j'ai deja eu un probleme de ce style la, donc avec de la chance ca peut te pointer dans la bonne direction...
    • [^] # Re: SELinux?

      Posté par  . Évalué à 1.

      ahem...
      SELinux, je connais pas... C'est une fonctionnalité de Fedora ?

      J'ai perdu patience alors j'ai contourné le problème en montant la partition SMB avec mount.cifs (à la place de fusesmb).
      La sauvegarde est en cours, ça a l'air de fonctionner.

      Pour revenir sur cron j'aimerai bien aussi savoir pourquoi quand je lance un script qui affiche la date, celle-ci est affichée en français quand il est lancé à la main et en anglais quand cron le lance ?
      ex:
      echo `date +%T`

      Cron agit-il dans un environnement différent ? Comment le définir alors?
      • [^] # Re: SELinux?

        Posté par  . Évalué à 2.

        Parceque ton environnement n'est pas le même. Ton .bashrc n'est pas lu lorsque tu lance ton script par cron. Pour récupérer l'environnement utilisé par cron, tu peux mettre
        env
        dans ton script, cela va t'afficher toutes tes variables d'environnement. C'est en général le principal problème lorsqu'un script marche sous un compte mais pas avec cron.

        Etienne

Suivre le flux des commentaires

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