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

Administration système Discussion :

[shell] script de sauvegarde


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut [shell] script de sauvegarde
    Bonjour,
    je rencontre une colle sur un petit script de sauvegarde de fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash
    for f in /zone/*/root/var/yp/src/netgroup;
            do cp $f /zone/*/root/var/yp/src/netgroup.save.$(date +%Y%m%d-%H%M)
            done
    le probleme en l'executant :
    pour chaque * (correspondant a un dossier) j obtiens

    cp: cannot create /zone/*/root/var/yp/src/netgroup.save.20111219-1234: No such file or directory

    alors que j'ai faits le script de test suivant qui fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    for f in /zone/*/root/var/yp/src/netgroup;
            do if test -s fichier;
            then echo netgroup "$f" ATTENTION FICHIER VIDE;
            else echo netgroup "$f" FICHIER OK;
            fi;
            done
    Quelqu'un pourrait-il m'eclairer la dessus ?
    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Je suppose que tu souhaites faire la copie chaque fichier netgroup dans leur repertoire respectif?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cp "$f" $(dirname "$f")/netgroup.save.$(date +%Y%m%d-%H%M)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut
    Merci beaucoup , cela fonctionne.
    Ou avais-je péché ? cela vient du "*" ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 91
    Par défaut
    oui , tu ne peux pas créer un fichier avec comme un * dans le chemin car la wildcard matche avec plusieurs possibilités.
    Grosso modo, ton script disait de faire :
    Pour chaque zone de 1 à x , copier le netgroup dans une des zones comprises entre 1 et x. Le script ne peut pas déterminer de quelle zone il s'agit(le * du for n'est pas le même que le * du cp, ce n'est pas une variable)

    L'algo de Mygale permet de créer la copie dans le même dossier que le fichier source, en récupérant explicitement ce dossier avec la commande dirname.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 10
    Par défaut
    ok, merci a vous 2 pour vos explications, on y voit plus clair en effet.
    Dernière question, si jamais je souhaite copier uniquement mon fichier quand il ne fait pas 0 octet, dois je rajouter une condition dans la boucle ?
    En gros j aimerais mutualiser les 2 scripts.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut,

    man bash

    Tu peux tester la taille d'un fichier via l'option suivante:

    -s file
    True if file exists and has a size greater than zero.
    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if [[ -s testFile.txt ]]
    the 
     echo "Ce fichier existe et n\'est pas vide!"
    else 
     echo "Ce fichier existe mais est vide."
    fi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script Shell bash pour sauvegarder
    Par lolilol59 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 17/04/2014, 13h05
  2. Question sur script de sauvegarde en shell
    Par zyriuse dans le forum Linux
    Réponses: 4
    Dernier message: 02/12/2009, 19h33
  3. Shell script de sauvegarde
    Par marza dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 22/11/2006, 22h32
  4. Parser une chaine en shell script
    Par Gogoye dans le forum Linux
    Réponses: 10
    Dernier message: 19/07/2004, 17h49
  5. Retour de requete postgresql / Shell Script
    Par doohan dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/06/2003, 18h07

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