relecture et améliorations
This commit is contained in:
parent
f981cada95
commit
b1edc2f977
|
@ -1,13 +1,11 @@
|
|||
---
|
||||
title: Howto Rsync
|
||||
categories: network
|
||||
categories: sysadmin storage
|
||||
...
|
||||
|
||||
**rsync** permet de réaliser des copies et synchronisations, depuis ou vers un serveur distant, ou encore localement. **rsync** propose de nombreuses options pour configurer le comportement avant/pendant/après les transfers.
|
||||
|
||||
* [https://rsync.samba.org/](https://rsync.samba.org/)
|
||||
* [https://fr.wikipedia.org/wiki/Rsync](https://fr.wikipedia.org/wiki/Rsync)
|
||||
* Documentation : <https://rsync.samba.org/documentation.html>
|
||||
|
||||
[rsync](https://rsync.samba.org/) est un logiciel libre pour synchroniser des fichiers depuis ou vers un serveur distant, ou encore localement. **rsync** permet notamment de réaliser des synchronisations incrémentales que nous utilisons pour réaliser des migrations de données et des sauvegardes.
|
||||
|
||||
## Installation
|
||||
|
||||
|
@ -18,7 +16,23 @@ $ rsync --version
|
|||
rsync version 3.1.2 protocol version 31
|
||||
~~~
|
||||
|
||||
## Utilisation de base
|
||||
|
||||
## Utilisation de base
|
||||
|
||||
Voici une utilisation basique pour transférer un répertoire vers un serveur distant via SSH (la première commande fait un _dry-run_ pour vérifier que tout est Ok, la seconde envoie les données) :
|
||||
|
||||
~~~
|
||||
$ rsync -aASvn --delete --numeric-ids /home example.com:/home
|
||||
$ rsync -aASv --delete --numeric-ids --stats /home example.com:/home
|
||||
~~~
|
||||
|
||||
Notons l'utisation des **deux options fondamentales** pour lesquelles on doit se poser la question de leur utilisation à chaque commande **rsync** :
|
||||
|
||||
* `--delete` : supprime les données (à utiliser dans 99.9% des cas et pourtant ce n'est pas le défaut !)
|
||||
* `--numeric-ids` : conserve les UID/GID originaux même si owner/group ont des UID/GID différents sur la destination (à utiliser en général, sauf dans les cas de migration de données d'un serveur vers un autre)
|
||||
|
||||
|
||||
## Utilisation
|
||||
|
||||
Copier un fichier `foo.txt` vers un serveur distant `example.com` :
|
||||
|
||||
|
@ -50,37 +64,82 @@ Utiliser le mode archive, avec `-a` ou `--archive`. Ce mode est équivalent à `
|
|||
$ rsync --archive /tmp/bar example.com:/tmp/
|
||||
~~~
|
||||
|
||||
### Options
|
||||
|
||||
Liste des paramètres les plus communs :
|
||||
**rsync** propose de nombreuses options pour configurer le comportement avant/pendant/après les transferts.
|
||||
|
||||
Voici la liste des paramètres que nous utilisons souvent :
|
||||
|
||||
* `-l`, `--links` : Préserve les liens symboliques
|
||||
* `-L`, `--copy-links` : Transforme les liens symboliques en fonction du répertoire de destination
|
||||
* `-H`, `--hard-links` : Préserve les liens (hardlinks)
|
||||
* `-o`, `--owner` : Préserve le propriétaire
|
||||
* `-g`, `--group` : Préserve le groupe
|
||||
* `-p`, `--perms` : Préserve les permissions
|
||||
* `-n`, `--dry-run` = Les actions ne sont pas réalisées, juste listées
|
||||
* `-z`, `--compress` = Compresse les fichiers pour accélerer le transfer
|
||||
* `-A`, `--acls` : Préserve les ACLs (implique `-p`)
|
||||
* `-t`, `--times` : Préserver les dates (autant que possible)
|
||||
* `--numeric-ids` : Conserver les UID/GID originaux même si owner/group ont des UID/GID différents sur la destination (ceci n'est pas le défaut !)
|
||||
* `-n`, `--dry-run` : Les actions ne sont pas réalisées, juste listées
|
||||
* `-z`, `--compress` : Compresse les fichiers pour accélerer le transfert
|
||||
* `-S`, `--sparse` : Traite efficacement les fichiers à trou (sparse files)
|
||||
* `-v`, `--verbose` : Mode verbeux
|
||||
* `-q`, `--quiet` : Pas de sortie en stdout
|
||||
* `-h`, `--human-readable` : Les infos sont lisibles par un humain, conversion à l'unité de mesure la plus proche. Exemple 1249284o = 1.1M.
|
||||
* `-h`, `--human-readable` : Les infos sont lisibles par un humain, conversion à l'unité de mesure la plus proche. Exemple 1249284o = 1.1M
|
||||
* `-d`, `--dirs` : Copie les dossiers sans avoir besoin de lui indiquer qu'il faut le faire récursivement
|
||||
* `--bwlimit=RATE` : Limite le transfert. Attention c'est en unité de 1024 octets. On peut mettre des suffixes. Exemple 1.5m (1.5Mo/s).
|
||||
* `--partial` : Conserve les fichiers transférés partiellement. Idéal pour reprendre un précédent transfert interrompu.
|
||||
* `--bwlimit=RATE` : Limite le transfert. Attention c'est en unité de 1024 octets. On peut mettre des suffixes. Exemple 1.5m (1.5Mo/s)
|
||||
* `--partial` : Conserve les fichiers transférés partiellement. Idéal pour reprendre un précédent transfert interrompu
|
||||
* `--stats` : Affiche des statistiques à la fin du transfert. Idéal si combiné avec `-h` pour avoir le résumé du transfert, vitesse moyenne, octets transférés, etc.
|
||||
* `-4`, `--ipv4` : Utiliser une connexion IPv4
|
||||
* `-6`, `--ipv6` : Utiliser une connexion IPv6
|
||||
* `-P`, `--progress` : Suivre la progression du transfère d'un fichier
|
||||
* `-r`, `--recursive` : Mode récursif
|
||||
* `-a`, `--archive` : Archive, repecter les liens symboliques
|
||||
* `-a`, `--archive` : Archive en preservant la plupart des attributs (équivalent à `-rlptgoD`)
|
||||
* `--delete` : Supprimer les données distantes qui sont absentes depuis la source
|
||||
* `--exclude=PATTERN` : Ignore les fichiers correspondants au pattern (peut être utilisée plusieurs fois)
|
||||
* `--exclude-from=FILE` : Ignore les fichiers correspondants aux patterns situé dans un fichier
|
||||
* `--delete-excluded` : Supprimer les données distantes qui sont exclus sur la source.
|
||||
* `--ignore-errors` : Ignore les erreurs d'entrées/sorties sur les opérations de suppression.
|
||||
* `-e`, `--rsh=COMMAND` : Permet de changer le remote shell par défaut. Très utilse pour spécifier le port à ssh. Exemple : `-e 'ssh -p 2222'`.
|
||||
* `--ignore-errors` : Ignore les erreurs d'entrées/sorties sur les opérations de suppression
|
||||
* `-e`, `--rsh=COMMAND` : Permet de changer le remote shell par défaut. Très utile pour spécifier un port différent pour SSH. Exemple : `-e "ssh -p 2222"`
|
||||
* `-C`, `--cvs-exclude` : Ignore automatiquement les fichiers temporaires, à la manière de CVS
|
||||
|
||||
|
||||
## Serveur rsync
|
||||
|
||||
Activation via `/etc/default/rsync` :
|
||||
|
||||
~~~
|
||||
RSYNC_ENABLE=true
|
||||
~~~
|
||||
|
||||
Il faut définir au minimum des répertoires dans le fichier `/etc/rsyncd.conf` :
|
||||
|
||||
~~~
|
||||
[rsync_shares]
|
||||
path = /home/rsync_shares
|
||||
~~~
|
||||
|
||||
Le démon tourne par défaut sur le port TCP/873 :
|
||||
|
||||
~~~
|
||||
873/tcp open rsync
|
||||
~~~
|
||||
|
||||
Et l'on peut l'utiliser ainsi :
|
||||
|
||||
~~~
|
||||
$ rsync -aASvn --delete --numeric-ids /home example.com::rsync_shares/
|
||||
~~~
|
||||
|
||||
|
||||
## FAQ
|
||||
|
||||
### file has vanished
|
||||
|
||||
Cela signifie que des fichiers ont été modifiés pendant le transfert.
|
||||
|
||||
### connection unexpectedly closed
|
||||
|
||||
Si l'on obtient un erreur ressemblant à :
|
||||
Si l'on obtient une erreur ressemblant à :
|
||||
|
||||
~~~
|
||||
Write failed: Broken pipe
|
||||
|
|
Loading…
Reference in a new issue