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 :

Script de backup FTP


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut Script de backup FTP
    Bonjour à tous,

    Je suis novice en shell.
    J'ai créé un script qui fait un backup de mon site hébergé vers mon poste local.
    J'utilise lftp pour la copie. J'y ai inclus une encryption de mon répertoire downloadé.
    Donc j'aimerais que les spécialistes du shell regardent mon code et le commentent. Qu'ils me disent ce qui ne va pas ou comment l'améliorer pour le rendre plus fiable, léger. Peut-être il manque des choses auxquelles je n'ai pas pensé.
    Bref savoir si on peut l'améliorer, le peaufiner, le rendre parfait.

    Un grand Merci pour votre aide.

    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
    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
    #!/bin/bash
    # Download d'un répertoire sur un site FTP
     
    HOST="serveur hébergeur"
    USER="user"
    PASSWORD="pass"
    LOCAL="/home/backup"
    REMOTE="/remote"
    REMOTE1="/remote1"
    LOG="lftp_log.txt"
    LOG1="lftp_log1.txt"
    DATE=$(date +%d-%m-%Y--%H-%M)
     
    # Création du répertoire de backup s'il n'existe pas
    if [ ! -d "$LOCAL" ]; then
      mkdir -p $LOCAL
    fi
     
    # Download par lftp
    lftp -c "set ftp:list-options -a;
    open -u $USER,$PASSWORD $HOST;
    !mkdir -p ~/backup/$DATE;
    lcd ~/backup/$DATE;
    mirror -e -v --log=$LOG $REMOTE/ $LOCAL/$DATE/;
    mirror -e -v --log=$LOG1 $REMOTE1/ $LOCAL/$DATE/; 
    quit"
     
    # Compression du répertoire
    cd ~/backup
    tar cfzv ${DATE}.tar.gz ~/backup/$DATE/
     
    # Encrypte l'archive avec AEScrypt
    aescrypt -e -p pass ${DATE}.tar.gz
     
    # Suppression des fichiers non encryptés
    rm -Rf ${DATE}
    rm ${DATE}.tar.gz
     
    #Compte le nombre de fichiers et répertoires
    cd ~/backup/$DATE
    F_CNT=0
    D_CNT=0
    for FILE in *; do
      test -f "$FILE" && F_CNT=`expr $F_CNT + 1`
      test -d "$FILE" && D_CNT=`expr $D_CNT + 1`
    done
    echo "$F_CNT fichiers & $D_CNT répertoires dans le répertoire courant."
     
    # Mail de confirmation
    echo "Backup du site terminé. Tout est sous controle. Il y a $F_CNT fichiers & $D_CNT répertoires dans le répertoire courant." | mail -s "Backup" mail@mail.com
     
    echo Backup terminé
    exit 0

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    expr n'est pas une commande bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test -f "$FILE" && ((F_CNT++))
    plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test -d "$LOCAL" || mkdir -p "$LOCAL"
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut
    Merci pour la réponse rapide.

    J'ai enlevé aussi le cd ~/backup/$DATE dans la section 'compte le nbre de fichiers et reps' car il donnait un message d'erreur.

    Est-ce qu'il y a d'autres optimisations à faire?

    Merci.

    Voici les modifications :

    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
    #!/bin/bash
    # Download d'un répertoire sur un site FTP
     
    HOST="serveur hébergeur"
    USER="user"
    PASSWORD="pass"
    LOCAL="/home/backup"
    REMOTE="/remote"
    REMOTE1="/remote1"
    LOG="lftp_log.txt"
    LOG1="lftp_log1.txt"
    DATE=$(date +%d-%m-%Y--%H-%M)
     
    # Création du répertoire de backup s'il n'existe pas
    if [ ! -d "$LOCAL" ]; then
      mkdir -p "$LOCAL"
    fi
     
    # Download par lftp
    lftp -c "set ftp:list-options -a;
    open -u $USER,$PASSWORD $HOST;
    !mkdir -p ~/backup/$DATE;
    lcd ~/backup/$DATE;
    mirror -e -v --log=$LOG $REMOTE/ $LOCAL/$DATE/;
    mirror -e -v --log=$LOG1 $REMOTE1/ $LOCAL/$DATE/; 
    quit"
     
    # Compression du répertoire
    cd ~/backup
    tar cfzv ${DATE}.tar.gz ~/backup/$DATE/
     
    # Encrypte l'archive avec AEScrypt
    aescrypt -e -p pass ${DATE}.tar.gz
     
    # Suppression des fichiers non encryptés
    rm -Rf ${DATE}
    rm ${DATE}.tar.gz
     
    #Compte le nombre de fichiers et répertoires
    F_CNT=0
    D_CNT=0
    for FILE in *; do
      test -f "$FILE" && ((F_CNT++))
      test -d "$FILE" && ((D_CNT++))
    done
    echo "$F_CNT fichiers & $D_CNT répertoires dans le répertoire courant."
     
    # Mail de confirmation
    echo "Backup du site terminé. Tout est sous controle. Il y a $F_CNT fichiers & $D_CNT répertoires dans le répertoire courant." | mail -s "Backup" mail@mail.com
     
    echo Backup terminé
    exit 0

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    Si ton objectif est de faire un backup quotidien, le login et mot de passe transiteront, en clair, sur le réseau, tous les jours, à la même heure.
    Les malfaiteurs se frottent déjà les mains. Faille de sécurité.
    Ftp fait le postulat que tout le monde est gentil. Et lftp aussi.

    En même temps, si ton entourage ne t'aime pas, un simple cat ton_script.bash permet de connaître les éléments de sécurité (login/mot de passe).

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut
    Merci pour ton commentaire.
    Effectivement j'avais pas pensé à la sécurité. Donc j'ai modifié le script pour utiliser FTP par TLS. Je suppose que c'est suffisant pour protéger l'envoi vers le serveur.
    Par contre pour rendre invisible le mot de passe dans le script j'ai aucune idée.

    Savez-vous comment faire pour pas voir ou crypter le MdP dans le script?

    Merci de votre aide précieuse

    Voici mon nouveau code toujours à commenter et à améliorer :

    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
    #!/bin/bash
    # Download d'un répertoire sur un site FTP
     
    HOST="serveur hébergeur"
    USER="user"
    PASSWORD="pass"
    LOCAL="/home/backup"
    REMOTE="/remote"
    REMOTE1="/remote1"
    LOG="lftp_log.txt"
    LOG1="lftp_log1.txt"
    DATE=$(date +%d-%m-%Y--%H-%M)
     
    # Création du répertoire de backup s'il n'existe pas
    if [ ! -d "$LOCAL" ]; then
      mkdir -p "$LOCAL"
    fi
     
    # Download par lftp
    lftp -c "set ftp:list-options -a;
    set ssl:verify-certificate false;
    set ftps:initial-prot;
    set ftp:ssl-force true;
    set ftp:ssl-protect-data true;
    set ftp:ssl-protect-list true;
    open -u $USER,$PASSWORD $HOST;
    !mkdir -p ~/backup/$DATE;
    lcd ~/backup/$DATE;
    mirror -e -v --log=$LOG $REMOTE/ $LOCAL/$DATE/;
    mirror -e -v --log=$LOG1 $REMOTE1/ $LOCAL/$DATE/; 
    quit"
     
    # Compression du répertoire
    cd ~/backup
    tar cfzv ${DATE}.tar.gz ~/backup/$DATE/
     
    # Encrypte l'archive avec AEScrypt
    aescrypt -e -p pass ${DATE}.tar.gz
     
    # Suppression des fichiers non encryptés
    rm -Rf ${DATE}
    rm ${DATE}.tar.gz
     
    #Compte le nombre de fichiers et répertoires
    F_CNT=0
    D_CNT=0
    for FILE in *; do
      test -f "$FILE" && ((F_CNT++))
      test -d "$FILE" && ((D_CNT++))
    done
    echo "$F_CNT fichiers & $D_CNT répertoires dans le répertoire courant."
     
    # Mail de confirmation
    echo "Backup du site terminé. Tout est sous controle. Il y a $F_CNT fichiers & $D_CNT répertoires dans le répertoire courant." | mail -s "Backup" mail@mail.com
     
    echo Backup terminé
    exit 0

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut
    Bonjour,

    Personne n'a une idée du comment cacher un mot de passe dans un script?

    Merci beaucoup

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/08/2014, 09h22
  2. Réponses: 0
    Dernier message: 13/08/2014, 09h05
  3. Script de Backup FTP
    Par Are-no dans le forum VBScript
    Réponses: 2
    Dernier message: 16/01/2007, 19h04
  4. [GZip] script de backup compresser un repertoire en gzip
    Par venomelektro dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 27/10/2005, 14h45
  5. (MS DOS) Script de connections FTP
    Par Furius dans le forum Windows
    Réponses: 14
    Dernier message: 06/10/2005, 18h45

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