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 :

Avis sur un script


Sujet :

Shell et commandes GNU

  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut Avis sur un script
    Bonjour,


    Je souhaiterais avoir votre avis sur un script qui doit servir en mode "cron" afin de faire des sauvegardes sur un réseau d'entreprise ayant au plus 10 machines...

    Les machines clientes sont sous windows, et stockent leurs propres données... certaines sont sauvegardées à chaque horaire de pause sur le serveur, puis seront accessibles en lecture seule par un serveur samba, pour des restaurations rapides. Elles seront également graver sur un dvd+rw tous les soirs.

    Le but de la manoeuvre est de ne pas avoir à se soucier d'autre chose que de mettre un dvd dans le graveur à temps (en gros, chaque matin... et on fait une rotation)

    le script fonctionne, mais je préférerais qu'il soit blindé... donc tous les avis constructifs sont bons à prendre


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    #! /bin/bash
    ISO_MOUNTPATH="/mnt/graveur"
    ISO_REMOTEPATH=""
    USER_LIST="/home/sauvegarde/sauv_users.txt"
    if [ -r ${USER_LIST} ]
    then
            USERS=`cat ${USER_LIST}`
    else
            echo "Impossible de lire ${USER_LIST}"
            exit 1
    fi
    USERS=`cat ${USER_LIST}`
    DIRS=""
    DIR_LIST=""
    for USERNAME in $USERS
    do
            ln -s -f "/home/$USERNAME" /home/links/
            REMOTE_COMPUTER=`grep /mnt/$USERNAME /etc/fstab | awk -F ' ' '{print $1}' | awk -F '/' '{print $3}'`
            IS_ACTIVE=`nmblookup ${REMOTE_COMPUTER} | grep failed | wc -l`
            if [ ${IS_ACTIVE} -lt 1 ]
            then
                    mount /mnt/$USERNAME
            else
                    echo "Impossible de se connecter à ${REMOTE_COMPUTER}"
                    continue
            fi
            DIR_LIST="/home/sauvegarde/${USERNAME}.dir"
            if [ -r ${DIR_LIST} ]
            then
                    DIRS=`cat ${DIR_LIST}`
            else
                    echo "Impossible de lire ${DIR_LIST}"
                    continue
            fi
            for DIR in $DIRS
            do
                    if [ -d /mnt/$USERNAME/$DIR ]
                    then
                            mkdir -p /home/$USERNAME/$DIR
                            cd /home/$USERNAME/$DIR
                            cp -r "/mnt/$USERNAME/$DIR/"* .
                    else
                            echo "Impossible de copier /mnt/$USERNAME/$DIR"
                            continue
                    fi
            done
            sync
            umount /mnt/$USERNAME
            sleep 5
    done
    LABEL=`date +"%Y_%m_%d"`
    ISO_FILENAME="/home/sauvegarde/${LABEL}.iso"
    mkisofs -f -R -r -J -V "$LABEL" -o "${ISO_FILENAME}" /home/links
    REMOTE_COMPUTER=`grep ${ISO_MOUNTPATH} /etc/fstab | awk -F ' ' '{print $1}' | awk -F '/' '{print $3}'`
    IS_ACTIVE=`nmblookup ${REMOTE_COMPUTER} | grep failed | wc -l`
    if [ ${IS_ACTIVE} -lt 1 ]
    then
            mount ${ISO_MOUNTPATH}
    else
            echo "Impossible de se connecter à ${REMOTE_COMPUTER}"
            exit 1
    fi
    cp "${ISO_FILENAME}" "${ISO_MOUNTPATH}/${ISO_REMOTEPATH}"
    sync
    touch "${ISO_MOUNTPATH}/${ISO_REMOTEPATH}/gravure_ok.txt"
    sync
    umount ${ISO_MOUNTPATH}
    #rm -f "${ISO_FILENAME}"
    rm /home/links/*
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    As-tu envisagé rsync pour tes back-up? Seuls les fichiers changés sont sauvegardés. Tu pourrais facilement l'intégrer dans ton script.
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par ripat
    As-tu envisagé rsync pour tes back-up? Seuls les fichiers changés sont sauvegardés. Tu pourrais facilement l'intégrer dans ton script.

    rsync marche sous windows ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Oui, bien sûr. Dès que tu fais un mnt -t smbfs ce répertoire est vu comme un répertoire Linux. Rsync n'y voit que du feu.

    Voici ce que je fais pour mes backup des stations windows:
    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
    # si pas de mnt -> mnt
    if test ! -d /mnt/smb/toto
    then
        sudo mount -t smbfs -o username='Toto',password='zzzz' //toto/Data /mnt/smb
    fi
     
    # copie et synchronisation des fichiers
        # tous les doc xls de windows -> debian
        SRC='/mnt/smb/'
        DEST='/home/toto/backup'
        INCLUDE='/etc/rsync_include_toto'
        rsync -av --include-from=$INCLUDE $SRC $DEST
     
    # umount
    sudo umount /mnt/smb
    Le fichier rsync_include_toto contient ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # BACKUP TOTO -> DEBIAN
    # inclusion de tous les répertoires et sous-répertoires
    /**/
     
    # inclusion xls et doc
    *.xls
    *.doc
     
    # exclusion de tout le reste
    - *
    Bon, j'ai un peu pataugé dans le fichier include de rsync, mais ça marche comme ça.

    Dans ton script, si j'ai bien compris tu vérifies dans fstab le nom du netbios des utilisateurs windows et s'ils existent tu mnt. Que font-ils dans fstab? Il sont déjà mnté au boot? Pourquoi le re-mnter alors?
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par ripat
    Bon, j'ai un peu pataugé dans le fichier include de rsync, mais ça marche comme ça.
    et on peut tout prendre, vu que je sélectionne les répertoires utiles ?

    Citation Envoyé par ripat
    Dans ton script, si j'ai bien compris tu vérifies dans fstab le nom du netbios des utilisateurs windows et s'ils existent tu mnt. Que font-ils dans fstab? Il sont déjà mnté au boot? Pourquoi le re-mnter alors?
    ils sont dedans pour faciliter ma gestion... mais avec l'option noauto
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Citation Envoyé par gorgonite
    et on peut tout prendre, vu que je sélectionne les répertoires utiles ?
    Oui, c'est même plus simple. J'avoue avoir eu quelques difficultés à comprendre le logique des fichiers "include-from".

    Pour tout copier, fais simplement:
    Si tu as un autre serveur sous le coude, tu peux même t'épargner de jouer au disk jockey en utilisant ce serveur distant comme destination du rsync (par ssh, par exemple et en mode compressé pour économiser de la bp):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DEST='utilisateur@serveur_distant:/chemin/vers/destination/backup/'
    rsync -azv -e ssh $SRC $DEST
    Il faut dans ce cas que la connexion ssh se fasse sans mot de passe par échange de clés publiques.

    Les premiers backups seront un peu longs (selon la vitesse de connexion adsl ou lan) mais ensuite, seuls les fichiers modifiés seront copiés.
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    comme cela, ça te semble bien ?

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #! /bin/bash
    ISO_MOUNTPATH="/mnt/graveur"
    ISO_REMOTEPATH=""
    USER_LIST="/home/sauvegarde/sauv_users.txt"
    if [ -r ${USER_LIST} ]
    then
            USERS=`cat ${USER_LIST}`
    else
            echo "Impossible de lire ${USER_LIST}"
            exit 1
    fi
    USERS=`cat ${USER_LIST}`
    DIRS=""
    DIR_LIST=""
    for USERNAME in $USERS
    do
            ln -s -f "/home/$USERNAME" /home/links/
            REMOTE_COMPUTER=`grep /mnt/$USERNAME /etc/fstab | awk -F ' ' '{print $1}' | awk -F '/' '{print $3}'`
            IS_ACTIVE=`nmblookup ${REMOTE_COMPUTER} | grep failed | wc -l`
            if [ ${IS_ACTIVE} -lt 1 ]
            then
                    mount /mnt/$USERNAME
            else
                    echo "Impossible de se connecter à ${REMOTE_COMPUTER}"
                    continue
            fi
            DIR_LIST="/home/sauvegarde/${USERNAME}.dir"
            if [ -r ${DIR_LIST} ]
            then
                    DIRS=`cat ${DIR_LIST}`
            else
                    echo "Impossible de lire ${DIR_LIST}"
                    continue
            fi
            for DIR in $DIRS
            do
                    if [ -d /mnt/$USERNAME/$DIR ]
                    then
                            if [ -d /home/$USERNAME/$DIR ]
    							usleep 1
    						else
    							mkdir -p /home/$USERNAME/$DIR
    						fi
                            #cd /home/$USERNAME/$DIR
                            #cp -r "/mnt/$USERNAME/$DIR/"* .
    						rsync -av "/mnt/$USERNAME/$DIR/" "/home/$USERNAME/$DIR"
                    else
                            echo "Impossible de copier /mnt/$USERNAME/$DIR"
                            continue
                    fi
            done
            sync
            umount /mnt/$USERNAME
            sleep 5
    done
    LABEL=`date +"%Y_%m_%d"`
    ISO_FILENAME="/home/sauvegarde/${LABEL}.iso"
    mkisofs -f -R -r -J -V "$LABEL" -o "${ISO_FILENAME}" /home/links
    REMOTE_COMPUTER=`grep ${ISO_MOUNTPATH} /etc/fstab | awk -F ' ' '{print $1}' | awk -F '/' '{print $3}'`
    IS_ACTIVE=`nmblookup ${REMOTE_COMPUTER} | grep failed | wc -l`
    if [ ${IS_ACTIVE} -lt 1 ]
    then
            mount ${ISO_MOUNTPATH}
    else
            echo "Impossible de se connecter à ${REMOTE_COMPUTER}"
            exit 1
    fi
    cp "${ISO_FILENAME}" "${ISO_MOUNTPATH}/${ISO_REMOTEPATH}"
    sync
    touch "${ISO_MOUNTPATH}/${ISO_REMOTEPATH}/gravure_ok.txt"
    sync
    umount ${ISO_MOUNTPATH}
    #rm -f "${ISO_FILENAME}"
    rm /home/links/*
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  8. #8
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    en revanche, avec ma méthode, les répertoires avec un espace dans le nom ne passent pas, ie les répertoires nommés dans ${USERNAME}.dir doivent ne pas avoir d'espaces dans leur nom

    si quelqu'un a une idée...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  9. #9
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Ben je sais pas si c'est ce que tu cherche, mais banalise les espaces qui sont dans le fichier contenu dans ${DIR_LIST} via un tr par exemple ( désolé si c'est une anerie mais je tente ma chance en disant ça )

    @ +
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Citation Envoyé par gorgonite
    en revanche, avec ma méthode, les répertoires avec un espace dans le nom ne passent pas, ie les répertoires nommés dans ${USERNAME}.dir doivent ne pas avoir d'espaces dans leur nom

    si quelqu'un a une idée...
    Ça, c'est la faute à Windows (quelle idée de mettre des espaces dans les noms de fichier!).

    Par contre, pourquoi parcours-tu les répertoires récursivements? Rsync peut faire ça pour toi il me semble. Il n'aura peut-être pas les problèmes d'espace lui!

    Je teste et je reviens...

    Edit:
    Alors voilà, je confirme, rsync gère parfaitement bien les noms de répertoire et fichiers avec espaces ou caractères accentués qui, eux, seront remplacés par un ?.

    Je confirme également que l'option -a est une super-option qui comprend, entre-autres, l'option -r pour récursif.
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  11. #11
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par ripat
    Par contre, pourquoi parcours-tu les répertoires récursivements? Rsync peut faire ça pour toi il me semble. Il n'aura peut-être pas les problèmes d'espace lui!

    c'est que je sélectionne uniquement certains répertoires à sauvegarder
    le problème survient lorsque le chemin d'un de ses répertoires (définis par l'utilisateur... ou windows comme "C:\Documents and Settings\username\...") contient un espace
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  12. #12
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par buchs
    Ben je sais pas si c'est ce que tu cherche, mais banalise les espaces qui sont dans le fichier contenu dans ${DIR_LIST} via un tr par exemple ( désolé si c'est une anerie mais je tente ma chance en disant ça )

    pas tout compris... tu peux montrer la ligne de commande, car je viens de lire http://man.developpez.com/man1/tr.1.php et je ne vois pas trop en quoi ça va m'aider
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  13. #13
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    voici la version actuelle...

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #! /bin/bash
    ISO_MOUNTPATH="/mnt/graveur"
    ISO_REMOTEPATH=""
    USER_LIST="/home/sauvegarde/sauv_users.txt"
    if [ -r ${USER_LIST} ]
    then
            USERS=`cat ${USER_LIST}`
    else
            echo "Impossible de lire ${USER_LIST}"
            exit 1
    fi
    USERS=`cat ${USER_LIST}`
    DIRS=""
    DIR_LIST=""
    for USERNAME in $USERS
    do
            ln -s -f "/home/$USERNAME" /home/links/
            REMOTE_COMPUTER=`grep /mnt/$USERNAME /etc/fstab | awk -F ' ' '{print $1}' | awk -F '/' '{print $3}'`
            IS_ACTIVE=`nmblookup ${REMOTE_COMPUTER} | grep failed | wc -l`
            if [ ${IS_ACTIVE} -lt 1 ]
            then
                    mount /mnt/$USERNAME
            else
                    echo "Impossible de se connecter à ${REMOTE_COMPUTER}"
                    continue
            fi
            DIR_LIST="/home/sauvegarde/${USERNAME}.dir"
            if [ -r ${DIR_LIST} ]
            then
                    DIRS=`cat ${DIR_LIST}`
            else
                    echo "Impossible de lire ${DIR_LIST}"
                    continue
            fi
            for DIR in $DIRS
            do
                    if [ -d /mnt/$USERNAME/$DIR ]
                    then
                            if [ -d /home/$USERNAME/$DIR ]
                            then
                                    sleep 0
                            else
                                    mkdir -p /home/$USERNAME/$DIR
                            fi
                            cd /home/$USERNAME/$DIR
                            #cp -r "/mnt/$USERNAME/$DIR/"* .
                            rsync -av "/mnt/$USERNAME/$DIR/"* .
                    else
                            echo "Impossible de copier /mnt/$USERNAME/$DIR"
                            continue
                    fi
            done
            sync
            umount /mnt/$USERNAME
            sleep 5
    done
    LABEL=`date +"%Y_%m_%d"`
    ISO_FILENAME="/home/sauvegarde/${LABEL}.iso"
    mkisofs -f -R -r -J -V "$LABEL" -o "${ISO_FILENAME}" /home/links
    REMOTE_COMPUTER=`grep ${ISO_MOUNTPATH} /etc/fstab | awk -F ' ' '{print $1}' | awk -F '/' '{print $3}'`
    IS_ACTIVE=`nmblookup ${REMOTE_COMPUTER} | grep failed | wc -l`
    if [ ${IS_ACTIVE} -lt 1 ]
    then
            mount ${ISO_MOUNTPATH}
    else
            echo "Impossible de se connecter à ${REMOTE_COMPUTER}"
            exit 1
    fi
    cp "${ISO_FILENAME}" "${ISO_MOUNTPATH}/${ISO_REMOTEPATH}"
    sync
    touch "${ISO_MOUNTPATH}/${ISO_REMOTEPATH}/gravure_ok.txt"
    sync
    umount ${ISO_MOUNTPATH}
    #rm -f "${ISO_FILENAME}"
    rm /home/links/*
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  14. #14
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Ben je pensais utiliser cette commande pour remplacer tout les espaces que tu rencontre par des underscore par exemple.

    Mais bon, ça se trompe je fais fausse route
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Tu as résolu les problèmes d'espaces dans tes noms de chemin?

    Sinon, protège ta variable $DIR.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for DIR in "$DIRS"
            do
                    if [ -d /mnt/$USERNAME/"$DIR" ]
                    then
                            if [ -d /home/$USERNAME/"$DIR"
    ...
    Si je comprends bien, tu cherches à sauvegarder les répertoires d'un utilisateur qui sont définis dans un fichier /home/sauvegarde/${USERNAME}.dir. J'insiste sur le fait que rsync peut lui-même se balader récursivement dans tes répertoires choisis. Tu évites ta boucle.

    Il faudra définir un fichier include pour rsync et y mettre les répertoires que tu veux sauvegarder. Exemple, pour un utilisateur windows toto, tu fais un mnt sur un répertoire à sauvegarder. Dans ce répertoire il n'y a qu'un certain nombre de répertoires à sauvegarder récursivement (c-à-d. chacun des répertoires choisis et tous leurs sous-répertoires).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    # ici le mnt de la station Windows
        mount -t smbfs (... etc ...) /mnt/smb/toto
     
    # resync récursif
        SRC='/mnt/smb/toto/'
        DEST='/.../.../backup'
        INCLUDE='/.../.../.../rsync_include'
        rsync -av --include-from=$INCLUDE $SRC $DEST
    Si tu ne veux "rsync" que certains répertoires du mnt, tu dois les inclures dans un fichier (ici rsync_include)

    Celui-ci contiendra:

    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
    # inclusion spécifique de répertoires
     
    # rép. "éclole élodie" et ses sous répertoires
    ?cole ?lodie/
    ?cole ?lodie/**
     
    # rép. CUISINE et ses sous répertoires
    CUISINE/
    CUISINE/**
     
    # rep. FESTIVITE et ses sous répertoires
    FESTIVITES/
    FESTIVITES/**
     
    # exclusion de tout
    - /*
    Attentions aux accentués et comment il sont vus par linux.
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  16. #16
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par buchs
    Ben je pensais utiliser cette commande pour remplacer tout les espaces que tu rencontre par des underscore par exemple.

    Mais bon, ça se trompe je fais fausse route

    ben non surtout pas... faut que ce soit "identique" de l'autre côté
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  17. #17
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Ah ok, dans ce cas je m'excuse, j'avais pas compris ça comme ça

    Considère ma remarque comme nulle dans ce cas
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  18. #18
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par buchs
    Ah ok, dans ce cas je m'excuse, j'avais pas compris ça comme ça

    Considère ma remarque comme nulle dans ce cas

    pas grave, ça aurait pu être utile... dans un passage de stockage windows -> linux par exemple
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  19. #19
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par ripat
    Tu as résolu les problèmes d'espaces dans tes noms de chemin?
    je viens d'en parler avec les intéressés... et ça leur convient comme cela

    Citation Envoyé par ripat
    Sinon, protège ta variable $DIR.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for DIR in "$DIRS"
            do
                    if [ -d /mnt/$USERNAME/"$DIR" ]
                    then
                            if [ -d /home/$USERNAME/"$DIR"
    ...

    marche pas... pour la boucle for

    Citation Envoyé par ripat
    Si je comprends bien, tu cherches à sauvegarder les répertoires d'un utilisateur qui sont définis dans un fichier /home/sauvegarde/${USERNAME}.dir. J'insiste sur le fait que rsync peut lui-même se balader récursivement dans tes répertoires choisis.
    ça me semblait une bonne idée... d'autant plus que la syntaxe n'est si terrible

    mais, dans un premier temps, on préfère laisser quelque chose de simple pour habituer les utilisateurs... je garde ton idée sous le coude



    quelqu'un voit d'autres petits détails à améliorer ???
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  20. #20
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    juste une remarque :
    pour "blinder" ton script test TOUT les codes retour (mount, mkisofs,.....)
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

Discussions similaires

  1. Avis sur un script simpliste
    Par Rubbick dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 08/10/2010, 16h49
  2. [MySQL] vos avis sur un script qui fonctionne pas
    Par younek dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/12/2008, 16h47
  3. Besoin d'avis sur un script Tk (grosse appli inside)
    Par Arioch dans le forum Langage
    Réponses: 3
    Dernier message: 10/05/2007, 13h28
  4. [Blog] Votre avis sur ce script de Blog en PHP (GPL)
    Par peck dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/01/2007, 09h44
  5. [Sécurité] Vos avis sur mes scripts sécurisés
    Par nazoreen dans le forum Langage
    Réponses: 9
    Dernier message: 29/09/2006, 22h13

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