TUXANANTES FORMATION

http://tuxanantes.free.fr/

Réaliser une sauvegarde à l'aide de rsync


RSYNC



Principe

rsync est un outil qui permet le transfert des fichiers de façon incrémentale :

il ne copie que les nouveaux fichiers et les fichiers modifiés.

Sa mise en place est très simple :

Environnement requis

2 machines sous Linux sur lesquelles sont intallées les packages OpenSSh et rsync

[root@fedora1 .ssh]# rpm -qa| grep rsync

rsync-2.6.8-3.1

[root@fedora1 .ssh]# rpm -qa| grep -i ssh

openssh-clients-4.3p2-10

openssh-askpass-4.3p2-10

openssh-4.3p2-10

openssh-server-4.3p2-10

Utilisation de rsync

On plante le décor :

J'utilise 2 serveurs Linux sous Fedora 6

La première machine s'appelle fedora1, c'est dans son répertoire /data que se trouvent les fichiers à synchroniser ( à sauvegarder )

La deuxième machine s'appelle fedora3, c'est dans son repertoire /data que rsync viendra copier les nouveaux fichiers ou les fichiers modifiés sur fedora1.

Les 2 répertoires portent ici le même nom mais ce n'est absolument pas une obligation, ils peuvent porter des noms différents.


La syntaxe de la commande rsync :

rsync [OPTION]... SRC [SRC]... [UTIL@]HOTE:DEST

ce qui, dans mon contexte, donne :

[root@fedora1 ~] # rsync -atz -e ssh /data/* fedora3:/data




Les Options :

 -v                
--verbose
plus loquace
 -q                  
--quiet
moins loquace
 -c               
--checksum
utilise la somme de contrôle, pas la date ni la taille
 -a                
--archive
mode archivage; identique à -rlptgoD (pas -H)
 -r              
--recursive
visite récursive des répertoires
 -R               
--relative
utilise des noms de chemins relatifs
     
--no-relative           
désactive --relative
     
--no-implied-dirs       
ne transmet pas les répertoires implicites de -R
-b                 
--backup
effectue des sauvegardes (cf. --suffix et --backup-dir)
            
--backup-dir=RÉP
effectue des sauvegardes dans le répertoire RÉP
             
--suffix=SUFFIXE
suffixe de sauvegarde («~» par défaut sauf si --backup-dir)
 -u                 
--update
saute les fichiers plus récents chez le destinataire
                    
--inplace
mise à jour de fichiers sur place
 -d                   
--dirs
ne transfert pas les répertoires récursivement
 -l                  
--links
copie les liens symboliques comme liens symboliques 
 -L           
--copy-links
transforme les liens symboliques par les fichiers référencés
     
--copy-unsafe-links     
ne transforme que les liens «non-sûrs» 
     
--safe-links            
ignore les liens extérieurs à l'arborescence 
 -H
--hard-links            
préserve les liens matériels
 -K 
--keep-dirlinks         
traite les liens de répertoire comme des répertoires
 -p
--perms                 
préserve les permissions
 -o
--owner                 
préserve le propriétaire (root uniquement)
 -g
--group                 
préserve le groupe
 -D
--devices               
préserve les périphériques (root uniquement)
 -t                  
--times
préserve les dates
 -O         
--omit-dir-times
omet les répertoires lors de la préservation de date
 -S 
--sparse                
traite les fichiers à trous efficacement
 -n 
--dry-run               
montre ce qui aurait été transféré 
 -W 
--whole-file            
copie les fichiers entiers (jamais l'algorithme rsync)
     
--no-whole-file         
toujours utiliser l'algorithme rsync incrémental
 -x 
--one-file-system       
ne traverse pas les limites du système de fichiers 
 -B 
--block-size=TAILLE     
force la taille de bloc de la somme de contrôle
 -e 
--rsh=COMMANDE          
spécifie un shell distant
     
--rsync-path=PROGRAMME  
spécifie le nom de l'exécutable rsync chez le récepteur
     
--existing              
met à jour uniquement les fichiers qui existent déjà
     
--ignore-existing       
ignore les fichiers qui existent déjà
    
--remove-sent-files     
les fichiers envoyés sont supprimés de chez l'émetteur
     
--del                   
synonyme pour --delete-during
     
--delete                
efface les fichiers qui n'existent pas chez l'émetteur
     
--delete-before         
efface avant le transfert (par défaut)
     
--delete-during         
efface au cours du transfert, pas avant
    
--delete-after          
efface après transfert, pas avant 
     
--delete-excluded       
efface également les fichiers exclus côté réception 
    
--ignore-errors         
efface même s'il y a eu des erreurs E/S
    
--force                 
force la suppression de répertoires même non-vides
    
--max-delete=NUM        
n'efface pas plus de NUM fichiers
    
--max-size=TAILLE       
ne transfert le fichiers plus gros que TAILLE
     
--partial               
conserve les fichiers partiellement transférés 
--partial-dir=RÉP       
place les fichiers partiellement transférés dans RÉP
--delay-updates         
ne remplace les fichiers mis à jour qu'à la fin
--numeric-ids           
ne remplace pas les uid/gid par des noms d'utilisateur/groupe 
--timeout=DURÉE         
fixe la durée d'attente E/S en secondes
-I
--ignore-times          
ne saute pas les fichiers similaires par la taille et la date
 --size-only             
saute les fichiers qui sont similaires par la date
--modify-window=NUM     
compare les dates avec une précision moins fine
-T
--temp-dir=RÉP          
crée des fichiers temporaires dans le répertoire RÉP
-y
--fuzzy                 
se base sur des fichiers similaires si le fichier manque
--compare-dest=RÉP      
compare les fichiers transmis également à RÉP
--copy-dest=RÉP        
 ...et inclut les fichiers non modifiés
--link-dest=RÉP         
crée un lien matériel vers les fichiers de RÉP si non modifiés
-z
--compress              
transfert en compressant les données
-C
--cvs-exclude           
ignore automatiquement des fichiers, comme le ferait CVS
-f
--filter=RÈGLE          
ajoute une règle de filtrage de fichier
-F 
                          
identique à --filter='dir-merge /.rsync-filter'
deuxième fois : --filter='- .rsync-filter'
              
--exclude=MOTIF
exclut les fichiers correspondant au MOTIF
       
--exclude-from=FICHIER
lit des motifs d'exclusion depuis FICHIER
    
--include=MOTIF         
n'exclut pas les fichiers correspondant au MOTIF
   
--include-from=FICHIER  
lit des motifs d'inclusion depuis FICHIER
--files-from=FICHIER    
lit des fichiers à transférer depuis FICHIER
-0
--from0                 
tous les fichiers des *-from/filtres sont séparés par 0
--address=ADRESSE       
se lie à l'adresse pour la connexion sortante vers le démon
--port=PORT             
spécifie un autre numéro de port rsyncd 
--blocking-io           
utilise des E/S bloquantes pour le shell distant
--no-blocking-io        
désactive les E/S bloquantes
--stats                 
affiche quelques statistiques de transfert de fichiers
--progress              
montre l'avancement pendant le transfert
 -P                          
équivalent à --partial --progress
 -i 
--itemize-changes      
 affiche un résumé des changements pour chaque mise à jour
     
--log-format=FORMAT     
affiche les noms fichiers selon le format spécifié
     
--password-file=FICHIER 
lit le mot de passe depuis FICHIER
--list-only             
liste les fichiers au lieu de les copier
   
--bwlimit=KBPS          
limite la bande passante E/S, En ko par seconde
    
 --write-batch=FICHIER   
enregistre les modifications dans FICHIER
     
--only-write-batch=FICHIER 
comme --write-batch sans mettre à jour la destination
    
--read-batch=FICHIER    
exécute le fichier de modification FICHIER
    
--protocol=NUM          
force l'utilisation d'un protocole rsync version NUM
--checksum-seed=NUM     
spécifie la graine pour la somme de contrôle
 -4
--ipv4                  
préfère IPv4
 -6
--ipv6                  
préfère IPv6
     
--version               
affiche le numéro de version
 -h 
--help                  
affiche cet écran d'aide



Pour automatiser l'exécution de cette commande , on l'inscrira dans les tâches prises en charge par crontab