Archives pour l'étiquette Aix

Memo installation de ssh sur AIX 4.x et 5.x

Documentation

Voici la recette officiel pour installer ssh sur AIX 4.x et 5.x
http://www-1.ibm.com/support/docview.wss ?uid=isg3T1000403

Ressources

Tout les paquets et fichiers nécéssaire sont disponible en http
http://www-1.ibm.com/servers/aix/products/aixos/linux/download.html

Installer « wget » en premier sur votre serveur aix dans ce cas. Vous pourrez ainsi télécharger en http directement depuis la ligne de commande

Si non par ftp:
ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/

Ssh

La documentation ssh est disponible ici en français :
http://www.openssh.org/fr/index.html

Backup avec Unison et ssh

Unison

A la rechercher d’un solution souple et adaptable pour éffectuer des sauvegardes de donnée de station de travail et de serveur sur un gros serveur de fichier distant avec une grappe raid6 de 1,2 To (8 disques)

Et d’un coup d’apt-get j’ai trouvé : UNISON

Le man unison donne cette brève description :

« a file-synchronization tool for Unix and Windows »

Toutes mes informations sont sur le site web de unisons : cliquez ici Il y a entre autre le User Manual and Reference qu’il est indispensable de lire. Il debute par quelque exercises facile pour comprend le principe de base. Faite vos test dans un coin pour mieux appréhender l’outil.

Installation Linux Debian

L’installation sous debian est toujours aussi facile :

apt-get install unison

Installation sous Windows XP

Il y a different binaire disponible sur le site de UNISON en dowload mais je recommande de prendre la version stable en ligne de commande, facile à installer et a utliser en batch avec l’ordonateur de tache.

Comme cette version porte le nom de unison.win32-textui.exe je vous recommende de le renomer en unison.exe et de placer dans c :/windows/system32/ afin qu’il soit disponible dans le path.

Installation sous Aix

Unison est disponible sous IBM Aix également, vous pouvez le télécharger sur la page bullfreeware.com. Les intructions d’installation via smitty sont disponible sur le même site ici .

Première utilisation

Simple comme bonjour si vous avez au moins regardé le User Manual and Reference qu’il est indispensable de lire.

unison dir1 dir2

Par defaut unison travail en mode interactif. Il va donc prépater une liste des fichier et repertoire présent dans dir1 avec leur attribues (date, taille). Puis vous demander pour chacun des differences avec dir2 vous demander la marche a suivre.

Par exemple pour recopier le fichier file-exemple de dir1 a dir2 voici le dialogue :


/dir1 /dir2
new file-exemple ----> / [f] f

la commande f pour flush indique de procéder

A la suite de cela il vous demander de valider la globalité de la synchronisation, repondez y.


Proceed with propagating updates? []

NOTE : Danger Attention a l’ordre de présentation de repertoire à synchroniser ! Présenter dir2 avant dir1 implique que c’est le repertoire dir2 qui est le référent. si celuis ci est vide, unison supprimera tout de dir1.

Regarde bien avant de valider.


/dir2 /dir1
----> delete file-exemple / [f] f

Methode : De disque a disque

Le plus facile est de faire une synchronisation de disque a disque sur un même machine. Il est possible de le faire au travers d’un montage nfs également.

Voici deux exemples de script à placer dans la crontab ou dans l’ordonateur de tache.

Sous linux avec NFS


#!/bin/sh

/usr/bin/unison /var/lib -path=mysql /mnt/serveur/host/ -batch -force /var/lib
/usr/bin/unison /var -path=www /mnt/serveur/host/ -batch

Ici en deux lignes je sauvegarde :
- mes bases de données présente dans /var/lib/mysql
- mon site web dans /var/lib/www

Attention j’ai pris sois de monter un partage nfs du serveur serveur dans /mnt/serveur. Pour cela ajouter la ligne suivante à /etc/fstab et lancer la commande commande mount -a :

serveur.karlesnine.com:/partagenfs /mnt/serveur nfs defaults 0 0

Les options utilisées :
- -patch=mysql pour le prendre en compte qu’un repertoire ou fichier dans un racine pouvant en présenter plusieur comme dans le cas de /var/lib.
- -force /var/lib oblige unison a synchroniser dans un seul sens. ici ne prenant en compte que les modifications local force /var/lib et les imposant sur le partage nfs.
- -batch mode batch, toute les modifications sont valider par defaut il n’y a donc plus de question.

Sous windows

Sous winwows il est possible de faire de même via un partage de fichier smb / samba préalablement activé. Je ne detaille pas ici cette manipulation propre a windows.


unison "C:\Documents and Settings\Nat\Bureau" "Z:\Nat\Bureau" -batch -force "C:\Documents and Settings\Nat\Bureau"

unison "C:\Documents and Settings\Nat\Mes documents" "Z:\Nat\Mes documents" -batch -force "C:\Documents and Settings\Nat\Mes documents"

unison "C:\Documents and Settings\Nat\Application Data\Thunderbird" "Z:\Nat\Thunderbird" -batch -force "C:\Documents and Settings\Nat\Application Data\Thunderbird"

Sous windows la syntaxe reste la même seul change la présentation des chemins de répertoire.
Cependant faire attention aux doubles cotes.

Une doc sur unison et windows

http://demas.free.fr/HowTo/unison/#_Toc32303312

Et avec ssh ?

Sauvegarder via un connexion ssh offre l’avantage de ne pas utiliser de nfs et donc d’administrer des montages non sécurisés et donc l’utilisation d’un tunnel crypté avec identification par clef.

Pas de NFS pour eviter :
- les access root sur un fileserveur distant
- les problèmes de montage
- la simple indication donner parla présence ou le parcoure d’une arborescence
- Palier à la faible sécurité de nfs V3.

Ssh pour :
- Avoir des connexions ponctuelles, automatisées et masquées
- Limite les droits de connexion
- Crypter les tunnels de connexion.
- Avoir une compression minimum du transfert de donnée
- Pouvoir révoquer les droits de connexion de façon centralisé

Unison pour :
- La synchronisation bi-directionnel
- Le filtrage sur les noms de fichiers
- L’intégration avec ssh

Sous Linux via SSH

Serveur de fichier

Sur le serveur de fichier copier la cléf ssh publique créé spécialement pour cette connexion de backup en ajoutant l’option no-pty dans le fichier $HOME/.ssh/authorized_keys du compte choisi pour recevoir la connexion . Ceci pour bloquer l’ouverture d’un shell (apportant un petit plus de sécurité) comme dans cette exemple :


no-pty ssh-dss AAAAB3NzaC...../ /...qxX/27ZZ9X5vAVA== backup

Attention a bien choisir le compte utilisé et a configurer les droit d’écriture sur l’arborescence de destination choisie.
Dans mon architecture j’ai pris le compte admin qui n’est qu’un simple compte utilisateur lamba.

Serveur client

Ajouter dans le répertoire .ssh du compte servant à faire le backup, ici root pour parcourir l’arborescence quelque soit le propriétaire des répertoires, le fichier de configuration particulier nommé config suivant


Host backup
Compression yes
ForwardAgent no
Cipher blowfish
User admin
IdentityFile ~/.ssh/backup
HostName serveur.karlesnine.com

Ce fichier apporte l’utilisation d’un alias backup pour un ensemble de paramètres. En voici l’explication dans l’ordre :
- La compression
- Le blocage du forward de clé
- Une cryptographie legère blowfish
- Le compte utilisateur cible.
- la définition de la clé
- Le serveur de destination

Je ne peux que vous conseillé de vous reporter au site offichier Openssh pour plus de documentation.

Unison

La configuration de unison ce fait avec un fichier default.prf placé dans le répertoire $HOME/.unison du compte servant à faire le backup.


# Unison preferences file
ignore = Name {core,*.pyc,*.dat,*.xcu, *.dvi, *.log, *.pid, *.out, unison.log}
ignore = Path .unison
ignore = Name toto
ignore = Name tutu
ignore = Name tmp
ignore = Name temp
logfile = /var/log/unison.log

Ce fichier de configuration apporte le filtrage sur différent nom de fichier qu’il est trop difficile à sauvegarder ou inutile.
- ignore = Name pour exclure de la synchronisation des fichiers trop souvent modifiés ou volumineux.
- ignore = Path .unison pour le pas synchroniser le repertoire de unison présent dans le compte utilisateur qui lance la synchorisation. En effet unison stock ici ces tables de mise à jour qu’il modifie durant chaque synchronisation.
- Logfile Pour que unison sauvegarde les log ailleur que dans l’environement utilisateur.

Shell script linux de backup

Un petit shell script pour effectuer le backup


#!/bin/sh
#
# Backup avec Unison
# http://www.cis.upenn.edu/~bcpierce/unison/
# Charles-Christian CROIX
# 15/01/2005
# 15/07/2005

UNISON="/usr/bin/unison
MYSQLDUMP="/usr/bin/mysqldump"

$UNISON /etc ssh://backup//home/backupbyhost/$HOSTNAME/etc -silent -backups -maxbackups 3 -batch -force /etc
$UNISON /root ssh://backup//home/backupbyhost/$HOSTNAME/root -silent -backups -maxbackups 3 -batch -force /root

$MYSQLDUMP -u root --all-databases | gzip > /var/lib/mysql/dump/FullDatabasesBackup_$HOSTNAME.sql.gz
$UNISON /var/lib/mysql/dump ssh://backup//home/backupbyhost/$HOSTNAME/var/lib/mysql/dump/ -silent -batch -force /var/lib/mysql/dump

cat /var/log/unison.log | mail admin@votredomaine.fr -s "[$HOSTNAME] Backup"
cat /dev/null > /var/log/unison.log

Option de unison :
- ssh ://backup//home/backupbyhost/$HOSTNAME/etc dans cette ligne nous voyons l’alias ssh backup d’utilisé.
- -silent pour eviter que le cron utiliser pour lancer ce script ne vous spam
- -batch pour eviter l’interactivité
- -force pour forcer la mise à jour du serveur de backup même si celuis ci semble être plus récent.
- -backups pour demander de sauvegarder la version précédente d’un fichier devant être synchronisé avant son écrasement. Sur le serveur distant un fichier test.txt sera ainsi recopier en .test.txt.0.unison.bak avant que la nouvelle version de test.txt ne soit écrite.
- -maxbackups 3 Nombre machimum de sauvegarde avec l’option -backups. Ici trois version comme dans cette exemple : .test.txt.0.unison.bak .test.txt.1.unison.bak .test.txt.2.unison.bak

Concernant l’utilisation de mysqldump :
Dans cette exemple j’ai fait le choix d’extraire l’intégralité des informations des bases de données (data et structure) dans un fichier .sql que le gzip par la suite. C’est ce fichier qui est placé dans un répertoire devant être synchronisé.

Plus facilement il est possible de sauvegarder l’arborescence de mysql en entier afin de disposer des fichiers base par base et table par table. Attention de stoper mysql si besoin pour acceder au fichier en dehors de toute écriture.

Shell script aix de backup

voici le même script que précédement mais adapté a l’environnement Aix qui ne comporte pas les mêmes variables d’environement ($HOSTNAME) ni les même emplacements pour unison. En outre la commande Mail ne répond pas à la même syntaxe.


#!/bin/sh
#
# Backup avec Unison
# http://www.cis.upenn.edu/~bcpierce/unison/
# Charles-Christian CROIX
# 15/01/2005
# 15/07/2005
# 04/08/2005 Aix version

HOSTNAME="aix3"
UNISON="/usr/local/bin/unison"

cat /dev/null > /root/.unison/unison.log
date > /root/.unison/unison.log

for I in `ls -l /home | grep ^d | grep -v lost+found | awk '{print $9}'`;
do /usr/local/bin/unison /home/$I ssh://backup//home/backupbyhost/$HOSTNAME/home/$I -silent -backups -maxbackups 2 -batch -force /home/$I;
done;

$UNISON /etc ssh://backup//home/backupbyhost/$HOSTNAME/etc -silent -backups -maxbackups 3 -batch -force /etc
$UNISON /root ssh://backup//home/backupbyhost/$HOSTNAME/root -silent -backups -maxbackups 3 -batch -force /root

mail -s "[Aix3] Backup" admin@votredomaine.fr < /root/.unison/unison.log

La bouche for en shell est destiné a optenir la liste des seul répertoires présent dans /home (donc a l’exclusion des fichiers) et a filtré ceux ci par un grep -V partern en fonction de l’environnement particulié de chaque machine aix. Puis pour chaque élément de cette liste réalisé une synchronisation.