We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

[TUTO]Sauvegarde des données d'un KS


BBR
26/05/2014, 20h50
Edit2: j'aurais du lire, tout simplement il faut aussi installer rsync sur le VPS A ajouter peut-être ?
bien vu, je vais ajouter
donc sur le vps faire un
Code:
apt-get install rsync
on peut aussi utiliser scp qui lui doit surement être installé d'office

BBR
26/05/2014, 14h56
Un dernier petit ajout histoire de sécuriser ce vps contenant vos précieuses sauvegardes
Pourquoi ajouter cela puisque ce serveur n'a pas d'accès au web ? Faites un
Code:
cat /var/log/auth.log
histoire de vous convaincre que même sans rien dessus vous trouverez des tentatives d'intrusion, certains robots scannent tout en permanence
Code:
iptables -L -v
nous montre que le serveur est ouvert de partout
on va donc faire quelques règles pour changer ça
Code:
nano /etc/init.d/firewall
on va n'autoriser que le port 22 puisque ce serveur ne servira qu'à nos sauvegardes faites en ssh:
Code:
#!/bin/sh
### BEGIN INIT INFO
# Provides: firewall
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:   2 3 4 5
# Default-Stop:       0 1 6
# Short-description:  firewall
# Description:       firewall
### END INIT INFO
# On autorise les connexions deja etablies
/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# on autorise le ssh
/sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

# on bloque tout le reste
/sbin/iptables -A INPUT -i eth0 -j DROP
On rend le fichier exécutable
Code:
chmod +x firewall
puis on le lance
Code:
/etc/init.d/firewall start
si tout est ok on l'ajoute au reboot
Code:
update-rc.d firewall defaults
Pour le retirer si besoin :
Code:
update-rc.d -f firewall remove
on installe une connexion par clé si ce n'est pas déjà fait pour nos connexions sur ce vps (voir ici )

on vérifie que cela fonctionne bien, si c'est ok on désactive la connexion root par mot de passe
Code:
nano /etc/ssh/sshd_config
et on commente cette ligne :
Code:
# PermitRootLogin yes
et on rajoute celle-ci :
Code:
PermitRootLogin without-password
puis on relance
Code:
service ssh restart
Résumé :
- tout est fermé sauf le port SSH
- on ne peut se connecter que par clé SSH

BBR
26/05/2014, 10h51
Petite précision : seuls les fichiers correspondant à date - x jours (7 dans l'exemple) seront effacés, s'il y a des fichiers plus anciens, ils resteront, il faut faire le ménage avant de mettre ça en place, ensuite comme ce sera lancé chaque jour, il ne restera toujours que les x derniers jours (6 dans notre exemple).
Et bien sûr, cet exemple est valable si comme moi, vos fichiers ont la date en début de nom en format AAAA-MM-JJ (2014-05-26), sinon il faut adapter le code.

BBR
25/05/2014, 18h03
Petit ajout pour que les fichiers sur le VPS soient effacés de façon régulière et automatique, j'ai mis 7 jours, à vous de mettre le nombre qui vous convient

SUR LE VPS

on crée le fichier :
Code:
nano /home/sauvegardes_ks/effacement_sauvegardes.sh
avec ce contenu
Code:
#!/bin/bash

# Format de la date, ce qui donne 2014-05-25
format_date='%Y-%m-%d'

# on se met dans le bon repertoire
cd /home/sauvegardes_ks

# Variable de la date du jour
date=`date +${format_date}`;

# Le nombre de jours que vous souhaitez archiver
nbjours="7";

# Fichiers qui seront effaces car leur nom commence par la date selon le nombre de jours que vous archivez
deldate=`date --date "-${nbjours} days" +${format_date}`;

echo "liste des fichiers du vps de plus de ${nbjours} jours : ${deldate} qui seront deletes" ;
ls -l ${deldate}*.*

# si cet affichage de test est ok, retirez le # de la ligne suivante pour effacer les fichiers
# rm ${deldate}*.*
echo "Liste des fichiers restant apres effacement de ceux vieux de ${nbjours} ";
ls -l
on enregistre, on quitte l'éditeur et on rend ce fichier exécutable
Code:
chmod +x /home/sauvegardes_ks/effacement_sauvegardes.sh
il restera à le mettre en cron pour qu'il s'exécute automatiquement, sur l'exemple : chaque jour à 4h30
Code:
crontab -e
Code:
30 4 * * * sh /home/sauvegardes_ks/effacement_sauvegardes.sh > /dev/null 2>&1

BBR
24/05/2014, 16h39
Depuis 2014 les KS ne disposent plus d'un espace de backup, et on voit régulièrement des posts concernant un disque qui a lâché et bien sûr pas de sauvegarde externe au serveur, donc tout est perdu.
Si les données ne sont pas importantes (genre vos nombreux films de vacances de 2 To . ) ce n'est pas bien grave mais s'il s'agit de vos sites certes non pros mais importants à vos yeux il faut mettre en place un système automatisé de sauvegardes qui vous sauvera la vie le jour J, 2 euros par mois c'est rien et c'est énorme pour la tranquillité d'esprit que cela vos apportera.

Voilà une alternative pas chère et simple à mettre en oeuvre, le VPS Classic d'OVH ( https://www.ovh.com/fr/vps/vps-classic.xml ).
En général les données des sites ne font pas des centaines de Go, ce petit VPS de 10 Go peut convenir dans bien des cas, son principal intérêt hormis son prix (2 euros/mois) c'est qu'il est sur du Raid 10 et que c'est géré par OVH, donc pas de risque de perte des données.
si les 10 Go ne suffisent pas, vous pouvez aussi prendre un autre ks (le premier est à 6 euros avec 500 Go de disque), mais là pas de Raid, ou un VPS plus important.
Pour plus de simplicité on va donc parler de ks pour le serveur source et vps pour le serveur de sauvegarde.

Je vous conseille de choisir une distribution nue lorsque vous commanderez votre VPS, car de toutes façons ce vps n'aura aucun accès public, pas de web, rien que le stockage de vos sauvegardes, donc pas besoin d'être un as en administration système ni d'installer tout un arsenal d'utilitaires..
Quelques minutes plus tard vous recevrez un email avec vos identifiants :
login : root
pass : 123456

SUR LE VPS
Maintenant connectez-vous en SSH avec PuTTy avec vos identifiants
On va créer un répertoire dans /home pour y mettre nos sauvegardes
Code:
mkdir /home/sauvegardes_ks_BDD
Code:
mkdir /home/sauvegardes_ks_WEB
c'est tout pour le moment, mais on garde la fenêtre ouverte

SUR LE KS
On ouvre une autre fenêtre PuTTy et on se connecte sur notre KS (en root pour plus de simplicité)
on va créer un répertoire de sauvegarde sur le ks afin d'y mettre les fichier compressés des domaines avant de les envoyer sur le VPS
Code:
mkdir /home/sauveKS
Puis on va créer un jeu de clés afin que le ks puisse communiquer avec le vps de façon automatique
Code:
ssh-keygen -t rsa -b 1024 -f id_rsa
ne pas mettre de passphrase (appuyer sur entrée)
on va aller récupérer cette clé qui se trouve dans /root/.ssh/id_rsa.pub

Code:
cat /root/.ssh/id_rsa.pub
SUR LE VPS
copiez la clé puis retournez sur votre VPS et vous la collez dans :
Code:
nano /root/.ssh/authorized_keys2
vous enregistrez
vous relancez le service ssh
Debian
Code:
service ssh restart
Gentoo/Centos
Code:
/etc/init.d/ ssh restart
SUR LE KS
retournez sur votre fenêtre SSH du ks et vérifiez si la clé fonctionne

Code:
ssh root@ip_vps
là il faudra écrire yes afin que la clé soit toujours validée
vous devriez ensuite vous retrouver sur le SSH du vps
tapez exit pour en sortir et revenir au SSH du ks

SUR LE KS
Maintenant que le serveur et le vps sont préparés il reste à définir ce qu'on va sauvegarder, en général : les données et les bases mySQL
Pour cela on va créer un fichier qui va regrouper toutes les commandes
Code:
cd /home
:
Code:
nano sauve_ks_bdd.sh
avec ce contenu :

Code:
#!/bin/bash
var=$(date +%Y-%m-%d)

# Creation des fichiers dump des bdd
mysqldump -uroot -pLE_PASS_MYSQL_ROOT base_1 | gzip >/home/sauveKS/"$var"_bdd_domaine1.gz
mysqldump -uroot -pLE_PASS_MYSQL_ROOT base_2 | gzip >/home/sauveKS/"$var"_bdd_domaine2.gz

# on envoie le tout sur le VPS
scp /home/sauveKSD/"$var"*.gz  root@IP_VPS:/home/sauvegardes_ks_BDD/

# on efface les fichiers du répertoire du ks (decommenter las ligne si vous voulez le faire)
# rm /home/sauveKS/"$var"*.gz
vous sauvegardez, puis vous quittez l'éditeur
on met des droits d'exécution au fichier :
Code:
chmod +x sauve_ks_bdd.sh
on le teste
Code:
./sauve_ks-bdd.sh
on crée un autre fichier pour les répertoires web

Code:
nano sauve_ks_web.sh
avec ce contenu :

Code:
#!/bin/bash

var=$(date +%Y-%m-%d)

# Creation des fichiers web
cd /home/sauveKS/
tar cvjf "$var"_domaine1_web.tar /home/domaine1/ 
tar cvjf "$var"_domaine2_web.tar /home/domaine2/ 

# on envoie le tout sur le VPS
scp /home/sauveKS/"$var"*.tar  root@IP_VPS:/home/sauvegardes_ks_WEB/

# on efface les fichiers du répertoire du ks (decommenter las ligne si vous voulez le faire)
# rm /home/sauveKS/"$var"*.tar
vous sauvegardez, puis vous quittez l'éditeur
on met des droits d'exécution au fichier :
Code:
chmod +x sauve_ks_web.sh
on le teste
Code:
./sauve_ks_web.sh
ensuite on les met en cron pour qu'ils s'exécutent à la fréquence désirée, tous les jours pour les BDD et une fois par semaine le lundi pour le web (à modifier selon vos besoins)
dans l'exemple : le web tous les lundi à 2h26 et les bdd tous les jours à 5h12

Code:
crontab -e
Code:
26 2 * * 1 sh /home/sauve_ks_web.sh > /dev/null 2>&1
12 5 * * * sh /home/sauve_ks_bdd.sh > /dev/null 2>&1
SUR LE VPS
on vérifie que les fichiers ont bien été copiés
Code:
ls -l /home/sauvegardes_ks_BDD
Code:
ls -l /home/sauvegardes_ks_WEB
Vous pouvez aussi rajouter d'autres répertoires importants ou fichiers de configuration (/etc par exemple )

Pensez aussi à mettre votre distribution régulièrement à jour.

Faire le ménage sur le VPS
Pour que les fichiers sur le VPS soient effacés de façon régulière et automatique afin de ne pas le saturer, j'ai mis 7 jours, à vous de mettre le nombre qui vous convient

SUR LE VPS

on crée le fichier pour les BDD :
Code:
nano /home/sauvegardes_ks/effacement_sauvegardesBDD.sh
avec ce contenu
Code:
#!/bin/bash

# Format de la date, ce qui donne 2014-05-25
format_date='%Y-%m-%d'

# on se met dans le bon repertoire
cd /home/sauvegardes_ks_BDD

# Variable de la date du jour
date=`date +${format_date}`;

# Le nombre de jours que vous souhaitez archiver
nbjours="7";

# Fichiers qui seront effaces car leur nom commence par la date selon le nombre de jours que vous archivez
deldate=`date --date "-${nbjours} days" +${format_date}`;

echo "liste des fichiers du vps de plus de ${nbjours} jours : ${deldate} qui seront deletes" ;
ls -l ${deldate}*.*

# si cet affichage de test est ok, retirez le # de la ligne suivante pour effacer les fichiers
# rm ${deldate}*.*
echo "Liste des fichiers restant apres effacement de ceux vieux de ${nbjours} ";
ls -l
on crée le fichier pour le WEB :
Code:
nano /home/sauvegardes_ks/effacement_sauvegardesWEB.sh
avec ce contenu
Code:
#!/bin/bash

# Format de la date, ce qui donne 2014-05-25
format_date='%Y-%m-%d'

# on se met dans le bon repertoire
cd /home/sauvegardes_ks_WEB

# Variable de la date du jour
date=`date +${format_date}`;

# Le nombre de jours que vous souhaitez archiver
nbjours="15";

# Fichiers qui seront effaces car leur nom commence par la date selon le nombre de jours que vous archivez
deldate=`date --date "-${nbjours} days" +${format_date}`;

echo "liste des fichiers du vps de plus de ${nbjours} jours : ${deldate} qui seront deletes" ;
ls -l ${deldate}*.*

# si cet affichage de test est ok, retirez le # de la ligne suivante pour effacer les fichiers
# rm ${deldate}*.*
echo "Liste des fichiers restant apres effacement de ceux vieux de ${nbjours} ";
ls -l
on enregistre, on quitte l'éditeur et on rend ces fichiers exécutables
Code:
chmod +x /home/sauvegardes_ks/effacement_sauvegardesBDD.sh
Code:
chmod +x /home/sauvegardes_ks/effacement_sauvegardesWEB.sh
il restera à le mettre en cron pour qu'il s'exécute automatiquement, sur l'exemple : chaque jour à 4h30
Code:
crontab -e
Code:
30 4 * * * sh /home/sauvegardes_ks/effacement_sauvegardesBDD.sh > /dev/null 2>&1
30 5 * * * sh /home/sauvegardes_ks/effacement_sauvegardesWEB.sh > /dev/null 2>&1
Petite précision : seuls les fichiers correspondant à date - x jours (7 et 15 dans l'exemple) seront effacés, s'il y a des fichiers plus anciens, ils resteront, il faut faire le ménage avant de mettre ça en place, ensuite comme ce sera lancé chaque jour, il ne restera toujours que les x derniers jours (6 dans notre exemple).
Et bien sûr, cet exemple est valable si comme moi, vos fichiers ont la date en début de nom en format AAAA-MM-JJ (2014-05-26), sinon il faut adapter le code.
Il faut adapter les fichiers ménage à chacune des fréquences.

Et la sécurité dans tout ça ?
Un dernier petit ajout histoire de sécuriser ce vps contenant vos précieuses sauvegardes
Pourquoi ajouter cela puisque ce serveur n'a pas d'accès au web ? Faites un
Code:
cat /var/log/auth.log
histoire de vous convaincre que même sans rien dessus vous trouverez des tentatives d'intrusion, certains robots scannent tout en permanence
Code:
iptables -L -v
nous montre que le serveur est ouvert de partout
on va donc faire quelques règles pour changer ça
Code:
nano /etc/init.d/firewall
on va n'autoriser que le port 22 puisque ce serveur ne servira qu'à nos sauvegardes faites en ssh:
Code:
#!/bin/sh
### BEGIN INIT INFO
# Provides: firewall
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:   2 3 4 5
# Default-Stop:       0 1 6
# Short-description:  firewall
# Description:       firewall
### END INIT INFO
# On autorise les connexions deja etablies
/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# on autorise le ssh
/sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

# on bloque tout le reste
/sbin/iptables -A INPUT -i eth0 -j DROP
On rend le fichier exécutable
Code:
chmod +x firewall
puis on le lance
Code:
/etc/init.d/firewall start
Debian
si tout est ok on l'ajoute au reboot
Code:
update-rc.d firewall defaults
Pour le retirer si besoin :
Code:
update-rc.d -f firewall remove
Gentoo/Centos
Code:
rc-update add firewall default
Pour le retirer si besoin :
Code:
rc-update del firewall
on installe une connexion par clé si ce n'est pas déjà fait pour nos connexions sur ce vps (voir ici )

on vérifie que cela fonctionne bien, si c'est ok on désactive la connexion root par mot de passe
Code:
nano /etc/ssh/sshd_config
et on commente cette ligne :
Code:
# PermitRootLogin yes
et on rajoute celle-ci :
Code:
PermitRootLogin without-password
puis on relance
Debian
Code:
service ssh restart
Gentoo/Centos
Code:
/etc/init.d/ssh restart
Résumé :
- tout est fermé sauf le port SSH
- on ne peut se connecter que par clé SSH
]