IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Problème script sauvegarde avec cron, fonctionne à la main


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut Problème script sauvegarde avec cron, fonctionne à la main
    Bonjour,

    J'ai fait un script pour sauvegarder les répertoires situés dans un chemin spécifique (/var/www/html/), script qui, lancé à la main, fonctionne très bien.
    Mais, lorsque je le mets dans le cron, rien ne fonctionne =/

    Voici le script en question =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for SITE in `ls $MYDIR | grep -v "chroot\|default"` ; do
            if [ -d $MYDIR${SITE} ]; then
                    echo 'here, before tar '$MYDIR${SITE} >> log.txt
                    tar -czvf ./${SITE}.tar.gz $MYDIR${SITE}
            fi
    done
    Je suis complétement perdu là, j'ai vérifié dans le fichier de log que le chemin et le nom du directory était bon, je ne comprends pas ce qui se passe, dnas le log, tout ce que je vois écrit, c'est cela =>

    here, before tar /var/www/html/le_nom_du_site
    En espérant que quelqu'un ait déjà rencontré ce problème,

    Hurin

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    donnes ton vrai script complet et ta ligne de crontab réelle STP




    si tu as écris ça tel que dans une cron c'est normal que ça ne marche pas

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut
    Bonjour,

    Voici le script complet, et la ligne qui le lance dans le crontab =>
    30 12 * * * /var/scripts/script_sav.sh
    Et voici le script =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    #!/bin/bash
     
    MYDIR='/var/www/html/'
     
    rm -rf /var/scripts/sav_tmp
    rm -f /var/scripts/*.sql
    rm -f /var/scripts/*.gz
    mkdir /var/scripts/sav_tmp
    cd /var/scripts/sav_tmp
    touch log.txt
     
    # compression des espaces d hébergement
     
    for SITE in `ls $MYDIR | grep -v "chroot\|default"` ; do
            if [ -d $MYDIR${SITE} ]; then
                    echo 'here, before tar '$MYDIR${SITE}
                    echo 'here, before tar '$MYDIR${SITE} >> log.txt
                    tar -czvf ./${SITE}.tar.gz $MYDIR${SITE}
    #>> result ;
            fi
    done
     
    echo 'here, after end first for' >> log.txt
    En espérant qu'il y a suffisament d'informations cette fois-ci

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 352
    Par défaut
    Etrange, N_BaH ne c'est pas encore manifesté

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Je laisse à N_BaH le soin de gérer le 'ls'...

    essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    tar -czvf ./${SITE}.tar.gz $MYDIR${SITE} >> log.txt 2>&1
    puis regarde le contenu du fichier log.txt

  6. #6
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    d'accord avec Jack-ft
    & pour le LS : faire un ls dans un script est une petite bourde qui peut avoir des effets pervers.

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 662
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    Refrain:
    on n'utilise pas ls dans un script pour en parcourir la sortie, entre autre parce que le format de ls -lpeut changer (le nombre de champs n'est pas fixe, en fonction de la date).
    Ensuite, parce que le shell sait développer les chemins, dispose de motifs génériques pour afficher le noms de fichiers, et d'une correspondance étendue si ça ne suffit pas.

    si on veut récupérer des informations sur un fichier, il y a des commandes qui permettent de n'afficher que ces informations :type, file, stat...

    d'une manière générale, on ne parcours pas la sortie d'une commande avec une boucle for, car celle-ci découpe les lignes en mots en fonction de l'IFS (Internal Field Separator). On pourrait le modifier, mais c'est lourdingue, quand il y a une solution simple : l'emploi d'une boucle while. De plus, cela ajoute un sous-shell inutile.

    vous la vouliez, vous l'avez eu, c'était la grosse colère de NBaH
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Problème script sauvegarde avec cron, fonctionne à la main
    Par Hurin dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 16/04/2013, 08h40
  2. Problème de batch avec Cron.exe
    Par jpberub dans le forum Windows
    Réponses: 1
    Dernier message: 25/07/2007, 21h08
  3. [Access] problème de sauvegarde avec suppression
    Par Malown dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/07/2007, 17h16
  4. Pourquoi sauvegarder avec cron ?
    Par vica6a dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 16/01/2007, 20h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo