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 |