Accueil › FORUM › Entraide générale › Comment insérer un script de sauvegarde dans mon syno
Ce sujet a 40 réponses, 4 participants et a été mis à jour par rescue, il y a 9 ans et 12 mois.
Bonjour,
J’ai découvert qu’avec un script de sauvegarde on pouvait faire des backups incrémentales des bases medintux à partir du syno, la où sa solution de sauvegarde intégrée fait défaut.
Je suis capable de parcourir l’arborescence des fichiers du syno en ouvrant une session SFTP mais je suis incapable de coller un fichier texte contenant les instructions du script au bon endroit.
Quelqu’un peut il me montrer la marche a suivre ?
Merci d’avance
Bonjour,
Personnellement je n’ai pas syno ! Par contre : Il existe le solution avec MedWebTux dans l’onglet base de données une sauvegarde table par table au format sql en ayant au préalable sélectionné la base de données concernée dans la liste à gauche.
Sinon il y a la solution complète développé et maintenu par mes soins MyIGSR
à tester et à mon avis ça peux servir.
@+
Yanick
Si ta question est « comment mettre une ligne de commande sur un serveur Linux en mode texte », je pourrai te renvoyer à mon guide de survie http://delafond.org/survielinux/index.html
Pour ton fichier de texte :
sélectionne-le à la souris
sur ta session sftp, au bon endroit de l’arborescence :
vi « le_fichier_de_config »
descends le curseur au bon endroit dans le texte (au clavier)
clic central
Pour enregistrer : faire la séquence Esc : wq !
« <span style= »color: #353535; font-family: Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 20px; background-color: #fbfbfb; »>Si ta question est « comment mettre une ligne de commande sur un serveur Linux en mode texte », je pourrai te renvoyer à mon guide de survie </span>http://delafond.org/survielinux/index.html » :
En fait j’ai trouvé sur le net un script qu’il faut placer dans un repertoire de mon syno pour que ça déclenche de façon periodique les sauvegardes de DrTuxTest dont j’ai besoin.
Je vais scruter le document de survie, merci beaucoup !
De retour après quelques essais
Je suis parvenu a placer mon fichier script dans le bon répertoire.
J’ai constaté en editant le fichier avec vi une anomalie que je ne m’attendais pas a voir : après chaque ligne il me met un caractère ^M
Je ne comprends pas d’ou ça sort alors que le fichier original edité avec notepad n’en contient aucun de ce type.
Une idée ?
merci a vous
Merci Gérard c’est exactement ça !
Maintenant j’ai un autre « petit souci » : la présence de caractères spéciaux mal affichés dans le texte contenant les instructions, en particulier les « é ».
Est-ce que c’est grave si je mets des « e » à la place des « é » ?
Normalement, il ne devrait jamais y avoir d’accents dans les noms de commandes, d’options, de fichier, etc.
S’il y a des accents dans les commentaires, ça ne gêne personne.
Pour avoir le bon encodage, tu devrais reprendre ton notepad++ et demander un encodage en utf-8.
A+
Retour et bonjour de nouveau à tous :
Voici le script que j’ai « déposé » dans mon synology :
!/bin/sh
# *******************************************
# Script de sauvegarde automatique des bases
# de données d’un serveur MySQL
# *******************************************
# Par F. Maurel
# Suivi des mises à jours sur nas-forum :
#
# *******************************************
# v1.0 – 10/02/12 – Version initiale
# v1.1 – 11/02/12 – Ajout path binaire mysql
# *******************************************[/size][/font][/color]
[color=#303030][font=Arial, Helvetica, sans-serif][size=3]# *******************************************
# Renseigner les variables de connexion au serveur
# *******************************************
# Adresse IP / nom du serveur de bases de données
mysql_server=localhost
# Nom d’utilisateur ayant les droits adéquats, cf forum
mysql_user=sauvegarde
# Mot de passe de l’utilisateur
mysql_pass=excalibur
# Chemin du dossier où vont être sauvegardées les bases de données, chemin sans le / en fin
dossier_sauvegarde=/volumeUSB1/usbshare
# Chemin des binaires mysql
dossier_bin=/usr/syno/mysql/bin
# *******************************************
# Ne pas modifier la suite du fichier
# *******************************************
bases=$dossier_bin/mysql --host=$mysql_server --user=$mysql_user --password=$mysql_pass -e "show databases;" -B -s 2> /dev/null
if [ -z « $bases » ];then
echo « Erreur d’accès ou pas de bases. »
exit 1
fi
echo « *************************************************** »
echo « * Début d’optimisation et de sauvegarde des bases * »
echo « *************************************************** »
for base in $bases
do
echo « ——- Traitement de la base $base ——- »
echo « — Début d’optimisation — »
$dossier_bin/mysqlcheck –optimize –host=$mysql_server –user=$mysql_user –password=$mysql_pass –databases « $base »
wait
echo « >> Optimisation terminée »
echo « — Début de sauvegarde — »
$dossier_bin/mysqldump –opt –verbose –host=$mysql_server –user=$mysql_user –password=$mysql_pass –databases « $base » | gzip -9 > ${dossier_sauvegarde}/backup-${base}-$(date -I).gz
echo « ——- Sauvegarde de la base $base terminée ——- »
done
echo « ********************************* »
echo « * Sauvegarde des bases terminée * »
echo « ********************************* »
Ce script permet de faire des sauvegardes complètes de DrTuxTest en mode compréssé .gz et prennent environ 4.6 Go sur mon disque USB externe (à la date d’aujourd’hui). Temps nécessaire pour cette tache : 3h48 mn. J’ai programmé une tache crontab pour l’exécuter automatiquement chaque jour à 18h pour faire des essais. La sauvegarde est sur un disque dur externe USB3.
Je souhaiterai pouvoir compléter ce script en ajoutant des instructions pour qu’il exécute des sauvegardes incrémentales CERTAINS JOURS DE LA SEMAINE (que je pourrais fixer par exemple du lundi au vendredi inclus) et une sauvegarde TOTALE HEBDOMADAIRE, le samedi (ce jour là la charge du serveur sera minimale).
Il faudrait aussi que ce script permette de ne garder que les 5 dernières sauvegardes totales afin d’eviter un encombrement excessif su support de sauvegarde.
Certains d’entre vous sont-ils familiarisés avec ce type de scripts ?
J’apprécierais un coup de main !
Par ailleurs répondre au membre rescue :
J’ai testé la solution MyIGSR. En fait je rencontre des difficultés après lancement (connexion sans problèmes au serveur avec login et mot de passe OK)
C’est ensuite que ça se corse : le module propose de réaliser une copie du fichier DrTuxTest ce que je conçois parfaitement mais il semble proposer une « destination vers » en dessous du choix de la base que ‘on souhaite exporter mais le menu indique de nouveau la liste des bases du serveur….donc je ne comprends pas….je m’attendais à trouver un choix du suport sur lequel exporter la base copiée mais je ne vois pas….
Un éclaircissement serait utile. J’utilise la version 1.3
merci
Bonjour,
Alors pour le coup de main je serais partisan de faire simple.
Je m’explique :
lorsqu’on a la main sur son serveur en mode fichier il est conseillé de faire une sauvegarde du dossier mysql.
Sous un OS Linux il se trouve dans : /var/lib/mysql
Dans le cas contraire on fait des sauvegarde en SQL.
Dans votre cas je vous conseille la sauvegarde du dossier mysql, c’est beaucoup plus souple.
Voici comment faire avec un exemple de script moins complexe il faudra un fichier et le rendre exécutable et automatisé avec une tache cron.
————————–
#!/bin/bash
# creation du dossier avec la date du jour en local ou sur un disque amovible.
mkdir /home/toto/mysql-date +%Y-%m-%d
# copie du contenu du dossier mysql dans le dossier cree precedemment.
cp -R /var/lib/mysql/* /home/toto/mysql-date +%Y-%m-%d
————————-
Remplacer les valeurs home et toto par les vôtres.
Ce script permet de créer un dossier ‘mysql-date_du_jour’ avec les données du dossier ‘mysql’ qui ce trouvent dans /var/lib/mysql
Croyez moi en cas de pépin ce sera plus rapide pour vous de restaurer. Et à mon avis ça prendra moins de temps.
3H48 pour faire un backup c’est énorme et ce n’est pas normal.
Désolé si je ne répond pas à votre post mais dans ma philosophie d’administrateur système et de développeur je préfère faire simple.
Merci.
« <span style= »background-color: #fbfbfb; color: #353535; font-family: Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 20px; »>lorsqu’on a la main sur son serveur en mode fichier » : vous voulez dire quand le repertoire « mysql » est accessible sur une arborescence par ex ?</span>
Si j’ai bien compris votre script donne la possibilité de faire la sauvegarde « en bloc » sans choix possible de la base que l’on veut sauvegarder ? pourquoi pas …..
Que représentent les % dans les lignes de votre script ? dois-je les adapter à mon utilisation ?
« <span style= »background-color: #fbfbfb; color: #353535; font-family: Verdana, Helvetica, sans-serif; font-size: 12px; line-height: 20px; »>3H48 pour faire un backup c’est énorme et ce n’est pas normal » : oui je conçois que c’est long mais mon fichier sauvegardé en .sql « pèse » 20 Go environ….et mon support externe fait 1 To en USB3 directement branché au dos du synology DS212+.</span>
Merci pour le coup de main….ça progresse !
Re,
Pour MyIGSR :
Il faut faire une sauvegarde de toutes les tables de la base concernée.
les fichiers sql apparaissent dans la liste plus bas.
Cliquez ensuite sur le lien Compresser ça vous crée un zip que vous allez pouvoir en cliquant dessus télécharger et enregistrer sur votre disque externe.
Pour mon dernier script :
Oui pour cet exemple il vous fait une sauvegarde du dossier complet de mysql. Si vous voulez faire un choix il faut aller plus loin dans le chemin.
Par exemple /var/lib/mysql/DrTuxTest/*
Vous pouvez ainsi en faire plusieurs comme cela vous enchante, c’est un exemple c’est à vous de l’adapter à ce que vous souhaitez faire.
Les % sont utilisés que le script shell comprenne que c’est un format date qu’il faut écrire.
Dans cet exemple de script le dossier créé sera : mysql-2013-09-15
Merci et à bientôt…
Bonjour et retour :
J’ai donc réalisé comme proposé dans votre commentaire le petit script de copie du repertoire mysql dans lequel sont mes bases.
Pour info elles sont stockées par défaut sur mon synology dans /volume1/@database/mysql …c’est assez atypique mais c’est ainsi.
Je voudrais aussi réaliser une journalisation, être prévenu que tout c’est bien passé à chaque copie, est-ce faisable ?
J’ai ajouté une commande crontab pour automatiser la copie chaque jour lorsque la charge du servur est minimale.
Pour produire ce fameux journal on fait comment ?
Merci beaucoup en tout cas pour le coup de main « rescue » !
Vous devez être connecté pour répondre à ce sujet.