Sauvegardes MySQL / Fichiers

Discussion dans 'Hébergements Mutualisés' démarrée par cyberbobjr, Nov 2, 2016.

  1. cyberbobjr

    cyberbobjr New Member

    Bonjour,
    je suis hyper inquiet : la solution de backup R1Soft fournie par PlanetHoster ne m'affiche pas les sauvegardes réalisées les 15 derniers jours. Et encore, avant mon ticket au support, je n'avais aucune sauvegarde.
    Cette mésaventure, couplée au fait que je n'ai pas la possibilité de sauvegarder mes bases SQL (j'en ai une 15aine) me fait craindre le pire.
    Donc question à la communauté : De quelles solutions dispose-je pour réaliser un backup de l'ensemble de mes données (fichiers + Bases SQL) ? quelqu'un a-t'il mis en place un script CRON pour réaliser ces tâches et serait prêt à le partager ?

    En vous remerciant par avance pour votre aide,
    Bob
     
  2. David77

    David77 Member

    Bonjour,

    Ce sujet a été abordé ici : https://forums.planethoster.net/threads/sauvegarde-batabases-via-mysqldump-impossible-1045.2039/

    Pour résumer voilà un exemple de contenu d'un fichier backup.sh qui est appelé par tache cron pour sauvegarder ton répertoire public_html et 2 bases de données :
    Code:
    #!/bin/sh
    
    USER="usercpanel"
    
    DBADMIN="backup"
    DBPW="password"
    
    DB1="base1"
    DB2="base2"
    
    DATE=`date -I`
    
    
    find /home/$USER/backups/files/public_html* -mtime -1 -exec rm {} \;
    find /home/$USER/backups/bdd/bdd* -mtime -1 -exec rm {} \;
    
    
    mysqldump -u ${USER}_${DBADMIN} -p$DBPW ${USER}_${DB1} | gzip > /home/$USER/backups/bdd/bddbackup_${DB1}_${DATE}.sql.gz
    mysqldump -u ${USER}_${DBADMIN} -p$DBPW ${USER}_${DB2} | gzip > /home/$USER/backups/bdd/bddbackup_${DB2}_${DATE}.sql.gz
    
    tar czf /home/$USER/backups/files/public_html_$DATE.tar.gz -C / home/$USER/public_html;
    Pour précision :
    • DBADMIN est un utilisateur mysql qui doit avoir accés à toutes les bases de données que tu veux sauvegarder avec tous les droits sur chacune
    • "find /home/$USER/backups/files/public_html* -mtime -1 -exec rm {} \;" permet d'effacer automatiquement la sauvegarde de la veille afin de ne pas surcharger l'espace disque
      C'est une boucle qui cherchera tous les fichiers commençant de la même façon (ici "public_html")
      Cette fonction a été mis en place car nous téléchargeons quotidiennement et automatiquement les sauvegarde sur un PC (méthodes éxpliqués sur le post cité en début)
    Le reste des lignes doit te parler normalement ;)


    Et l'appel de la tache cron se fait ainsi :
    Code:
    30 2 * * * /home/usercpanel/backups/backup.sh
    Ici tous les jours de tous les mois à 2h30 du matin
     
  3. cyberbobjr

    cyberbobjr New Member

    Merci beaucoup pour ton aide, j'avais effectivement vu ce post, mais vu son âge il me semblait devenu obsolète :)
    Encore merci, je vais tester.
    Bonne journée,
    Bob
     
  4. François D

    François D Member

    Petite alternative... principalement pour ceux qui ont plusieurs domaines

    Code:
    #! /bin/bash
    
    # USER CPANEL
    USER=""
    
    # USER MYSQL ADMIN
    DBADMIN=""
    
    # MOT DE PASSE ADMIN
    DBPW=""
    
    # REPERTOIRE DE SAUVEGARDE
    BACKUP_DIR="/home/$USER/backups"
    
    # JOURS A GARDER
    NBJOURS=7
    
    # REPERTOIRES de vos SITES SUPPLEMENTAIRES- séparés par un espace. Exemple "monsite.com monsite2.com"
    WEBSITES="monsite.com monsite2.com"
    
    # RIEN A CHANGER APRES
    ############################################
    
    # Détermine la date du jour
    DATE=$(date +"%F")
    
    # MYSQL
    # CREATION DE LA LISTE DES BASES ACCESSIBLES
    databases=`mysql --user=$DBADMIN -p$DBPW -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
    
    # LOOP A TRAVERS LES BASES ET DUMP
    for db in $databases; do
      mysqldump --force --opt --user=$DBADMIN -p$DBPW --databases $db | gzip > "$BACKUP_DIR/bdd/${db}_${DATE}.gz"
    done
    
    # SAUVEGARDE du site principal (public_html)
    find /home/$USER/public_html -type f -size -3M -print0 | tar -czf /home/$USER/backups/files/${USER}_${DATE}.tar.gz --null -T -
    
    # SAUVEGARDE SITES SUPPLEMENTAIRES
    for WEBSITE in $WEBSITES; do
      if [ -d /home/$USER/${WEBSITE} ]; then
        find /home/$USER/${WEBSITE} -type f -size -3M -print0 | tar -czf /home/$USER/backups/files/${WEBSITE}_${DATE}.tar.gz --null -T -
      fi
    done
    
    # SAUVEGARDE EMAILS
    tar cf /home/$USER/backups/mail/${USER}_${DATE}.tar.gz -C / home/$USER/mail ;
    
    for WEBSITE in $WEBSITES; do
      if [ -d /home/$USER/mail/${WEBSITE} ]; then
        tar cf /home/$USER/backups/mail/${WEBSITE}_${DATE}.tar.gz -C / home/$USER/mail/${WEBSITE} ;
      fi
    done
    
    find /home/$USER/backups/bdd/bdd* -mtime +${NBJOURS} -exec rm {} \;
    find /home/$USER/backups/files/site* -mtime +${NBJOURS} -exec rm {} \;
    find /home/$USER/backups/mail/mail* -mtime +${NBJOURS} -exec rm {} \;
    
    C'est à peu près la même chose sauf que :
    Pour les bases, la commande se charge elle-même de lister les bases et d'en faire la sauvegarde.

    Le site principal est sauvegardé (public_html)

    Une boucle lit la variable WEBSITES et sauvegarde chaque site séparément (en vérifiant si évidemment le dossier existe).

    Le dossier mail est sauvegardé au complet mais aussi, chaque site a son propre dossier
    home/$USER/mail/monsite.com

    Donc, une boucle les sauvegarde séparément.
     
    Dernière édition: Jan 24, 2017
  5. François D

    François D Member

    Note 2:

    Ma commande sauvegarde les fichier plus petits que 3M. Je fournis parfois de gros fichiers en téléchargement mais ces fichiers ne sont pas essentiels au site.

    Si cela n'a pas d'importance, changer :
    Code:
    find /home/$USER/${WEBSITE} -type f -size -3M -print0 | tar -czvf /home/$USER/backups/files/${WEBSITE}_${DATE}.tar.gz --null -T -
    
    pour
    Code:
    find /home/$USER/${WEBSITE} -type f -print0 | tar -czvf /home/$USER/backups/files/${WEBSITE}_${DATE}.tar.gz --null -T -
    
     

Partager cette page