Avant-propos : Tout comme le premier, ce tutorial peut vous mener au déclenchement d'un accident nucléaire. Ma responsabilité ne saurait engagée dans ce cas. Et sinon, je pense bien qu'il est possible d'améliorer ou de corriger ce que je vous raconte. Donc n'hésitez pas :)
Bonjour, bonsoir,
Notre nas est installé, on a fait quelques opérations basiques et l'on va voir maintenant à s'en servir. Je ne sais pas trop comment sera organisé ce tuto car je "rédige" en même temps que j'avance donc on verra~ (Fin ça sera comme le premier x) )
Pensez à lire les liens cités en source, ça explique les lignes des scripts.
Alors sur freenas, on a une fonctionnalité assez sympatique qui nous permet de séparer l'exécution d'application du reste du système : c'est le système de jail. En gros, en créant une jail, vous obtenez un système d'exécution d'application fermé. Ce système ne pourra compromettre le reste du système. On va donc en créer une afin de réaliser une sauvegarde automatique d'un site web. Pour plus d'infos sur les jails, veuillez lire la doc : http://www.freebsd.org/doc/fr_FR.ISO8859...jails.html
Je ne vais plus trop détaillé car ça prend du temps ^^" J'admettrais donc maintenant que vous avez plus d'aisances :)
Note : Le tuto commence à peine et déjà une note ^^ . Au final, j'ai créé préalablement un nouvel ensemble de données sur mon disque principal. Et j'ai alloué qu'une certaine portion de l'espace disque disponible. Cela m'évitera que l'accumulation de sauvegardes ne dépasse un certain quota.
On va commencer par créer notre jail. Vous allez dans le menu "Jails" et si c'est la première fois, vous allez tomber là dessus :
Choisissez votre volume principal pour la jail root et changez les adresses IP (afin de ne pas rencontrer d'autres appareils sur votre réseau).
Maintenant on ajoute une nouvelle jail en cliquant sur "Add jail". Je vais créer une jail de type "pluginjail" afin de pouvoir utiliser l'ensemble des fonctions d'une jail.
Suivant votre connexion ça peut prendre du temps~
Une fois terminé, vous avez votre jail dans le listing.
Nous n'avons pas besoin d'ajouter du stockage dans ce cas car j'ai mis mon disque dur complet en volume principal pour les jails. On a donc suffisament d'espace. Je sais pas si c'est le mieux à faire mais c'est fait :) A vous de voir si vous voulez faire autrement :)
Maintenant que cette jail est debout on va pouvoir l'utiliser afin de lancer les commandes pour récupérer les différents fichiers. Voici quelques sources que j'ai utilisé afin de faire les commandes qui suivront, cette liste n'est clairement pas exhaustive et donc vous pouvez vous documenter ailleurs aussi :)
http://www.shellhacks.com/en/Backup-Site...-with-Wget
http://unix.stackexchange.com/questions/...s-for-wget
http://en.wikipedia.org/wiki/Umask
http://superuser.com/questions/81262/how...ia-crontab
http://alvinalexander.com/mysql/mysql-da...pt-crontab
Sauvegarde d'une base de donnée en passant par l'hébergement : (et même pour la partie suivante, vous pouvez au moins lire ce qui suit).
On va commencer par télécharger des fichiers par ftp. Rendez vous dans l'invite de commande de votre jail (on la sélectionne dans la liste et icône shell en bas).
De là, on a donc accès au terminal shell de la jail, et si on tape la commande (je vous conseille de vous amuser avec un petit dossier et non pas l'ensemble des données) :
Les fichiers contenus dans le dossier mis en commande "chemin-du-dossier" seront téléchargés dans le dossier "/backups/Forum-ftp". Vous pouvez voir tout ça par l'accès ftp si vous voulez.
Vous pouvez aussi voir ça avec les commande "ls" et "cd". Sinon si y'a besoin un "mkdir" pour créer les dossiers.
Un dossier contenant tous les fichiers c'est bien mais un dossier compressé c'est mieux pour les futurs transferts. On peut alors utiliser la commande suivante :
Source :
http://www.commandlinefu.com/commands/vi...n-the-name.
http://www.cyberciti.biz/faq/linux-unix-...r-display/
Et vous verrez alors que la date n'est pas bonne, enfin l'heure plutôt. Dans le shell de la jail si vous tapez
vous verrez alors ce qu'il prend en compte. Dans mon cas "PDT" pour le pacifique. Pour modifier cela facilement, dans la shell vous tapez :
et puis vous suivez les instructions :)
Source : http://askubuntu.com/questions/323131/se...m-terminal
Maintenant avec la même commande que précédemment, vous avez la bonne heure dans le nom de votre dossier compressé.
On a donc les fichiers ftp mais voyons voir à aussi faire la sauvegarde de la base de données. Comme je suis sur un mutualisé chez ovh, on peut suivre la procédure que nous a mis en ligne ovh : https://www.ovh.com/fr/g1394.mutualise_g...de_donnees
Bon bon, après avoir testé différentes façon, le plus simple (et surtout que j'arrive à faire fonctionner ^^) est de réaliser une sauvegarde automatique sur l'hébergement mutualisé. Puis ensuite de récupérer le fichier ainsi créé par wget comme vu précédemment. J'ai donc créé le fichier php suivant dans un dossier de mon hébergement :
Source :
http://www.tutorialspoint.com/php/perfor...up_php.htm
http://php.net/manual/en/tutorial.firstpage.php
Vous pouvez alors visiter l'url de votre fichier :
Lorsque vous visitez cette url, cela lance le code php que vous avez mis dedans. Ainsi, cela exécute votre téléchargement et vous pourrez alors récupérer votre fichier de sauvegarde sql à l'endroit spécifié. J'ai rapidement regardé et on dirait que cela écrase automatiquement l'ancien fichier si on relance le script à nouveau. Nous ne stockerons donc pas d'ancienne sauvegarde de la base de données sur l'hébergement.
Afin d'obtenir une nouvelle sauvegarde régulièrement, il faut mettre en place l'exécution d'une tâche automatique. J'ai tenté de faire cette tâche via mon hébergement. Cela n'a pas fonctionné, on va donc utiliser un cron du nas pour exécuter cela quand on veut. Et pour cela on va encore utiliser la commande wget :
Source:
http://stackoverflow.com/questions/57667...ronjob-php
http://forum.ovh.com/showthread.php?7111...%E9matique
On passe tout de suite à la mise en place de son exécution automatique alors on va créer le fichier suivant :
Info au passage : Je m'étais mis une note note comme quoi il fallait des permissions ftp pour l'utilisateur de la jail.
On stocke ce fichier dans un dossier de la jail sur le nas. Et on va maintenant lancer l'exécution de ce fichier automatiquement via un cron job. Panneau latéral --> Add Cron job et hop :
On va utiliser la commande suivante :
Bien se mettre en root pour l'utilisateur sinon l'on aura pas la permission. Je n'ai d'ailleurs pas résolu ce soucis. Pourquoi ne peut on pas lancer un script dans la jail avec l'utilisateur de la jail ?
On voit que cela fonctionne c'est super mais par contre je n'aime pas vraiment laisser traîner un document contenant des identifiants autre part que dans mon chez moi :) On va donc voir à retirer tout ça et envoyer les paramètres de connexion depuis le script bash que l'on a réalisé.
Pour cela j'utilise du get et je rajoute au passage un ti paramètre :
Source :
http://html.net/tutorials/php/lesson10.php
http://askubuntu.com/questions/47400/how...direct-web
http://stackoverflow.com/questions/44480...-mysqldump
http://www.net24.co.nz/kb/article/AA-002...h-PHP.html
Le script php sur votre hébergement devient donc :
Et le script pour votre nas est :
Maintenant on va voir à récupérer ce fichier et faire un archivage au grés du temps. Ce que je voudrais c'est une sauvegarde journalière des deux dernières semaines puis un hebdomadaire sur 3 mois et ensuite du mensuel.
Commençons par récupérer le fichier, il nous suffit d'ajouter un autre wget avec le fichier généré juste avant comme destination :
Source :
http://yftian.blogspot.fr/2008/08/how-to...-when.html
Avec le script précédent, on pourrait donc le lancer en cron job sur le nas pour le faire s'exécuter certains jours afin de récupérer une sauvegarde chaque mardi par exemple. Mais ce que je veux moi c'est avoir une sauvegarde chaque jour sur les deux dernières semaines puis une sauvegarde chaque semaine sur trois mois et enfin une sauvegarde mensuel en archivage longue durée.
Ce que je vais faire c'est répartir les fichiers compressés dans différents dossiers selon sa catégorie d'archivage et il nous suffira de mettre des lignes en plus pour supprimer les anciens fichiers dans les dossiers de sauvegarde "courte durée".
Un peu de lecture au préalable :
http://tldp.org/LDP/abs/html/comparison-ops.html
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-6.html
http://stackoverflow.com/questions/16034...ent-issues
http://stackoverflow.com/questions/11267...-statement
Pour les repères horaires : http://www.cyberciti.biz/faq/linux-unix-...r-display/
Mais voyons déjà le script avec les différents dossiers selon le jour :
Ici basé sur des minutes pour vois si ça fonctionne.
Pour les jours cela donne ceci :
Expliquons un petit peu :
On stocke dans la variable HOUR le numéro du jour dans le mois puis en fonction de ce numéro on va répartir cela dans les dossiers.
Le premier de chaque mois on dirigera cela dans la sauvegarde longue durée, puis les 2, 8, 15, 22 et 28 on aura les sauvegardes sur les trois derniers mois et tous les autres jours seront des sauvegardes roulantes sur deux semaines.
Vous pouvez noter l'utilisation d'un dossier tampon que j'utilise avant de copier le fichier en mode compressé dans le bon dossier de sauvegardes.
Avec ce script on accumule donc dans les dossiers Jours et Semaines, il nous faut supprimer les fichiers plus vieux de deux semaines dans le premier dossier et ceux plus vieux que trois mois pour le suivant.
Source :
http://www.linuxquestions.org/questions/...ys-462290/
http://linux.die.net/man/1/find
Il faut ajouter ceci :
Toujours sur une base minute d'abord pour voir si ça fonctionne bien :
Et maintenant basé sur les jours :
Ce qui donne au final pour les jours :
Voilà, vous savez comment télécharger et avoir une certaine organisation des sauvegardes. Il peut être intéressant de ne pas laisser traîner de sauvegarde sur votre hébergement. On sait jamais, tout en local c'est mieux :)
On peut donc rajouter les quelques lignes suivantes afin de supprimer le fichier préalablement créé sur votre hébergement ovh concernant la sauvegarde sql.
Sources : http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.c...ode31.html
http://www.cyberciti.biz/tips/linux-mult...ation.html
D'autres trucs :
http://linux.about.com/od/commands/l/blcmdl1_sftp.htm
http://www.unix.com/shell-programming-an...cript.html
http://askleo.com/how_can_i_automate_an_...o_servers/
http://serverfault.com/questions/273967/...command-li
Des trucs en plus :
http://guides.ovh.net/SVNMutu
http://guides.ovh.net/SshMutualise
http://forum.ovh.com/showthread.php?53846-Subversion
J'en ai quand même un peu chier à y faire fonctionner, toujours des erreurs à droites à gauche. Et vous pouvez jongler entre le ssh via votre ordi (putty par exemple) et le ssh via le shell de votre jail. Alors on va créer des clefs rsa pour pouvoir les échanger avec l'hébergement auquel on veut se connecter en ssh sans que l'on doive renseigner le mot de passe comme vous avez en ce moment :
Via la console shell de la jail essayez :
On commence donc la génération. Sur votre jail vois tapez :
Laissez le chemin de fichier et ne rentrez pas de passphrase ! Sinon pour le chemin de fichier vous faudra renseigner des chemins différents en potions plus tard et pour l'autre ça ne fonctionnera pas comme on veut :)
Une fois la clef créée, on va copier la clef publique sur notre hébergement, pour cela :
Note : vérifiez "/root/.ssh/id_rsa.pub" le chemin du fichier avec ce qui vous a été indiqué durant la création de la clef.
Et là ça devrait fonctionner pitêtre ^^"
Plus besoin de mot de passe.
Donc ce que l'on voulait faire c'était lancer la suppression automatique du fichier de sauvegarde de la bdd sur l'hébergement du forum afin de ne pas la laisser traîner. Depuis la shell de votre jail vous pouvez faire ainsi :
Cela effacera les fichiers ayant l'extension sql dans le dossier spécifié. Pour utiliser cela dans votre script bash il faudra par contre délimiter les commandes qui doivent être envoyer par ssh :
Et donc ajouté au code précédent, cela donne :
Voilà, maintenant que ce script est sur le nas il va falloir lui mettre en place son excécution automatique.
Personellement, j'ai ajouté un dossier home dans le système de fichier principal de la jail (pas warden truc). Et c'est dans ce dossier que j'ai mes différents petits trucs : un dossier pour les scripts, les dossiers spécifiques aux sauvegardes, etc...
Pour le lancement automatique de tâches sur le nas il faut aller dans le pannel de gauche : "System" > "Cron Jobs" > "Add Cron Job".
Vous remplissez donc les champs encadrés,
User : "root", sinon les droits ne sont pas bon, il doit bien y avoir moyen de configurer notre utilisateur mais pas encore trouvé :)
Command : pour lancer un script dispo sur la jail :
il s'agit bien sûr de celui qu'on a fait juste avant hein...
Short description : ce que vous voulez
Puis ensuite mettez les dates d'exécution que vous voulez, dans mon cas je dois mettre un exécution par jour.
Vous validez la création de ce cron (en vérifiant qu'il est bien coché qu'il doit s'exécuté) et voilà o/
Je récapitule ce que l'on a donc fait ^^
- un script php est stocké sur l'hébergement
- un script sh sur le nas se lance automatiquement
- l'envoie de paramètres au script php génère la sauvegarde de la bdd sur l'hébergement
- on récupère cette sauvegarde sur le nas dans un dossier "tampon"
- suivant la date du jour une compression de cette sauvegarde est envoyée dans un dossier spécifique
- on supprime les anciennes sauvegardes du nas que l'on ne veut plus
- on supprime la sauvegarde sql que l'on a eu sur l'hébergement
Voilà voilà, maintenant pour la sauvegarde des fichiers qui sont sur le ftp c'est avec les même commandes, à vous de voir comment vous voulez faire, un nouveau script ou ajouter à celui là. Par contre n'ajoutez pas l'option de suppression ^^ Téléchargez juste tous les fichiers et vous en faîtes une archive :) Tout cela basé sur la date qu'il sera.
Je pense que ce tuto s'achève donc ici. Je le relirais rapidos et j'espère que je n'aurais pas laissé de petite bourde ^^ Hmmm je suis en train de me dire que j'éditerais peut-être ce post pour rajouter le téléchargement d'une sauvegarde sql via mysqldump (ou pas hein, mais vous saurez que ça existe ^^).
Bonjour, bonsoir,
Notre nas est installé, on a fait quelques opérations basiques et l'on va voir maintenant à s'en servir. Je ne sais pas trop comment sera organisé ce tuto car je "rédige" en même temps que j'avance donc on verra~ (Fin ça sera comme le premier x) )
Pensez à lire les liens cités en source, ça explique les lignes des scripts.
Alors sur freenas, on a une fonctionnalité assez sympatique qui nous permet de séparer l'exécution d'application du reste du système : c'est le système de jail. En gros, en créant une jail, vous obtenez un système d'exécution d'application fermé. Ce système ne pourra compromettre le reste du système. On va donc en créer une afin de réaliser une sauvegarde automatique d'un site web. Pour plus d'infos sur les jails, veuillez lire la doc : http://www.freebsd.org/doc/fr_FR.ISO8859...jails.html
Je ne vais plus trop détaillé car ça prend du temps ^^" J'admettrais donc maintenant que vous avez plus d'aisances :)
Note : Le tuto commence à peine et déjà une note ^^ . Au final, j'ai créé préalablement un nouvel ensemble de données sur mon disque principal. Et j'ai alloué qu'une certaine portion de l'espace disque disponible. Cela m'évitera que l'accumulation de sauvegardes ne dépasse un certain quota.
On va commencer par créer notre jail. Vous allez dans le menu "Jails" et si c'est la première fois, vous allez tomber là dessus :
Choisissez votre volume principal pour la jail root et changez les adresses IP (afin de ne pas rencontrer d'autres appareils sur votre réseau).
Maintenant on ajoute une nouvelle jail en cliquant sur "Add jail". Je vais créer une jail de type "pluginjail" afin de pouvoir utiliser l'ensemble des fonctions d'une jail.
Suivant votre connexion ça peut prendre du temps~
Une fois terminé, vous avez votre jail dans le listing.
Nous n'avons pas besoin d'ajouter du stockage dans ce cas car j'ai mis mon disque dur complet en volume principal pour les jails. On a donc suffisament d'espace. Je sais pas si c'est le mieux à faire mais c'est fait :) A vous de voir si vous voulez faire autrement :)
Maintenant que cette jail est debout on va pouvoir l'utiliser afin de lancer les commandes pour récupérer les différents fichiers. Voici quelques sources que j'ai utilisé afin de faire les commandes qui suivront, cette liste n'est clairement pas exhaustive et donc vous pouvez vous documenter ailleurs aussi :)
http://www.shellhacks.com/en/Backup-Site...-with-Wget
http://unix.stackexchange.com/questions/...s-for-wget
http://en.wikipedia.org/wiki/Umask
http://superuser.com/questions/81262/how...ia-crontab
http://alvinalexander.com/mysql/mysql-da...pt-crontab
Sauvegarde d'une base de donnée en passant par l'hébergement : (et même pour la partie suivante, vous pouvez au moins lire ce qui suit).
On va commencer par télécharger des fichiers par ftp. Rendez vous dans l'invite de commande de votre jail (on la sélectionne dans la liste et icône shell en bas).
De là, on a donc accès au terminal shell de la jail, et si on tape la commande (je vous conseille de vous amuser avec un petit dossier et non pas l'ensemble des données) :
Code :
wget -r -l 0 -nH -np -P /backups/Forum-ftp --cut-dirs=2 ftp://login:mot-de-passe@ftp.chemin-du-dossier
Les fichiers contenus dans le dossier mis en commande "chemin-du-dossier" seront téléchargés dans le dossier "/backups/Forum-ftp". Vous pouvez voir tout ça par l'accès ftp si vous voulez.
Vous pouvez aussi voir ça avec les commande "ls" et "cd". Sinon si y'a besoin un "mkdir" pour créer les dossiers.
Un dossier contenant tous les fichiers c'est bien mais un dossier compressé c'est mieux pour les futurs transferts. On peut alors utiliser la commande suivante :
Code :
tar -cvzf /backups/Forum-ftp-`date +%F_-_%HH%M`.tar.gz /backups/Forum-ftp
Source :
http://www.commandlinefu.com/commands/vi...n-the-name.
http://www.cyberciti.biz/faq/linux-unix-...r-display/
Et vous verrez alors que la date n'est pas bonne, enfin l'heure plutôt. Dans le shell de la jail si vous tapez
Code :
date
Code :
sudo dpkg-reconfigure tzdata
Source : http://askubuntu.com/questions/323131/se...m-terminal
Maintenant avec la même commande que précédemment, vous avez la bonne heure dans le nom de votre dossier compressé.
On a donc les fichiers ftp mais voyons voir à aussi faire la sauvegarde de la base de données. Comme je suis sur un mutualisé chez ovh, on peut suivre la procédure que nous a mis en ligne ovh : https://www.ovh.com/fr/g1394.mutualise_g...de_donnees
Bon bon, après avoir testé différentes façon, le plus simple (et surtout que j'arrive à faire fonctionner ^^) est de réaliser une sauvegarde automatique sur l'hébergement mutualisé. Puis ensuite de récupérer le fichier ainsi créé par wget comme vu précédemment. J'ai donc créé le fichier php suivant dans un dossier de mon hébergement :
Code :
<html>
<head>
<title>bicki fofo</title>
</head>
<body>
<?php system("mysqldump --host=serveur_sql --user=nom_utilisateur_connexion_sql --password=mot-de-passe_connexion_sql nom_table_sql > ../chemin/du_fichier_sauvegarde.sql"); ?>
<h2>Est-ce que ça fonctionne ?</h2>
</body>
</html>
Source :
http://www.tutorialspoint.com/php/perfor...up_php.htm
http://php.net/manual/en/tutorial.firstpage.php
Vous pouvez alors visiter l'url de votre fichier :
Code :
www.url.ndm/chemin/fichier_php.php
Afin d'obtenir une nouvelle sauvegarde régulièrement, il faut mettre en place l'exécution d'une tâche automatique. J'ai tenté de faire cette tâche via mon hébergement. Cela n'a pas fonctionné, on va donc utiliser un cron du nas pour exécuter cela quand on veut. Et pour cela on va encore utiliser la commande wget :
Code :
wget -Utest --spider www.url.ndm/chemin/fichier_php.php
http://stackoverflow.com/questions/57667...ronjob-php
http://forum.ovh.com/showthread.php?7111...%E9matique
On passe tout de suite à la mise en place de son exécution automatique alors on va créer le fichier suivant :
Code :
#!/usr/bin/bash
#
wget -Utest --spider www.url.ndm/chemin/fichier_php.php
Info au passage : Je m'étais mis une note note comme quoi il fallait des permissions ftp pour l'utilisateur de la jail.
On stocke ce fichier dans un dossier de la jail sur le nas. Et on va maintenant lancer l'exécution de ce fichier automatiquement via un cron job. Panneau latéral --> Add Cron job et hop :
On va utiliser la commande suivante :
Code :
jexec nom_jail sh /chemin/du/script.sh
Bien se mettre en root pour l'utilisateur sinon l'on aura pas la permission. Je n'ai d'ailleurs pas résolu ce soucis. Pourquoi ne peut on pas lancer un script dans la jail avec l'utilisateur de la jail ?
On voit que cela fonctionne c'est super mais par contre je n'aime pas vraiment laisser traîner un document contenant des identifiants autre part que dans mon chez moi :) On va donc voir à retirer tout ça et envoyer les paramètres de connexion depuis le script bash que l'on a réalisé.
Pour cela j'utilise du get et je rajoute au passage un ti paramètre :
Source :
http://html.net/tutorials/php/lesson10.php
http://askubuntu.com/questions/47400/how...direct-web
http://stackoverflow.com/questions/44480...-mysqldump
http://www.net24.co.nz/kb/article/AA-002...h-PHP.html
Le script php sur votre hébergement devient donc :
Code :
<html>
<head>
<title>Sauvegarde php</title>
</head>
<body>
<?php
set_time_limit(600);
$cmd="mysqldump --host=" . $_GET["serv"] . " --user=" . $_GET["user"] . " --password=" . $_GET["mdp"] . " " . $_GET["table"] . " > " . $_GET["path"] . " ";
system($cmd);
echo "<h1>C'est tout bon !</h1>"; ?>
</body>
</html>
Et le script pour votre nas est :
Code :
#!/usr/bin/bash
#
wget -Utest --spider "www.url.ndm/chemin/fichier_php.php?serv=serveur_sql&user=nom_utilisateur_connexion_sql&mdp=mot-de-passe_connexion_sql&table=nom_table_sql&path=../chemin/du_fichier_sauvegarde.sql"
Maintenant on va voir à récupérer ce fichier et faire un archivage au grés du temps. Ce que je voudrais c'est une sauvegarde journalière des deux dernières semaines puis un hebdomadaire sur 3 mois et ensuite du mensuel.
Commençons par récupérer le fichier, il nous suffit d'ajouter un autre wget avec le fichier généré juste avant comme destination :
Source :
http://yftian.blogspot.fr/2008/08/how-to...-when.html
Code :
#!/usr/bin/bash
#
wget -Utest --spider "www.url.ndm/chemin/fichier_php.php?cmd=mysqldump --host=serveur_sql --user=nom_utilisateur_connexion_sql --password=mot-de-passe_connexion_sql nom_table_sql > ../chemin/du_fichier_sauvegarde.sql"
wget -N -P /backups/Forum-bdd ftp://login:mot-de-passe@ftp.chemin-du-dossier
tar -cvzf old_backups/BDD_backup/site-backup-$(.date +%Y%m%d-%H%M%S).tar.gz /backups/Forum-bdd/fichier_sauvegarde.sql
Avec le script précédent, on pourrait donc le lancer en cron job sur le nas pour le faire s'exécuter certains jours afin de récupérer une sauvegarde chaque mardi par exemple. Mais ce que je veux moi c'est avoir une sauvegarde chaque jour sur les deux dernières semaines puis une sauvegarde chaque semaine sur trois mois et enfin une sauvegarde mensuel en archivage longue durée.
Ce que je vais faire c'est répartir les fichiers compressés dans différents dossiers selon sa catégorie d'archivage et il nous suffira de mettre des lignes en plus pour supprimer les anciens fichiers dans les dossiers de sauvegarde "courte durée".
Un peu de lecture au préalable :
http://tldp.org/LDP/abs/html/comparison-ops.html
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-6.html
http://stackoverflow.com/questions/16034...ent-issues
http://stackoverflow.com/questions/11267...-statement
Pour les repères horaires : http://www.cyberciti.biz/faq/linux-unix-...r-display/
Mais voyons déjà le script avec les différents dossiers selon le jour :
Ici basé sur des minutes pour vois si ça fonctionne.
Spoiler :
Code :
#!/usr/bin/bash
#
DAY=`date +%d`
wget -Utest --spider "www.url.ndm/chemin/fichier_php.php?cmd=mysqldump --host=serveur_sql --user=nom_utilisateur_connexion_sql --password=mot-de-passe_connexion_sql nom_table_sql > ../chemin/du_fichier_sauvegarde.sql"
wget -N -P /backups/Forum-bdd/Tampon ftp://login:mot-de-passe@ftp.chemin-du-dossier/fichier-sql.sql
if [ $DAY -eq 03 -o $DAY -eq 04 -o $DAY -eq 05 -o $DAY -eq 06 -o $DAY -eq 07 -o $DAY -eq 09 -o $DAY -eq 10 -o $DAY -eq 11 -o $DAY -eq 12 -o $DAY -eq 13 -o $DAY -eq 14 -o $DAY -eq 16 -o $DAY -eq 17 -o $DAY -eq 18 -o $DAY -eq 19 -o $DAY -eq 20 -o $DAY -eq 21 -o $DAY -eq 23 -o $DAY -eq 24 -o $DAY -eq 25 -o $DAY -eq 26 -o $DAY -eq 27 -o $DAY -eq 29 -o $DAY -eq 30 -o $DAY -eq 31 -o ];
then
tar -cvzf backups/Forum-bdd/Jours/Forum_bdd-`date +%F_-_%HH%M`.tar.gz /backups/Forum-bdd/Tampon/Forum_bdd.sql
elif [ $DAY -eq 02 -o $DAY -eq 08 -o $DAY -eq 15 -o $DAY -eq 22 -o $DAY -eq 28 ];
then
tar -cvzf backups/Forum-bdd/Semaines/Forum_bdd-`date +%F_-_%HH%M`.tar.gz /backups/Forum-bdd/Tampon/Forum_bdd.sql
else
tar -cvzf backups/Forum-bdd/Mois/Forum_bdd-`date +%F_-_%HH%M`.tar.gz /backups/Forum-bdd/Tampon/Forum_bdd.sql
fi
Expliquons un petit peu :
On stocke dans la variable HOUR le numéro du jour dans le mois puis en fonction de ce numéro on va répartir cela dans les dossiers.
Le premier de chaque mois on dirigera cela dans la sauvegarde longue durée, puis les 2, 8, 15, 22 et 28 on aura les sauvegardes sur les trois derniers mois et tous les autres jours seront des sauvegardes roulantes sur deux semaines.
Vous pouvez noter l'utilisation d'un dossier tampon que j'utilise avant de copier le fichier en mode compressé dans le bon dossier de sauvegardes.
Avec ce script on accumule donc dans les dossiers Jours et Semaines, il nous faut supprimer les fichiers plus vieux de deux semaines dans le premier dossier et ceux plus vieux que trois mois pour le suivant.
Source :
http://www.linuxquestions.org/questions/...ys-462290/
http://linux.die.net/man/1/find
Il faut ajouter ceci :
Toujours sur une base minute d'abord pour voir si ça fonctionne bien :
Spoiler :
Code :
find backups/Forum-bdd/Jours -type f -mtime +14 -exec rm {} \;
find backups/Forum-bdd/Semaines -type f -mtime +92 -exec rm {} \;
Ce qui donne au final pour les jours :
Code :
#!/usr/bin/bash
#
DAY=`date +%d`
wget -Utest --spider "www.url.ndm/chemin/fichier_php.php?cmd=mysqldump --host=serveur_sql --user=nom_utilisateur_connexion_sql --password=mot-de-passe_connexion_sql nom_table_sql > ../chemin/du_fichier_sauvegarde.sql"
wget -N -P /backups/Forum-bdd/Tampon ftp://login:mot-de-passe@ftp.chemin-du-dossier/fichier-sql.sql
if [ $DAY -eq 03 -o $DAY -eq 04 -o $DAY -eq 05 -o $DAY -eq 06 -o $DAY -eq 07 -o $DAY -eq 09 -o $DAY -eq 10 -o $DAY -eq 11 -o $DAY -eq 12 -o $DAY -eq 13 -o $DAY -eq 14 -o $DAY -eq 16 -o $DAY -eq 17 -o $DAY -eq 18 -o $DAY -eq 19 -o $DAY -eq 20 -o $DAY -eq 21 -o $DAY -eq 23 -o $DAY -eq 24 -o $DAY -eq 25 -o $DAY -eq 26 -o $DAY -eq 27 -o $DAY -eq 29 -o $DAY -eq 30 -o $DAY -eq 31 -o ];
then
tar -cvzf backups/Forum-bdd/Jours/Forum_bdd-`date +%F_-_%HH%M`.tar.gz /backups/Forum-bdd/Tampon/Forum_bdd.sql
elif [ $DAY -eq 02 -o $DAY -eq 08 -o $DAY -eq 15 -o $DAY -eq 22 -o $DAY -eq 28 ];
then
tar -cvzf backups/Forum-bdd/Semaines/Forum_bdd-`date +%F_-_%HH%M`.tar.gz /backups/Forum-bdd/Tampon/Forum_bdd.sql
else
tar -cvzf backups/Forum-bdd/Mois/Forum_bdd-`date +%F_-_%HH%M`.tar.gz /backups/Forum-bdd/Tampon/Forum_bdd.sql
fi
find backups/Forum-bdd/Jours -type f -mtime +14 -exec rm {} \;
find backups/Forum-bdd/Semaines -type f -mtime +92 -exec rm {} \;
Voilà, vous savez comment télécharger et avoir une certaine organisation des sauvegardes. Il peut être intéressant de ne pas laisser traîner de sauvegarde sur votre hébergement. On sait jamais, tout en local c'est mieux :)
On peut donc rajouter les quelques lignes suivantes afin de supprimer le fichier préalablement créé sur votre hébergement ovh concernant la sauvegarde sql.
Sources : http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.c...ode31.html
http://www.cyberciti.biz/tips/linux-mult...ation.html
D'autres trucs :
http://linux.about.com/od/commands/l/blcmdl1_sftp.htm
http://www.unix.com/shell-programming-an...cript.html
http://askleo.com/how_can_i_automate_an_...o_servers/
http://serverfault.com/questions/273967/...command-li
Des trucs en plus :
http://guides.ovh.net/SVNMutu
http://guides.ovh.net/SshMutualise
http://forum.ovh.com/showthread.php?53846-Subversion
J'en ai quand même un peu chier à y faire fonctionner, toujours des erreurs à droites à gauche. Et vous pouvez jongler entre le ssh via votre ordi (putty par exemple) et le ssh via le shell de votre jail. Alors on va créer des clefs rsa pour pouvoir les échanger avec l'hébergement auquel on veut se connecter en ssh sans que l'on doive renseigner le mot de passe comme vous avez en ce moment :
Via la console shell de la jail essayez :
Code :
ssh user@remote.server.com
On commence donc la génération. Sur votre jail vois tapez :
Code :
ssh-keygen -t rsa
Une fois la clef créée, on va copier la clef publique sur notre hébergement, pour cela :
Code :
scp /root/.ssh/id_rsa.pub user@remote.server.com:.ssh/authorized_keys
Et là ça devrait fonctionner pitêtre ^^"
Code :
ssh user@remote.server.com
Plus besoin de mot de passe.
Donc ce que l'on voulait faire c'était lancer la suppression automatique du fichier de sauvegarde de la bdd sur l'hébergement du forum afin de ne pas la laisser traîner. Depuis la shell de votre jail vous pouvez faire ainsi :
Code :
sftp user@remote.server.com
cd ../chemin/du_fichier_sauvegarde.sql
rm *.sql
exit
Cela effacera les fichiers ayant l'extension sql dans le dossier spécifié. Pour utiliser cela dans votre script bash il faudra par contre délimiter les commandes qui doivent être envoyer par ssh :
Code :
sftp user@remote.server.com
cd ../chemin/du_fichier_sauvegarde.sql <<SOMEDELIMITER
rm *.sql
exit
SOMEDELIMITER
Et donc ajouté au code précédent, cela donne :
Code :
#!/usr/bin/bash
#
DAY=`date +%d`
wget -Utest --spider "www.url.ndm/chemin/fichier_php.php?cmd=mysqldump --host=serveur_sql --user=nom_utilisateur_connexion_sql --password=mot-de-passe_connexion_sql nom_table_sql > ../chemin/du_fichier_sauvegarde.sql"
wget -N -P /backups/Forum-bdd/Tampon ftp://login:mot-de-passe@ftp.chemin-du-dossier/fichier-sql.sql
if [ $DAY -eq 03 -o $DAY -eq 04 -o $DAY -eq 05 -o $DAY -eq 06 -o $DAY -eq 07 -o $DAY -eq 09 -o $DAY -eq 10 -o $DAY -eq 11 -o $DAY -eq 12 -o $DAY -eq 13 -o $DAY -eq 14 -o $DAY -eq 16 -o $DAY -eq 17 -o $DAY -eq 18 -o $DAY -eq 19 -o $DAY -eq 20 -o $DAY -eq 21 -o $DAY -eq 23 -o $DAY -eq 24 -o $DAY -eq 25 -o $DAY -eq 26 -o $DAY -eq 27 -o $DAY -eq 29 -o $DAY -eq 30 -o $DAY -eq 31 -o ];
then
tar -cvzf backups/Forum-bdd/Jours/Forum_bdd-`date +%F_-_%HH%M`.tar.gz /backups/Forum-bdd/Tampon/Forum_bdd.sql
elif [ $DAY -eq 02 -o $DAY -eq 08 -o $DAY -eq 15 -o $DAY -eq 22 -o $DAY -eq 28 ];
then
tar -cvzf backups/Forum-bdd/Semaines/Forum_bdd-`date +%F_-_%HH%M`.tar.gz /backups/Forum-bdd/Tampon/Forum_bdd.sql
else
tar -cvzf backups/Forum-bdd/Mois/Forum_bdd-`date +%F_-_%HH%M`.tar.gz /backups/Forum-bdd/Tampon/Forum_bdd.sql
fi
find backups/Forum-bdd/Jours -type f -mtime +14 -exec rm {} \;
find backups/Forum-bdd/Semaines -type f -mtime +92 -exec rm {} \;
sftp user@remote.server.com
cd ../chemin/du_fichier_sauvegarde.sql <<SOMEDELIMITER
rm *.sql
exit
SOMEDELIMITER
Voilà, maintenant que ce script est sur le nas il va falloir lui mettre en place son excécution automatique.
Personellement, j'ai ajouté un dossier home dans le système de fichier principal de la jail (pas warden truc). Et c'est dans ce dossier que j'ai mes différents petits trucs : un dossier pour les scripts, les dossiers spécifiques aux sauvegardes, etc...
Pour le lancement automatique de tâches sur le nas il faut aller dans le pannel de gauche : "System" > "Cron Jobs" > "Add Cron Job".
Vous remplissez donc les champs encadrés,
User : "root", sinon les droits ne sont pas bon, il doit bien y avoir moyen de configurer notre utilisateur mais pas encore trouvé :)
Command : pour lancer un script dispo sur la jail :
Code :
jexec backup-sys sh /chemin/du/fichier.sh
Short description : ce que vous voulez
Puis ensuite mettez les dates d'exécution que vous voulez, dans mon cas je dois mettre un exécution par jour.
Vous validez la création de ce cron (en vérifiant qu'il est bien coché qu'il doit s'exécuté) et voilà o/
Je récapitule ce que l'on a donc fait ^^
- un script php est stocké sur l'hébergement
- un script sh sur le nas se lance automatiquement
- l'envoie de paramètres au script php génère la sauvegarde de la bdd sur l'hébergement
- on récupère cette sauvegarde sur le nas dans un dossier "tampon"
- suivant la date du jour une compression de cette sauvegarde est envoyée dans un dossier spécifique
- on supprime les anciennes sauvegardes du nas que l'on ne veut plus
- on supprime la sauvegarde sql que l'on a eu sur l'hébergement
Voilà voilà, maintenant pour la sauvegarde des fichiers qui sont sur le ftp c'est avec les même commandes, à vous de voir comment vous voulez faire, un nouveau script ou ajouter à celui là. Par contre n'ajoutez pas l'option de suppression ^^ Téléchargez juste tous les fichiers et vous en faîtes une archive :) Tout cela basé sur la date qu'il sera.
Je pense que ce tuto s'achève donc ici. Je le relirais rapidos et j'espère que je n'aurais pas laissé de petite bourde ^^ Hmmm je suis en train de me dire que j'éditerais peut-être ce post pour rajouter le téléchargement d'une sauvegarde sql via mysqldump (ou pas hein, mais vous saurez que ça existe ^^).