wiki/HowtoRsync.md

102 lines
3.1 KiB
Markdown
Raw Normal View History

2017-12-27 15:34:42 +01:00
---
2017-12-27 15:35:22 +01:00
title: Howto Rsync
2017-12-27 15:34:42 +01:00
categories: network
...
**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.
2017-12-27 15:34:42 +01:00
* [https://rsync.samba.org/](https://rsync.samba.org/)
* [https://fr.wikipedia.org/wiki/Rsync](https://fr.wikipedia.org/wiki/Rsync)
## Installation
~~~
# apt install rsync
2017-12-27 15:34:42 +01:00
2017-12-29 17:07:25 +01:00
$ rsync --version
rsync version 3.1.2 protocol version 31
2017-12-27 15:34:42 +01:00
~~~
## Utilisation de base
2017-12-27 15:34:42 +01:00
Copier un fichier `foo.txt` vers un serveur distant `example.com` :
2017-12-27 15:34:42 +01:00
~~~
$ rsync /tmp/foo.txt example.com:/tmp/
2017-12-27 15:34:42 +01:00
~~~
Copier tout un dossier vers un serveur distant, avec `-r` ou `--recursive` :
2017-12-27 15:34:42 +01:00
~~~
$ rsync --recursive /tmp/bar example.com:/tmp/
2017-12-27 15:34:42 +01:00
~~~
Copier un dossier depuis le serveur vers son poste :
2017-12-27 15:34:42 +01:00
~~~
$ rsync -r example.com:/tmp/bar /tmp/
2017-12-27 15:34:42 +01:00
~~~
La synchronisation peut se faire localement :
2017-12-27 15:34:42 +01:00
~~~
$ rsync -r /tmp/bar/ /tmp/bar2/
2017-12-27 15:34:42 +01:00
~~~
2016-12-29 11:25:39 +01:00
2018-01-01 16:31:32 +01:00
Utiliser le mode archive, avec `-a` ou `--archive`. Ce mode est équivalent à `-rlptgoD` et préserve la plupart des attributs :
~~~
$ rsync --archive /tmp/bar example.com:/tmp/
~~~
Liste des paramètres les plus communs :
2018-01-01 16:31:32 +01:00
* `-l`, `--links` : préserve les liens symboliques
* `-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
* `-v`, `--verbose` : mode verbeux
* `-q`, `--quiet` : pas de sortie en stdout
* `-h`, `--human-readable` : les infos sont lisibles par un humain
* `-d`, `--dirs` : Copie les dossiers sans avoir besoin de lui indiquer qu'il faut le faire récursivement
2018-01-04 09:32:03 +01:00
* `--bwlimit=RATE` : Limite le transfert. Attention c'est en unité de 1024 octets. On peut mettre des suffixes. Exemple 1.5m (1.5Mo/s).
2018-01-01 16:31:32 +01:00
## Utilisation avancée
* `-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
* `--delete` : supprimer les données distantes qui sont absentes depuis la source
* `-e` : pour exécuter une commande shell
2017-12-29 14:57:54 +01:00
Exemples :
`-e` : Faire un rsync sur une serveur distant, avec un port ssh particulier :
2017-12-29 14:57:54 +01:00
~~~
2017-12-29 14:58:52 +01:00
user@serveur-A:~$ rsync -avn /home/user/ -e "ssh -p SSH_PORT" "user@serveur-B:/home/user/"
2017-12-29 14:57:54 +01:00
~~~
2016-12-29 11:25:39 +01:00
## FAQ
2017-12-29 17:08:46 +01:00
### connection unexpectedly closed
Si l'on obtient un erreur ressemblant à :
2016-12-29 11:25:39 +01:00
~~~
Write failed: Broken pipe
rsync: connection unexpectedly closed (128109911 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [receiver=3.0.7]
rsync: connection unexpectedly closed (128109911 bytes received so far) [generator]
rsync error: unexplained error (code 255) at io.c(601) [generator=3.0.7]
~~~
2017-12-29 17:08:46 +01:00
Cela peut venir dans certains cas d'un routeur coupant agressivement les sessions en cas d'inactivité. Dans ce cas, une solution est d'ajouter l'option suivante en Rsync Over SSH : `-e "ssh -o ServerAliveInterval=5"`