[Article] Exemple de script de sauvegarde pour un dédié

Discussion dans 'Administration d'un site Web' créé par Ron56, 13 Janvier 2008.

  1. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Nouveau tuto en utilisant RSYNC ici : https://www.webrankinfo.com/forum/t/article-beta-sauvegarder-un-dedie-part-ii.95025/ (plus sécurisé...)

    Bonsoir,

    Ce soir , ayant eu un disque dur USB en plus sur mon serveur j'ai décidé de me lancer dans la rédaction d'un script basique (et compréhensible) de backup pour un serveur dédié

    On a par exemple le dossier /backup/

    Le script va supprimer le dossier de sauvegarde vieux de deux jours
    Le script va créer un répertoire dans le dossier backup a la date du jour (ex : 13012008)
    Le script va créer une archive .tar du dossier /var/www (possibilité de faire une boucle et un tar par site assez facilement ;) )
    Le script va faire un dump sous la forme nom_table.sql.gz pour chaque table mysql

    Les sauvegardes mysql et des sites étant bien sur placée dans le répertoire a la date du jour

    Si vous avez des améliorations ou des demandes n'hesitez pas ;)

    Code:
    #!/bin/bash
    echo Script de sauvegarde ...
    #
    # Sauvegarde - script basique
    # Fontenay Ronan 
    # Aide pour la rédaction de ce script : http://snippets.prendreuncafe.com/snippet/67
    
    ###### Debut Initialisation ######
    
    #user mysql :
    strMysqlUser="" 
    #mot de passe mysql de l'user:
    strPassword="" 
    #dossier ou on stockera les backups
    #/!\ Penser a mettre un slash de chaque coté : ex : /media/backup/
    repTravail="/backup/" 
    
    dateActuelle=$(date +%d%m%Y)
    datePassee=$(date --date '2 days ago' +%d%m%Y)
    
    repTravailActuel=$repTravail$dateActuelle
    
    
    echo - Suppression du repertoire $repTravail$datePassee
    
    rm -rf $repTravail$datePassee
    
    echo -----------------------------------------------------
    
    echo - Création du repertoire $repTravailActuel
    
    mkdir $repTravailActuel
    
    echo -----------------------------------------------------
    
    echo - Package de /var/www/ en $repTravailActuel/www.tar
    
    tar -cf $repTravailActuel/www.tar /var/www/*
    
    echo -----------------------------------------------------
    
    echo - Backup MYSQL
    echo -----------------------------------------------------
    listDatabase=$(mysql --user=$strMysqlUser --password=$strPassword --exec="SHOW DATABASES;" |  tail -n +2)
     
    #dump de chaque base dans un fichier
    for lineDatabase in $listDatabase
    do
        echo Debut du dump de la base $lineDatabase vers $repTravailActuel
        mysqldump --user="$strMysqlUser" --password="$strPassword" "$lineDatabase" | gzip > "$repTravailActuel"/"$lineDatabase".sql.gz
        echo Dump compressé dans $repTravailActuel/$lineDatabase.sql.gz
        echo -----------------------------------------------------
    done
    echo Fin de la sauvegarde
    exit 0
    
    Pour la mise en place

    Moi je l'ai mis dans : /etc/save/save

    Il faut faire :

    chmod +x /etc/save/save (pour qu'il soit executable)
    chown root /etc/save/save (seul root peut modifier le fichier)
    chmod 700 /etc/save/save (seul root peut voir le fichier)

    Moi je planifie ca tout les jours a 3h du matin, pour ca on fait :

    crontab -e

    Puis on ajoute la règle :

    00 3 * * * sh /etc/save/save

    Ron
     
  2. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 595
    J'aime reçus:
    0
    Et hop reco ! Merci Ron ;)
     
  3. hm19000
    hm19000 WRInaute occasionnel
    Inscrit:
    2 Octobre 2005
    Messages:
    368
    J'aime reçus:
    0
    Merci pour cet article.Pour les bases de donnée, est que c'est possible faire une sauvegarde de toutes les bases qui se trouve sur le serveur (avec root en mysql) ?
     
  4. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Le script le fait :p

    Avec mysqldump c'est très facile :wink:
     
  5. zeetv75
    zeetv75 Nouveau WRInaute
    Inscrit:
    30 Novembre 2006
    Messages:
    36
    J'aime reçus:
    0
    je me permets d'apporter une précision pour ton script.

    l'intéret d'une sauvegarde n'est pas de garder uniquement celle d'il y a 2 jours.

    en général lorsqu'on sauvegarde dans un environnement pro par exemple, c'est plus ou moins sous cette forme :

    - 1 sauvegarde toutes les nuits sur 7 jours glissants : on garde 7 sauvegardes des 7 derniers jours

    ensuite en fin de chaque semaine :
    - 1 sauvegarde par semaine (on archive la sauvegarde de j+6)

    ensuite une sauvegarde en fin de chaque mois

    parce que, admettons par exemple que dans ton cas, tu partes en week-end, en congés et qu'il y ait eu un crash sur ta base, et que ta base "crashée" a été sauvegardée et a donc écrasée ta précédente sauvegarde ?

    bin,t'as plus rien ...
    en revanche dans mon cas, tu peux remonter sur plusieurs semaines.

    enfin c'est comme ca qu'on fait en général.

    ensuite un p'tit tar -czf pour créer automatiquement des de type backup-20080115.tar.gz.
     
  6. fandecine
    fandecine WRInaute passionné
    Inscrit:
    2 Avril 2005
    Messages:
    1 873
    J'aime reçus:
    0
    Encore mieux pour celui qui a plusieurs dédiés, avec rsync :

    Pour backup de serveur A vers serveur B :

    Etape 1 :

    Sur la machine B, on crée une clef ssh :
    Code:
    ssh-keygen -t dsa -b 1024
    on valide le nom proposé par défaut et on entre une passphrase vide.

    Etape 2 :

    On copie cette clef sur la machine A:
    Code:
    ssh-copy-id -i ~/.ssh/id_dsa.pub "-p PORT SERVEUR"
    SERVEUR est l'IP de A et Port son port ssh.
    On entre son mot de passe root ssh et son paswword.

    Etape 3 :

    On sauvegarde la BDD Mysql de A sur B (en supposant que mysql est dans /var/lib/mysql/ et que l'on veut le sauvegarder dans /var/sauvegarde)

    Code:
    rsync -avz --progress --delete -e "ssh -p PORT" [email protected]:/var/lib/mysql/ /var/sauvegarde --exclude=.*
    SERVEUR est l'IP de A et Port son port ssh.

    Ensuite, il suffit de mettre tout cela dans un cron et le tour est joué :D

    Avec ces options seul les fichiers modifiés sont mis a jour et ils sont sauvegardés avec le même UID groupe et Utilisateur.

    Pour faire un restaure, il suffit d'inverser l'opération. Il est également possible de suavegarder n'importe quelle partie du systéme de fichier du serveur A sur n'importe quelle partie du système de fichier de B.

    Si vous avez plusieurs serveurs, vous pouvez mettre en place des backups croisés. :wink:
     
  7. [--Eric--]
    [--Eric--] WRInaute occasionnel
    Inscrit:
    6 Janvier 2004
    Messages:
    352
    J'aime reçus:
    0
    Le problème avec rsync c'est que si tu te fais hacker ton serveur avec suppression de données juste avant la sauvegarde, après t'es mal :? Par contre pour restaurer c'est vrai que c'est nickel.
    Le mieux est je pense de faire des sauvegardes comme indiqué plus haut et de les "mettre à l'abri" sur une autre machine si on en a plusieurs.
     
  8. Topsitemaker
    Topsitemaker WRInaute impliqué
    Inscrit:
    19 Novembre 2006
    Messages:
    527
    J'aime reçus:
    0
    Bonjour,
    En plus de faire des sauvegardes completes et incrementals (économie de mémoire de masse), et du rsync, je crypte les fichiers de sauvegarde avec gpg pour 2 raisons, quand je rapatrie mes sauvegardes par FTP, s'il y a un parasite qui intercepte mon fichier il ne pourra pas le lire. Ensuite Si le serveur de sauvegarde se fait hacker, les données sensibles de la sauvegarde des autres serveurs ne sont pas visibles.
     
  9. [--Eric--]
    [--Eric--] WRInaute occasionnel
    Inscrit:
    6 Janvier 2004
    Messages:
    352
    J'aime reçus:
    0
    Oui bonne idée en effet de crypter car avoir une sauvegarde sur un serveur qui se fait hacker... :roll: Un petit tuto?... :wink:

    Sinon pour le code plus haut il y a une petite coquille :

    Code:
    echo - Package de /var/www/ en $repTravailActuel/www.tar
    
    tar -cf $repTravailActueldd/www.tar /var/www/* 
    a corriger par

    Code:
    echo - Package de /var/www/ en $repTravailActuel/www.tar
    
    tar -cf $repTravailActuel/www.tar /var/www/* 
     
  10. Topsitemaker
    Topsitemaker WRInaute impliqué
    Inscrit:
    19 Novembre 2006
    Messages:
    527
    J'aime reçus:
    0
    Je suis un peu overbooké et je n'ai plus le gpg en tête, un de ces jours j'y penserai :wink:

    Et pour finir le tout, Je fais un md5 des fichiers de sauvegardes sur chacun des serveurs, et je les compare pour voir si le transfert rsync c'est bien passé (il y a donc aussi un rsync des md5). Mine de rien, cette vérif m'a fait prendre conscience de problèmes pontuelles parfois difficilement détectables (FS full, défaillance de la rotation des sauvegardes... ).
     
  11. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    héhé merci corrigé ;)
     
  12. sietjp
    sietjp WRInaute occasionnel
    Inscrit:
    14 Décembre 2003
    Messages:
    476
    J'aime reçus:
    1
    Je serais également intéressé par un petit tuto permettant de crypter ses sauvegardes :) .

    [edit] En cherchant un peu j'ai trouvé ce tuto (en anglais) qui m'a l'air trés clair : http://www.somacon.com/p107.php
     
  13. Neoxy
    Neoxy WRInaute occasionnel
    Inscrit:
    19 Avril 2006
    Messages:
    442
    J'aime reçus:
    0
    Script assez simpa à tester en tout cas !!!

    En esperant que celui ci s'enrichira en terme de fonctionnalité :)
     
  14. link182
    link182 WRInaute occasionnel
    Inscrit:
    26 Juillet 2005
    Messages:
    426
    J'aime reçus:
    0
    Pareil !
     
  15. rikew
    rikew WRInaute impliqué
    Inscrit:
    19 Décembre 2002
    Messages:
    683
    J'aime reçus:
    2
  16. sietjp
    sietjp WRInaute occasionnel
    Inscrit:
    14 Décembre 2003
    Messages:
    476
    J'aime reçus:
    1
    fandecine, je ne comprends pas commet rsynch sait quelle clef il doit utiliser dans la commande de l'étape 3 ?
     
  17. david96
    david96 WRInaute passionné
    Inscrit:
    28 Août 2005
    Messages:
    1 204
    J'aime reçus:
    0
    J'utilise rsync aussi, rien à dire, une puissance incroyable.
    Pour la crainte que tu soumets, avec une sauvegarde incrémentale il n'y a plus de souci !
    Code:
    #!/bin/bash
    local=/home/sauvegarde
    server=/var/www
    idate=$(date +%d%m%y) # Dossier avec date du backup
    rsync -abvz --backup-dir=$idate --delete ssh [email protected]:$server $local
    On cron le tout via la méthode de fandeciné (en passant, merci) et le tour est joué :D On peut aussi omettre certains fichiers, tel que les logs, rajouter à la ligne rsync
    Code:
    --exclude=*.log
    J'ai omis mysqldump (sauvegarde de la base de données) dans ce chti scrip, a rajouter of course ! ;-)
     
  18. sietjp
    sietjp WRInaute occasionnel
    Inscrit:
    14 Décembre 2003
    Messages:
    476
    J'aime reçus:
    1
    rsynch fait un transfert crypté grâce à l'option "ssh" ?
    Est e quil faut créer des clefs publique/privée comme l'explique fandecine pour que ça marche ?
     
  19. david96
    david96 WRInaute passionné
    Inscrit:
    28 Août 2005
    Messages:
    1 204
    J'aime reçus:
    0
    L'avantage de la méthode de fandeciné et que tu peux mettre la fonction rsync dans un cron (il ne te demandera plus le mot de passe)
    Car tu es obligé de passer en mode root pour faire des backup via rsync (ce qui est logique).

    Sinon si tu préfères lancer le script de chez toi (via la console), tu peux te passer de la méthode de fandeciné.
    Code:
    #!/bin/bash
    local=/home/sauvegarde
    server=/var/www
    idate=$(date +%d%m%y) # Dossier avec date du backup
    rsync -abvz --backup-dir=$idate --delete [email protected]:$server $local
    rsync te demandera automatiquement le mot de passe. :)
     
  20. sietjp
    sietjp WRInaute occasionnel
    Inscrit:
    14 Décembre 2003
    Messages:
    476
    J'aime reçus:
    1
    Ah OK merci je comprends mieux maintenant.

    Mais, les tâches cron ne sont pas éxécutées en tant que root ?
     
  21. [--Eric--]
    [--Eric--] WRInaute occasionnel
    Inscrit:
    6 Janvier 2004
    Messages:
    352
    J'aime reçus:
    0
    Une autre solution basée sur rsnyc qui semble excellente !! : rsnapshot

    Howto en français.
     
Chargement...
Similar Threads - [Article] Exemple script Forum Date
Google victime d'abus d'incompréhension dominante [Article] Droit du web (juridique, fiscalité...) 17 Septembre 2010
[Article] Automatisez le déploiement de vos sites Administration d'un site Web 13 Août 2009
[Article] Les journaux cherchent le moyen de faire payer leur contenu Monétisation d'un site web 24 Mars 2009
[article] Exploiter les stats Google Webmaster Tools Référencement Google 16 Octobre 2008
[article] backlinks: la mort de l' Ancre Référencement Google 30 Septembre 2008
[Article] Lighttpd et apache sur le même serveur II Administration d'un site Web 26 Juin 2008
[Article] [beta]Sauvegarder un dédié part II Administration d'un site Web 13 Juin 2008
[Article] Configurer lighttpd (lighty) avec php5 Administration d'un site Web 16 Janvier 2008
[article] APACHE, comment ça marche ? Administration d'un site Web 28 Décembre 2007
[article] Faire évoluer son architecture serveur Administration d'un site Web 4 Novembre 2007
[article] illustration de la force ds liens internes Référencement Google 19 Août 2007
[article] Optimiser son serveur dedié part II Administration d'un site Web 12 Février 2007
[article] Bien configurer apache Administration d'un site Web 27 Novembre 2006
[article] Sécuriser son serveur LAMP Administration d'un site Web 18 Août 2006
[article] Optimiser son serveur dédié Administration d'un site Web 8 Mai 2006
[Article] Link Spam Detection Based on Mass Estimation Techniques avancées de référencement 9 Novembre 2005
[article] Google, Yahoo et MSN unis contre le spam ? Techniques avancées de référencement 26 Janvier 2005
[Article] L'effet sandbox sur Google Référencement Google 29 Décembre 2004
[Article] Le poids des mots, le choc des URL :-) Référencement Google 8 Décembre 2004
[Article] La commande link:URL sur Google Netlinking, backlinks, liens et redirections 5 Décembre 2004