SSH, OpenSSL, Iptables, RSYNC, RAID, VPN

 Charge moyenne sur 1mn : 0.10 Charge moyenne sur 5mn : 0.41 Charge moyenne sur 15mn : 0.53


Comment faire pour protéger un réseau, une transmission, des données ?

Utiliser un pare-feu, un anti-virus, sauvegarder son système régulièrement, utiliser un système de disque sécurisé pour vos données. Utiliser les protocoles sécurisés tel que HTTPs, FTPs, IMAPs, POPs, SMTPs





Blocs utilisateurs du site : Infos du compte / droits utilisateurs / récapitulatif

Identifiez-vous

Authentifiez-vous avec votre compte ZW3B et profitez des services membres.

Identifiant :
Mot de passe :
  
  

Rsync : le meilleur des systèmes de sauvegarde

  • Rsync : le meilleur des systèmes de sauvegarde
Sauvegarde automatisé rapide et fiable. En utilisant rsync, il est facile de paramétrer un système qui conservera une copie à jour d'un système de fichiers.

Informations

Dates
  • Publication : Jeudi 17 novembre 2005
  • Modification : Mardi 26 juin 2012

Introduction

Essentielles, mais laborieuses, les sauvegardes sont souvent remises à plus tard, par manque de temps ou de motivation. Par ailleurs, quand elles sont faites, la longueur de l'acte en découragera plus d'un. C'est surtout l'une des plus importantes. C'est le dernier rempart de défense contre les pannes matérielles, des brèches de sécurité et le danger ultime : les utilisateurs. Bien sûr il existe de nombreux systèmes de backup coûtant plusieurs milliers d'euros qui archivent les données sur de coûteux lecteurs de bande et utilisent du logiciel propriétaire cher et farci de bugs; mais on peut faire mieux, en utilisant rsync et une pile de disques durs bon marché.

Le problème

Je peux vous énumérer longuement les raisons pour lesquelles la sauvegarde est le cauchemar des administrateurs-système. Si vous êtes vous-même administrateur, c'est probablement inutile. Voici quelques-une de ces raisons : le matériel, cher, qui est plus souvent en panne qu'opérationnel, les logiciels coûteux dont la gestion tourne au cauchemar, les longues heures passées à restaurer de multiples versions de fichiers. Pour rendre les choses encore plus difficile, les sauvegardes ont rarement une haute priorité en entreprise - jusqu'au jour où, inévitablement, on en a vraiment besoin. Si vous avez déjà eu à faire des sauvegardes/restaurations, il y a des chances que vous ayez eu une conversation de ce genre :

  • Utilisateur : "J'ai perdu un fichier. J'ai besoin de le récupérer. C'est urgent."
  • SysAdmin : "D'accord. Quel nom, le fichier ?"
  • Utilisateur : "Je ne sais pas, je pense qu'il y a un 'e' dans le nom."
  • SysAdmin : "Bon. Dans quel répertoire était-il ?"
  • Utilisateur : "Je ne sais pas, peut-être dans l'un de ces trois-là..."
  • SysAdmin : "*Soupir* Quelle date, la dernière utilisation ?"
  • Utilisateur : "Et bien.... Je crois que c'était un mardi ; en février ... ou en avril. Mais c'est quoi, le problème ? Je pensais que quelqu'un comme vous avait mis en place un *système pour faire face à ce genre de choses."

L'alternative rsync :

Rsync est un utilitaire Open Source qui permet un transfert rapide de fichiers incrémental.

Rsync est une puissante implémentation d'un beau petit algorithme. Cette puissance vient d'abord de sa capacité à faire un "miroir" efficace d'un système de fichiers. En utilisant rsync, il est facile de paramétrer un système qui conservera une copie à jour d'un système de fichiers en utilisant un ensemble souple de protocoles réseau comme nfs, smb ou ssh. La seconde fonctionnalité de rsync exploitée par ce système de sauvegarde est sa capacité à archiver d'anciennes copies de fichiers modifiés ou effacés. Il existe bien trop de fonctions pour que cet article sur rsync soit exhaustif, je vous conseille donc de poursuivre votre lecture sur http://rsync.samba.org

Avantages : Récupération en cas de crash et restauration de fichiers deviennent faciles

Revenons à notre conversation imaginaire de tout à l'heure. Maintenant, au lieu d'un encombrant système à base de bandes, imaginez six mois de sauvegardes incrémentales qui vous attendent tranquillement sur votre machine Linux. En utilisant la combinaison favorite locate/find/grep, il est possible de trouver toutes les occurences des fichiers de notre utilisateur imaginaire contenant un 'e' et dont la date correspond à un mardi en février ou avril, puis de les copier dans son répertoire personnel. Quant au problème de retrouver la bonne version, c'est devenu le genre de problème que je préfère : celui de quelqu'un d'autre que moi.

Ensuite, imaginons notre scénario favori - la panne complète. Supposons qu'un gros serveur nfs/samba vous lâche. Et bien, si vous avez sauvegardé vos configs samba, vous pouvez remonter votre serveur de sauvegarde en lecture seule en quelques minutes seulement. Essayez toujours avec des bandes.

élaborer le script :

La base de ce script vient du site Web de rsync. Il n'y a en réalité qu'une seule commande:

rsync --force --ignore-errors --delete --delete-excluded --exclude-from=exclude_file --backup --backup-dir=`date +%Y-%m-%d` -av

Les options clés sont:

  • --backup : crée des sauvegardes des fichiers avant de les écraser en les écrivant sur eux-mêmes
  • --backup-dir=`date +%Y-%m-%d` : crée un répertoire de backup pour ces sauvegardes, qui ressemble à ça pour la sauvegarde du 15 aût 2003: 2003-08-15
  • -av : mode archive et mode verbeux.

exemple de commande :

Ici nous voulons sauvegarder le dossier /etc sur la machine serv dans le dossier /home/backup/gate/.

  • 1. La première fois que vous executez cette commande tout le dossier /etc/ sera copié dans le dossier serv:/home/backup/gate/actuel/etc/
  • 2. Les autres fois juste les fichiers modifiés seront ajouté/supprimé/modifié du dossier serv:/home/backup/gate/actuel/etc/ et seulement les sauvegardes des fichiers supprimés/modifiés seront stokés dans serv:/home/backup/gate/date_du_jour/etc/
rsync --force --ignore-errors --delete --delete-excluded --backup --backup-dir=/home/backup/gate/`date +%Y_%m_%d`/etc/ -av /etc/ save@serv:/home/backup/gate/actuel/etc/

Le script avec connection SSH sur le poste de backup :

Ce script récupére les répertoires /etc et /var/www sur la machine locale et les envoie sur la machine distante backup.serveur.com dans le répertoire /home/backup/ma_machine.

#!/bin/sh
# CREER PAR O.Romain Jaillet-ramey - POUR TOUT RENSEIGNEMENT : ORJ AT LAB3W DOT FR

# Date Actuelle
DATE=`date +%Y%m%d`

# Repertoires a sauvegarder
SOURCES="/etc /var/www"

# Machine distante
RMACHINE=backup.serveur.com

# User de la machine distante
RUSER=distant_user

# Clé privé passphrase de la machine backup.serveur.com stokée sur la machine locale
RKEY=/home/mon/user/local/.ssh/id_dsa

# Repertoire de la machine distante où lon souhaite faire le backup
RTARGET="/home/backup/ma_machine"

# Dossier au sera stoké le mirroir
DEFAULT="actuel"

# Options
OPTIONS="--force --ignore-errors --delete --delete-excluded --backup"

########################
# SCRIPT
###

if [ ! -f $RKEY ]; then
    echo "N'a pas pu trouver le fichier de la clé privé ssh !"
    echo "Exit !"
    exit 2
fi

if ! ssh -i $RKEY $RUSER@$RMACHINE "test pwd"; then
    echo "L'authentification à échouée !"
    echo "Exit !"
    exit 2
fi

if ! ssh -i $RKEY $RUSER@$RMACHINE "test -x $RTARGET"; then
    echo "Le répertoire $RTARGET sur la machine distante n'existe pas."
    echo "On essaie de le créer...."
        ssh -i $RKEY $RUSER@$RMACHINE "mkdir -p $RTARGET"
        
        if ! ssh -i $RKEY $RUSER@$RMACHINE "test -x $RTARGET"; then
            echo "Le répertoire $RTARGET n'a pas pû être créer ou à de mauvaises permissions."
            echo "Exit !"
            exit 2
        fi
    echo "Répertoire $RTARGET créé !"
    echo ""
fi

echo "Verification des Sources..."
for source in $SOURCES; do
    echo "Analyse $source..."
    if [ ! -x $source ]; then
        echo "Erreur avec $source!"
        echo "Le répertoire n'existe pas ou vous n'avez pas des droits appropriés."
        exit 2
    fi
done

echo ""
echo "Les sources sont vérifiées. Lancement de rsync..."
echo ""
for source in $SOURCES; do

    # Créer des répertoire selon le nombre de source
    if ! ssh -i $RKEY $RUSER@$RMACHINE "test -d $RTARGET/$source-$DEFAULT"; then
        ssh -i $RKEY $RUSER@$RMACHINE "mkdir -p $RTARGET/$source-$DEFAULT"
    fi
    
    rsync $OPTIONS --backup-dir=$RTARGET/$source-$DATE -av -e "ssh -i $RKEY" $source/ $RUSER@$RMACHINE:$RTARGET/$source-$DEFAULT
done

echo ""
echo "Sauvegarde Journalière effectuée avec succés !!!"

###
# SCRIPT
########################

PS : Nous avons utilisé une authentification par clés privé/publique pour que la connexion à l'hôte distant soit autonome. Le script qui suit peut être lancé chaque nuit en utilisant le système cron intégré à Linux. Pour lancer le script à 23 h chaque soir, utilisez la commande crontab -e, puis tapez ce qui suit:

0 23 * * * /chemin/de/votre/script  | mail -s "[BACKUP] Ma becane" mon_mail@domaine.com

Un autre script de backup sur la même machine

#!/bin/sh
# CREER PAR O.Romain Jaillet-ramey - POUR TOUT RENSEIGNEMENT : ORJ AT LAB3W DOT FR
#
# BACKUP LOCAL : MYSQL - SMB - WEB - FTP
#
#########################################################################################

# titre du backup
TRAIT="###################################################################"
CHROOT="CHROOT_LAB3W"
TYPE="MYSQL - SMB - WEB - FTP"
TITRE="LOCAL : $CHROOT - BACKUP : $TYPE"

# Date Actuelle
DATE=`date +%Y%m%d`

# Repertoires a sauvegarder
SOURCES="/var/lib/mysql 
    /etc/samba 
    /etc/apache 
    /etc/servers 
    /etc/backup 
    /etc/pure-ftpd 
    /etc/jabber 
    /var/lib/jabber 
    /etc/hosts 
    /etc/hosts.allow 
    /etc/hosts.deny 
    /etc/passwd 
    /etc/group 
    /etc/shadow 
    "
#/etc/init.d/team-speak 
#/etc/init.d/serveur-cs 
#"

# Repertoire de la machine où lon souhaite faire le backup
RTARGET="/home/backup/chroot_lab3w"

# Options
OPTIONS="--force --ignore-errors --delete --delete-excluded --backup"

########################
# SCRIPT
###

echo ""
echo $TRAIT
echo "# $TITRE"
echo $TRAIT
echo ""

if ! test -x $RTARGET; then
    echo "Le répertoire $RTARGET sur la machine locale n'existe pas."
    echo "On essaie de le créer...."
        mkdir -p {$RTARGET}
        
        if ! test -x $RTARGET; then
            echo "Le répertoire $RTARGET n'a pas pû être créer ou à de mauvaises permissions."
            echo "Exit !"
            exit 2
        fi
    echo "Répertoire $RTARGET créé !"
    echo ""
fi

echo "Verification des Sources..."
for source in $SOURCES; do
    echo "Analyse $source ..."
    if [ ! -e $source ]; then
        echo "Erreur avec $source !"
        echo "Le fichier ou répertoire n'existe pas ou vous n'avez pas des droits appropriés."
        exit 2
    fi
done

echo ""
echo "Les sources sont vérifiées. Lancement de rsync..."
echo ""

for source in $SOURCES; do
    
    # Vérifie si la source est bien un dossier
    if test -d $source; then
        # Créer des répertoire selon le nombre de source
        if ! test -d $RTARGET/$source; then
            mkdir -p $RTARGET/$source
        fi
    fi
    
    # Cest un repertoire 
    if test -d $source; then
        rsync $OPTIONS --backup-dir=$RTARGET/$source-$DATE -av $source/ $RTARGET/$source
    fi    
    
    # Cest un fichier 
    if test -f $source; then
        rsync $OPTIONS --suffix=.$DATE -av $source $RTARGET/$source
    fi
done

echo ""
echo "# $TITRE effectué avec succés !!!"
echo $TRAIT
echo ""

###
# SCRIPT
########################

Bien sûr toujours une crontab pour executer le script à l'heure que l'on veut ;)


Liens :





Autheur de la page

LAB3W.ORJ

LAB3W.ORJ

  • Prénom : Olivier Romain Luc
  • Nom : Jaillet-ramey
  • Arrivé le mardi 19 octobre 1976 (1976/10/19 00:00)
    44 ans d'activité !

Firefox Nighlty

Nos amis de Framasoft s'intéressent à Mozilla et leur ont posé des questions à propos de Nightly : Firefox Night-club, entrée libre !






Valid XHTML 1.0 Strict CSS Valide !

ipv6 ready