« LINUX:RSYNC-Rassemblement sur une autre machine » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(11 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
__FORCETOC__ | __FORCETOC__ | ||
---- | |||
''→ [[LINUX:RSYNC|retour à RSYNC]]'' | |||
---- | |||
=But= | =But= | ||
Dans ce script, nous rassemblons en un seul endroit sur une autre machine ce que nous voulons sauvegarder. Cet ensemble constitue le premier niveau de sauvegarde, le plus actuel de la sauvegarde. | Dans ce script, nous rassemblons en un seul endroit sur une autre machine ce que nous voulons sauvegarder. Cet ensemble constitue le premier niveau de sauvegarde, le plus actuel de la sauvegarde. | ||
Ligne 10 : | Ligne 13 : | ||
* Effectuer la sauvegarde vers la machine distante | * Effectuer la sauvegarde vers la machine distante | ||
* Eteindre la machine distante | * Eteindre la machine distante | ||
Ligne 81 : | Ligne 82 : | ||
=[[LINUX:SSH et RSYNC|SSH et RSYNC]]= | |||
Dans les opérations suivantes nous allons utiliser le protocole SSH seul ou en conjonction avec RSYNC. Nous allons donc configurer celui-ci et l'utilisateur concerné par notre projet sur la machine distante. | |||
Ligne 105 : | Ligne 105 : | ||
echo "Action" | echo "Action" | ||
# options pour rsync | # options pour rsync | ||
OPTION="- | OPTION="-a -z --numeric-ids --stats --delete --timeout=600 " | ||
# TEST: si un autre processus rsync est encore en cours, ne pas démarrer celui-ci | # TEST: si un autre processus rsync est encore en cours, ne pas démarrer celui-ci | ||
TEST1=`ps ax | grep "rsync --server" | grep -v grep` | TEST1=`ps ax | grep "rsync --server" | grep -v grep` | ||
Ligne 140 : | Ligne 140 : | ||
* le répertoire contenant les scripts | * le répertoire contenant les scripts | ||
N'oubliez pas de paramétrer la variable "BASE" qui situe le répertoire de base de la sauvegarde sur la machine distante. Ne pas oublier de le créer sur cette machine avec les privilèges voulus; c'est à dure qu'il doit appartenir à l'utilisateur "sauvegarde". En effet la session SSH sur la machine distante est ouverte au nom de l'utilisateur "sauvegarde". | N'oubliez pas de paramétrer la variable "BASE" qui situe le répertoire de base de la sauvegarde sur la machine distante. Ne pas oublier de le créer sur cette machine avec les privilèges voulus; c'est à dure qu'il doit appartenir à l'utilisateur "sauvegarde". En effet la session SSH sur la machine distante est ouverte au nom de l'utilisateur "sauvegarde". | ||
L'option "-e" et son paramètre définit la manière dont est effectuée l'ouverture de session SSH. Cette ouverture n'est pas faite via une authentification par mot de passe mais par une clé cryptée privée/publique analogue à ce qui est utilisé dans un protocole tel que HTTPS à part que dans ce dernier cas, elle est certifiée par une autorité. Remarquez que l'on précise un port de transfert autre que le port 22 utilisé par défaut par le protocole "ssh", ceci pour écarter les attaques du pirate du dimanche. Ici nous utilisons le port 6333 mais peu importe lequel pour autant qu'il ne soit pas déjà utilisé sur la machine distante. | |||
Faisons remarquer que si votre firewalkl filtre ce qui sort de la machine, il faut ouvrir ce port. | |||
Il faut créer deux sous-répertoires sous celui défini par la variable "MANAGER": | |||
* log : où vont se loger des journaux de "rsync" | |||
* key où est rangée la clé privée servant à l'ouverture de la session SSH | |||
Le script boucle sur le fichier "'''repertoire.txt'''" se trouvant dans le répertoire désigné dans la variable "MANAGER". Il traite successivement chaque ligne. Chaque ligne comprend deux zones séparées par le sigle ":". | Le script boucle sur le fichier "'''repertoire.txt'''" se trouvant dans le répertoire désigné dans la variable "MANAGER". Il traite successivement chaque ligne. Chaque ligne comprend deux zones séparées par le sigle ":". | ||
Ligne 161 : | Ligne 171 : | ||
cd $MANAGER | cd $MANAGER | ||
echo "Eteindre" | echo "Eteindre" | ||
/usr/bin/ssh -p 6333 -i ${MANAGER}/key/serveur-distant-rsync-key sauvegarde@${MACHINE} "sudo | /usr/bin/ssh -p 6333 -i ${MANAGER}/key/serveur-distant-rsync-key sauvegarde@${MACHINE} "sudo init 0" | ||
---- | ---- | ||
Il attend deux paramètres: | Il attend deux paramètres: | ||
* le nom de la machine distante ou son adresse IP | * le nom de la machine distante ou son adresse IP | ||
* le répertoire contenant les scripts | * le répertoire contenant les scripts | ||
Comme pour le transfert "rsync", on utilise le protocole "ssh" via une authentification par clé par le port 6333 via l'utilisateur "sauvegarde". | |||
Ligne 222 : | Ligne 233 : | ||
10 23 * * * root /manager/sauvegarde/traitement.bat > /manager/sauvegarde/traitement.log | 10 23 * * * root /manager/sauvegarde/traitement.bat > /manager/sauvegarde/traitement.log | ||
---- | ---- | ||
Dans | Dans cet exemple, il s'exécute tous les jours à 23h10 sous une cession de l'utilisateur "root". | ||
=Machine distante à travers Internet= | |||
Une sauvegarde est une sécurité en cas de désastre. En première approche, on pense au fait qu'on aie effacé un fichier par erreur mais d'autres situation existent de plus en plus graves: une cryptage par une cyberattaque, une surtension ou un coup de foudre qui détruit les machines. Il situation extrême peut arriver tel un incendie. Suivant cette approche, il faut prévoir des sauvegarde dans un autre bâtiment et même sur un site dans une autre ville d'au réseau indépendant. | |||
Dans ce cas, on individualise la partie sauvegarde au travers d'un tunnel SSH et on effectue une sauvegarde sur une machine se trouvant sur un tout autre site à travers Internet. | |||
Il faut dans ce cas adapter les firewalls se trouvant sur le chemin (PAT). Sur la machine distante, on peut limiter l'accès à l'adresse IP de l'émetteur si cette adresse est fixe soit limiter l'accès au pays qui l'héberge en implantant une règle adaptée dans le firewall. (voir [[LINUX:XTABLES-ADDONS|XTABLES-ADDONS]]) | |||
---- | |||
''→ [[LINUX:RSYNC|retour à RSYNC]]'' | |||
---- | ---- | ||
__NOEDITSECTION__ | __NOEDITSECTION__ | ||
[[Category:LINUX]] | [[Category:LINUX]] |