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 :

Erreurs dans un script de sauvegarde


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    817
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 817
    Points : 795
    Points
    795
    Par défaut Erreurs dans un script de sauvegarde
    bonjour

    Voici un petit script de backup qui prend 2 arguments
    1. le nom d'un fichier à sauvegarder
    2. le nombre de jours de dernière modification des fichiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
     
    while read line
    do
    echo –e "line\n"
    done < $1 | find $1 -mtime -$2 | tar -c-T-f /home/backup.tar
    # find pour rechercher dans le fichier passé en 1er argument
    # -mtime -$2 pour spécifier les fichiers modifiés depuis le nombre 
    # de jour passés en 2ème argument
    # on passe à pipe
    # tar -c-T-f pour créer l’archive
    # -c pour la céer
    # l’option -T pour obtenir le nom des fichiers à archiver
    # l’option -f pour le fichier backup.tar
    j'ai une erreur au lancement :

    ./sauve.sh signature.txt 2
    tar: -f: ne peut stat: Aucun fichier ou répertoire de ce type
    tar: Erreur non récupérable: fin de l'exécution immédiate
    merci


    .

  2. #2
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par deny
    bonjour

    while read line
    do
    echo –e "line\n"
    done < $1 | find $1 -mtime -$2 | tar -c-T-f /home/backup.tar


    Avec ceci, ça devrait aller mieux :

    find . -name $1 -mtime -$2
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    817
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 817
    Points : 795
    Points
    795
    Par défaut script de sauvegarde
    Merci pour ta reponse
    Hélas ,cela ne fonctionne pas encore .........


    ./sauve.sh signature.txt 2
    ./sauve.sh: line 6: find.: command not found
    tar: -f: ne peut stat: Aucun fichier ou répertoire de ce type
    tar: Erreur non récupérable: fin de l'exécution immédiate

    (avec ou sans le point après find)


    a+

  4. #4
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par deny
    bonjour

    .../...
    # find pour rechercher dans le fichier passé en 1er argument
    # -mtime -$2 pour spécifier les fichiers modifiés depuis le nombre
    # de jour passés en 2ème argument
    .../...

    Doit-on comprendre que le fichier passé en 1er argument contient une liste de fichiers à rechercher et, éventuellement, sauvegarder ?
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    817
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 817
    Points : 795
    Points
    795
    Par défaut script de sauve
    Non ,il s'agit juste d'un fichier

    avec comme premier arg nom_du_fichier et deuxième arg nombre_jours

    et d'ailleurs dans l'exemple ,je fais un essai sur un seul fichier :
    /sauve.sh signature.txt 2

    merci

  6. #6
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par deny
    Non ,il s'agit juste d'un fichier

    avec comme premier arg nom_du_fichier et deuxième arg nombre_jours

    et d'ailleurs dans l'exemple ,je fais un essai sur un seul fichier :
    /sauve.sh signature.txt 2

    merci
    Dans ce cas, je ne vois pas l'interêt du :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read line
    do
    .../...
    done < $1

    Le shell, ci-dessus, signifie : parcourir le contenu du fichier "$1"
    Quel en est l'usage
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    817
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 817
    Points : 795
    Points
    795
    Par défaut
    bien vu
    prenons donc plutot l'exemple d'un repertoire a sauvegarder

    ./sauve.sh azureus 2
    ./sauve.sh: line 3: read: read error: 0: est un répertoire
    ./sauve.sh: line 6: find.: command not found
    tar: -f: ne peut stat: Aucun fichier ou répertoire de ce type
    tar: Erreur non récupérable: fin de l'exécution immédiate


    le probleme reste entier
    a+

  8. #8
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par deny
    bien vu
    prenons donc plutot l'exemple d'un repertoire a sauvegarder

    ./sauve.sh azureus 2
    ./sauve.sh: line 3: read: read error: 0: est un répertoire
    ./sauve.sh: line 6: find.: command not found
    tar: -f: ne peut stat: Aucun fichier ou répertoire de ce type
    tar: Erreur non récupérable: fin de l'exécution immédiate


    le probleme reste entier
    a+

    But : sauvegarder les fichiers, du répertoire "azureus", qui ont fait l'objet de modifications depuis - de 2 jours.

    Obs : l'option -T est sans objet

    http://pwet.fr/man/linux/commandes/tar
    .../...
    -T, --files-from F
    obtient la liste des fichiers à extraire ou à archiver depuis le fichier F.
    .../...


    ./sauve.sh azureus 2


    Script sauve.sh :

    find $1 -mtime -$2 | xargs tar -cvf /home/backup.tar
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    817
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 817
    Points : 795
    Points
    795
    Par défaut
    #!/bin/bash

    while read line
    do
    echo –e "line\n"
    done < $1 | find $1 -mtime -$2 | xargs tar -cvf /home/backup.tar


    ./sauve2.sh azureus 2
    tar: Refus catégorique de créer un fichier d'archive vide.
    Pour en savoir davantage, faites: « tar --help » ou « tar --usage ».


    merci

  10. #10
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par deny
    #!/bin/bash

    while read line
    do
    echo –e "line\n"
    done < $1 |
    find $1 -mtime -$2 | xargs tar -cvf /home/backup.tar

    ./sauve2.sh azureus 2
    tar: Refus catégorique de créer un fichier d'archive vide.
    Pour en savoir davantage, faites: « tar --help » ou « tar --usage ».


    merci
    Sauf erreur de ma part, seules les instructions en VERT sont nécessaires.
    Il est à noter qui si aucun fichier n'est sélectionné, le message d'anomalie suivant apparaîtra :

    tar: Cowardly refusing to create an empty archive
    Try `tar --help' or `tar --usage' for more information.


    Gestion de ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    find $1 -mtime -$2 | xargs tar -cvf /home/backup.tar 2>/dev/null
    if [ $? -eq 123 ]] ; then
        echo "** aucune sélection effectuée "
    fi
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    817
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 817
    Points : 795
    Points
    795
    Par défaut
    .Cela fonctionne parfaitement et je te remercie

    a+

Discussions similaires

  1. [Sql] erreur dans un script
    Par fyren` dans le forum Oracle
    Réponses: 9
    Dernier message: 02/02/2006, 23h44
  2. erreur dans un script
    Par rib dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/12/2005, 16h42
  3. erreur dans mon script
    Par Swata dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 00h02
  4. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58
  5. [Apache] Erreur dans mes scripts CGI
    Par GLDavid dans le forum Apache
    Réponses: 2
    Dernier message: 28/08/2004, 06h14

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