Retourner aux forums || Retourner au forum Programmation.shell

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

Posté par hecat () le 20 mars 2008
0
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.

> Lire le message (5 commentaires, moyenne: 1,4).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

chemins absolu

Posté par nanodots () le 20/03/2008 à 11:07. (lien). É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 hecat () le 20/03/2008 à 13:47. (lien). É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 lom (page perso, ) le 20/03/2008 à 15:03. (lien). É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 hecat () le 20/03/2008 à 16:23. (lien). É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 Etienne () le 21/03/2008 à 16:28. (lien). É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

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell