3 votes

Rsync / rsnapshot

Je suis en train d'utiliser rsnapshot et ma configuration est la suivante:

config_version  1.2
snapshot_root   /home/user/.snapshots/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
cmd_rsnapshot_diff      /usr/bin/rsnapshot-diff
interval        hourly  24
interval        daily   7
interval        weekly  4
verbose 2
loglevel        3
logfile /home/user/rsnapshot.log
lockfile        /home/user/rsnapshot.pid
backup  root@website.com:/home/user/ website/
backup_script   root@website.com:/home/user/backup_mysql.sh website/mysql/

mon fichier de sauvegarde mysql: (volontairement laissé des choses)

### Mise en place du répertoire de sauvegarde ###
BAKRSNROOT=/.snapshots/tmp

#####################################
### ----[ Ne pas éditer ci-dessous ]------###
#####################################
### Format de l'heure par défaut ###
TIME_FORMAT='%H_%M_%S%P'

### Effectuer une sauvegarde ###
backup_mysql_rsnapshot(){
        local DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
        local db="";
        [ ! -d $BAKRSNROOT ] && ${MKDIR} -p $BAKRSNROOT
        ${RM} -f $BAKRSNROOT/* >/dev/null 2>&1
#       [ $VERBOSE -eq 1 ] && echo "*** Dumping MySQL Database ***"
#       [ $VERBOSE -eq 1 ] && echo -n "Database> "
        for db in $DBS
        do
                local tTime=$(date +"${TIME_FORMAT}")
                local FILE="${BAKRSNROOT}/${db}.${tTime}.gz"
#               [ $VERBOSE -eq 1 ] && echo -n "$db.."
                ${MYSQLDUMP} --single-transaction -u ${MUSER} -h ${MHOST} -p${MPASS} $db | ${GZIP} -9 > $FILE
        done
#               [ $VERBOSE -eq 1 ] && echo ""
#               [ $VERBOSE -eq 1 ] && echo "*** Backup done [ files wrote to $BAKRSNROOT] ***"
}

### Arrêt sur demande avec un message ###
die(){
        echo "$@"
        exit 999
}

### S'assurer que les binaires existent.. sinon arrêter
verify_bins(){
        [ ! -x $GZIP ] && die "Le fichier $GZIP n'existe pas. Assurez-vous que le chemin correct est configuré dans $0."
        [ ! -x $MYSQL ] && die "Le fichier $MYSQL n'existe pas. Assurez-vous que le chemin correct est configuré dans $0."
        [ ! -x $MYSQLDUMP ] && die "Le fichier $MYSQLDUMP n'existe pas. Assurez-vous que le chemin correct est configuré dans $0."
        [ ! -x $RM ] && die "Le fichier $RM n'existe pas. Assurez-vous que le chemin correct est configuré dans $0."
        [ ! -x $MKDIR ] && die "Le fichier $MKDIR n'existe pas. Assurez-vous que le chemin correct est configuré dans $0."
        [ ! -x $MYSQLADMIN ] && die "Le fichier $MYSQLADMIN n'existe pas. Assurez-vous que le chemin correct est configuré dans $0."
        [ ! -x $GREP ] && die "Le fichier $GREP n'existe pas. Assurez-vous que le chemin correct est configuré dans $0."
}

### S'assurer que nous pouvons nous connecter au serveur... sinon arrêter
verify_mysql_connection(){
        $MYSQLADMIN  -u $MUSER -h $MHOST -p$MPASS ping | $GREP 'alive'>/dev/null
        [ $? -eq 0 ] || die "Erreur: Impossible de se connecter au serveur MySQL. Assurez-vous que le nom d'utilisateur et le mot de passe sont correctement configurés dans $0"
}

### principal ####
verify_bins
verify_mysql_connection
backup_mysql_rsnapshot

Comment exécuter à distance ce fichier .sh pour récupérer la base de données et la ramener?

ÉDIT:

 rsnapshot hourly
----------------------------------------------------------------------------
rsnapshot a rencontré une erreur! Le programme a été appelé avec ces options:
/usr/local/bin/rsnapshot hourly
----------------------------------------------------------------------------
ERREUR: /usr/local/etc/rsnapshot.conf à la ligne 18:
ERREUR: backup_script \
         root@website.com:/home/user/backup_mysql.sh" \
     n'est pas exécutable ou introuvable. Veuillez utiliser un chemin \
     absolu.
ERREUR: ---------------------------------------------------------------------
ERREUR: Des erreurs ont été trouvées dans /usr/local/etc/rsnapshot.conf,
ERREUR: rsnapshot ne peut pas continuer. Si vous pensez qu'une entrée est correcte, assurez-vous de ne pas avoir d'espaces là où seules des tabulations devraient être.

le fichier a un chmod 777 donc il n'est pas caché

J'ai essayé quelque chose comme ça mais je ne copie/pull rien.

backup_script  /usr/bin/ssh root@exemple.com 'mysqldump -u root --all-databases | gzip --rsyncable > ~/all.sql.gz'    unused2

essayé:

backup_script /usr/bin/ssh user@website.com "/home/user/backup.script"  whatever/

cela a fonctionné mais n'a pas réussi à copier les fichiers.

ÉDIT:

backup_script   /usr/bin/ssh root@remote.com "/home/user/backup_mysql.sh"   blank/
backup_script   /usr/bin/scp -r root@remote.com:/.rsnapshots/tmp/ /.rsnapshots/tmp/       user/mysql/

reçu:

usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2
----------------------------------------------------------------------------
rsnapshot a rencontré une erreur! Le programme a été appelé avec ces options:
/usr/local/bin/rsnapshot hourly
----------------------------------------------------------------------------
ERREUR: backup_script /usr/bin/scp -r root@remote.com:/.rsnapshots/tmp/ returned 1
AVERTISSEMENT: Annulation de "user/mysql/"

3voto

Jacob Points 296

Tout d'abord, vous devriez déplacer le script de sauvegarde vers le système distant. Gardez à l'esprit que le fichier est exécuté sur le système distant ici, pas sur le local (celui qui exécute rsnapshot). Ensuite, une fois que le programme est exécuté sur le système distant, vous devriez ramener les fichiers sur le système local.

Quelque chose comme ceci devrait fonctionner :

backup_script /usr/bin/ssh user@website.com "/home/user/backup.script"  whatever/
backup_script /usr/bin/scp -r user@website.com:/home/user/your_data/ /.your_snapshot_root/rsnapshots/tmp/ target_dir_to_store_backups/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X