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 11 ans et 4 mois.
Bonsoir,
Je voudrais aussi réaliser une journalisation, être prévenu que tout c’est bien passé à chaque copie, est-ce faisable ?
Oui tout est possible, chose à savoir si ça existe ou pas.
Envoi d’un mail ou un créer un journal d’événement ?
Je conseille un envoi de mail car un journal on y va au début, après quelques semaines on a vite oublié et c’est super lourd à lire.
Pour le mail il faut savoir si c’est possible d’envoyer un mail avec votre Syno. Car il existe la commande mail en shell pour le faire.
@ très bientôt…
Retour :
Je rencontre des difficultés car le petit script ne s’execute pas…
Je l’ai placé dans le repertoire /usr/syno/mysql/bin le script en le nommant « copiemysql.sh »
Je l’ai rendu exécutable : chmod +x copiemysql.sh
Son propriétaire est root
Dans crontab j’ai écrit l’éxecution à 22h pour faire un essai et j’ai écrit : /usr/syno/mysql/bin/copiemysql.sh >> /volume1/web/journalcopiemysql.txt 2>&1
J’ai relancé le serveur cron…
le fichier journal me revoie l’erreur : « bin/bash : /usr/syno/mysql/bin/copiemysql.sh : not found !
Ai-je raté quelque chose ?
http://doc.ubuntu-fr.org/cron
L’exemple ci-dessous exécutera /usr/bin/apt-get update, chaque jour, de chaque mois à 03:05 (le cron fonctionne sur 24 h) avec les droits de l’utilisateur nomdutilisateur.
Ton fichier appartient à root, mais l’utilisateur mysql tenbte de l’exécuter. ->échec.
Je tenterais un « chown mysql copiemysql »
bonne chance !
>Je tenterais un « chown mysql copiemysql »
La console me renvoie l’erreur : chown : unknown user mysql….(je suis en root)
Je me demande si j’ai bien formulé ma requête à cron….faut-il mettre un « sh » devant l’instruction /usr/syno/mysql/bin/copiemysql.sh ?
Autre remarque : je ne connais pas les usages pour les extensions de fichiers. Est-ce que mon petit script soit porter obligatoirement l’extension « sh » et pas « txt » par exemple ?
Merci de votre aide, je pense qu’on est pas loin de la solution.
Bonsoir,
Alors là c’est difficile de trouver une solution, car sauf erreur de ma part personne a syno sur le Forum.
En tous cas moi je ne l’ai pas donc pour vous aider c’est bien compliqué surtout que ce n’est pas un Linux normalisé.
Le seul utilisateur qui a des droits à toute épreuve c’est root.
Moi je testerai le script avec root afin de savoir si tout va bien.
./copiemysql.sh
Pour les extensions en général c’est utile pour connaître le type de fichier, en quelque sort cela n’a pas d’importance surtout dans ce cas précis l’exécution d’un script shell.
Il faut qu’il soit exécutable.
Par contre mettre une extension en .txt pour un script shell c’est pas déontologique.
Avec la commande suivante pour savoir si l’utilisateur et le groupe mysql existe.
cat /etc/passwd | grep mysql
cat /etc/groupe | grep mysql
@+
Retour :
./copiemysql.sh me renvoie, en root, une erreur d’écriture indiquant que le support n’a pas assez d’espace libre….pourtant il y reste plus de 900 Go libre !!!????
J’ai regardé plus près au niveau des bases, dans le repertoire /volume1/@database : le proprio des bases mysql installées est « admin » du group « users ».
Je me suis dit que les difficultés d’écriture sont en fait des problèmes de droits….j’ai changé les droits sur l’ecriture dans le support amovible en accordant la propriété à « admin » (au lieu de root), j’ai également changé l’exécutant de la tache dans /etc/crontab en l’attribuant à « admin » et j’ai relancé le serveur cron.
Ca change rien et tout cela me rend bien perplèxe……..:-(
Je continue les essais….
Bonsoir,
Essayez de modifier le script pour qu’il fasse une copie localement sur le même serveur non sur le disque externe.
Lancer le toujours avec root.
Et si possible pourrait-on voir votre script afin que je puisse voir la syntaxe ?
Merci.
@+
Re :
Voici le script tel que je l’ai copié :
#!/bin/bash
# creation du dossier avec la date du jour en local ou sur un disque amovible.
mkdir /volumeUSB1/usbshare/mysql-date +%Y-%m-%d
# copie du contenu du dossier mysql dans le dossier cree precedemment.
cp -R /volume1/@database/mysql/* /volumeUSB1/usbshare/mysql-date +%Y-%m-%d
Si ce script fonctionne, combien de temps va prendre la copie de tout le repertoire contenant les bases sur mon support externe ?
Merci
Bonsoir,
Ce qu’il serait intéressant de faire c’est d’exécuter les commandes manuellement dans un terminal.
Que dit la commande : mkdir /volumeUSB1/usbshare/mysql-date+%Y-%m-%d
Ensuite que dit la commande en faisant la copie que d’une seule base de données dans votre cas DrTuxTest.
cp -R /volume1/@database/mysql/DrTuxTest/* /volumeUSB1/usbshare/mysql-date+%Y-%m-%d
@ très bientôt…
Merci pour le script, simple et astucieux.
Au faite, il faut mettre date +%Y-%m-%d entre deux back-stick
sinon on on n'aura pas la sortie escomptée.
merci
A+
Hello !
Pour mkdir /volumeUSB1/usbshare/mysql-date+%Y-%m-%d la console me renvoie le prompt..c’est bon signe !
Pour cp -R /volume1/@database/mysql/DrTuxTest/* /volumeUSB1/usbshare/mysql-date+%Y-%m-%d…me renvoie le prompt avec une copie qui s’est effectuée sans message d’erreur…..pas mal ça ! et avec une rapidité bluffante !
Bon grace a toi je tiens le bon bout on dirait…
Je pense que pour la sortie de la copie repertoire je vais spécifier /volumeUSB1/usbshare/DrTuxTest-date+%Y-%m-%d pour la commodité de la presentation…c’est possible ça non ?
Encore merci de ton aide !
Re,
Ouf ! on arrive au bout.
Pour la commodité de la présentation oui évidemment au moins on sait ce qui a dedans.
Pour Faire un journal d’événement tout simple voilà une petite idée :
# journal d’evenement
ls -l /volumeUSB1/usbshare/DrTuxTest-date +%Y-%m-%d
> /volumeUSB1/usbshare/DrTuxTest-date +%Y-%m-%d
/1-journal-DrTuxTest-date +%Y-%m-%d
Eh Oui redouane bien vu : date +%Y-%m-%d
C’est du copier coller après 8H00 boulot et on n’a plus forcément les yeux en face des trous. 😉
@+
Réponse pour redouane :
« Au faite, il faut mettre date +%Y-%m-%d entre deux back-stick sinon on on n’aura pas la sortie escomptée »
C’est quoi ça un back-stick ?
Dans le script les commandes marchent pas…..
Avec le fameux back-machin ??? peut-être…
merci de m’éclairer sur ce point 😉
oui absolument rescue 🙂
Autre méthode pour sauvegarder et restorer une base de donnée:
Ci-dessous la commande pour sauvegarder la base de donnée sous le nom de all-dbs.sql. ( remplacer root, mot-de-passe par les vôtres):
#mysqldump -u root -pmot-de-passe –all-databases > all-dbs.sql
Ci-dessous la commande pour restorer la base de donnée qu’on a sauvegarder plus haut all-dbs.sql:
#mysql -u root -pmot-de-passe < all-dbs.sql
A+
oui le cardiologue, il faut tout simplement mettre date +%Y-%m-%d entre deux back-sticks.
Sur un clavier azerty, les back sticks on les obtiens par la commande AltGr + 7 .
Désolé je ne sais pas pourquoi elle n’apparaisse pas dans cette éditeur et pourtant j’ai appuyer sur AltGr + 7 !!!!
Je ne sais pas comment on les nomment en francais, ce sont des apostrophes mais a l’envers :-), je sais pas si je me suis fait comprendre !!!
A+
Vous devez être connecté pour répondre à ce sujet.