Mémo rsync pour mes collègues
Par Mathieu le lundi 17 juillet 2017, 15:01 - Hacks - Lien permanent
Un rappel de l'usage pratique de rsync pour mes collègues qui oublient tout le temps les commandes à taper.
Format de base
rsync arguments source destination
Arguments courants
-r : récursif (copie les dossiers et leur contenu)
-a : récursif + conserve permissions et propriétaire (si root)
-u : ne pas changer les fichiers plus récents dans la destination
-v : verbeux (affiche les fichiers et dossiers affectés)
-z : compression du tunnel (pour une connexion fibrée vers des machines lowcost, on peut omettre le paramètre pour soulager le CPU)
--exclude : exclus certains chemins d'accès de la synchronisation. Attention, les chemins sont relatifs au chemin la source.
--dry-run : montre les opérations sans rien toucher
--delete : efface les dossiers supplémentaires de la destination
Format de "source" et "destination"
login@hôte:/chemin/dacces/
Attention avec l'utilisation du récursif (activé avec "-r" ou "-a"), le / à la fin du chemin de la source est important.
Exemples d'usages corrects
| Usage | Source | Destination | Résultat | Remarques |
|---|---|---|---|---|
| Envoyer un fichier dans un dossier | /chemin/source/fichier |
/chemin/destination/dossier/ |
/chemin/destination/dossier/fichier | |
| Envoyer des fichiers dans un dossier | /chemin/source/* |
/chemin/destination/dossier/ |
/chemin/destination/dossier/fichier1 /chemin/destination/dossier/fichier2 /chemin/destination/dossier/fichier3 ... |
|
| Envoyer un dossier dans un dossier | /chemin/source/dossier |
/chemin/destination/ |
/chemin/destination/dossier | Ne pas confondre avec la ligne 5 ! |
| Synchroniser deux fichiers | /chemin/source/fichier1 | /chemin/destination/fichier2 | /chemin/destination/fichier2 | |
| Synchroniser deux dossiers | /chemin/source/dossier1/ | /chemin/destination/dossier2/ | /chemin/destination/dossier2 | Ne pas confondre avec la ligne 3 ! |
Exemples de mésusages
| Mésusage | Source | Destination | Résultat | Remarques |
|---|---|---|---|---|
| Envoyer un dossier dans un dossier | /chemin/source/dossier/ | /chemin/destination/ | /chemin/destination/ |
Va synchroniser les deux dossiers au lieu de placer dossier/ dans destination/ Si des fichiers ont le même nom, ils seront remplacés. Particulièrement dangereux aussi avec --delete |
Exemples d'utilisations correctes
| Usage | Commande | Résultat |
|---|---|---|
| Envoyer un fichier dans un dossier distant | rsync --dry-run -azv /source/fichier login@serveur:/destination/dossier/ |
Sur serveur : /destination/dossier/fichier |
| Envoyer des fichiers dans un dossier distant | rsync --dry-run -azv /source/* login@serveur:/destination/dossier/ |
Sur serveur : /destination/dossier/fichier1 |
| Envoyer des fichiers dans un dossier distant et efface les autres fichiers contenus dans le dossier de destination |
rsync --dry-run --delete -azv /source/* login@serveur:/destination/dossier/ |
Sur serveur : /destination/dossier/fichier1 |
| Envoyer un dossier dans un dossier | rsync --dry-run -azv /source/dossier login@serveur:/destination/ |
Sur serveur : /destination/dossier |
| Synchroniser deux fichiers | rsync --dry-run -azv /source/fichier1 login@serveur:/source/fichier2 |
Sur serveur : /destination/fichier2 |
| Synchroniser deux dossiers | rsync --dry-run -azv /source/dossier1/ login@serveur:/source/dossier2/ |
Sur serveur : /destination/dossier2 |
| Synchroniser deux dossiers et efface les autres fichiers présents dans le dossier de destination |
rsync --dry-run --delete -azv /source/dossier1/ login@serveur:/source/dossier2/ |
Sur serveur : /destination/dossier2 |