http://tuxanantes.free.fr/
RSYNC
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 :
c’est le même utilitaire pour le client et le serveur
il n’y a aucune configuration à faire sauf la configuration ssh ( clé publique / clé privée si l'on veut que rsync utilise ce protocole )
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
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
-a : permet de copier tous les fichiers, y compris les fichiers et dossiers cachés (fichiers commençant par .)
-v : affiche les opérations avant de les effectuer
-c : utilise la somme de contrôle, pas la date ni la taille
-t : préserve les dates
-e ssh : spécifie un shell distant; ici ssh ( nécessite la mise en place de la configuration ssh permettant l'utilisation de rsync à l'aide d'un couple de clé privée/clé publique )
-z : transfert en compressant les données
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' |
| --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