Générateur de commande rsync

Construisez des commandes rsync pour copies locales, sauvegardes et transferts SSH, chaque flag expliqué.

Ce générateur de commande rsync construit une ligne prête à coller sans vous faire douter des flags. Décrivez la copie en mots simples : tapez une source et une destination, indiquez si l'un des côtés est une machine distante atteinte via SSH, puis cochez ce que vous voulez, archive, verbeux, compression, tailles lisibles, progression et reprise, une simulation, un motif d'exclusion, ou un miroir complet avec --delete. La commande se met à jour en direct et chaque flag est détaillé dessous, pour que vous appreniez ce que fait chacun au lieu de coller de la magie. Activez --delete et un avertissement rouge apparaît, parce que ce flag aligne la destination en miroir et peut retirer des fichiers que vous vouliez garder. Les presets couvrent push, pull, miroir et reprise, et tout tourne en local dans votre navigateur.

100% dans votre navigateur. Rien de ce que vous tapez ne quitte cette page.

générateur de commande rsync

Besoin d'une commande rsync sans avoir à douter de chaque flag ? Tapez une source et une destination, indiquez si l'un des deux côtés vit sur une machine distante, cochez ce que vous voulez. Vous obtenez une commande à coller directement dans un terminal. Activez --delete et un avertissement rouge apparaît, parce que franchement, ce flag-là a déjà avalé pas mal de sauvegardes. Tout tourne dans votre navigateur, rien ne quitte la page.

$

Ce que fait ce générateur de commande rsync

Ce générateur de commande rsync construit la ligne exacte sans vous faire douter des flags. rsync copie et synchronise des fichiers, en local ou via SSH, et il ne déplace que ce qui a réellement changé. Du coup le deuxième passage est rapide. Le troisième l'est encore plus. C'est pour ça qu'on le retrouve sous tant de scripts de sauvegarde et de pipelines de déploiement. Les flags, c'est une autre histoire. Il y en a des dizaines, et un mauvais mélange (oui, c'est toi que je regarde, --delete) peut effacer des données que vous vouliez garder. Ici, vous décrivez simplement la copie en mots simples et la commande exacte tombe toute seule, chaque flag détaillé, avec un avertissement bien visible avant tout ce qui mord.

Le modèle mental n'est pas compliqué. rsync prend une source et une destination, puis il aligne la destination sur la source pour tout ce qu'il copie. Ce qui fait trébucher les gens, c'est un seul caractère : le slash final. src/ copie le contenu de src dans la destination. Enlevez le slash et src copie le dossier lui-même, et vous vous retrouvez avec un répertoire imbriqué dans un autre. Un petit détail qui m'a déjà mordu plus d'une fois.

Les flags qui comptent

  • -a (archive) est celui que vous utiliserez presque à chaque fois. Il veut dire récursif, et il préserve les permissions, les timestamps, les symlinks, les propriétaires, tout ça en une seule lettre.
  • -v (verbose) liste ce qui a bougé. Associez-le à -h pour que les tailles s'affichent en Ko ou Mo au lieu d'un mur d'octets.
  • -z (compress) compresse les données sur le réseau. Génial sur un lien lent. Sur un LAN rapide ou une copie locale, ça ne fait que brûler du CPU pour rien, donc passez votre chemin là-dessus.
  • -P regroupe --partial et --progress en un seul : une barre de progression, plus il garde les fichiers à moitié transférés pour qu'un gros transfert interrompu reprenne là où il s'est arrêté.
  • --dry-run (-n) fait semblant. Il liste ce qui changerait et ne touche à rien. Je le lance avant n'importe quel vrai sync dont je ne suis pas totalement sûr, et vous devriez sans doute faire pareil.
  • --delete efface sur la destination les fichiers qui ne sont plus dans la source, ce qui en fait un vrai miroir. Utile. Et aussi le flag le plus susceptible de gâcher votre après-midi.

Local, push et pull

Mettez un préfixe user@host: d'un côté ou de l'autre et rsync se débrouille tout seul pour passer par SSH. Aucun flag supplémentaire. Un push envoie des fichiers locaux vers un serveur : rsync -avz ./site/ user@web:/var/www/. Un pull les ramène : rsync -avz user@web:/var/www/ ./backup/. SSH tourne sur un autre port ? Rajoutez -e 'ssh -p 2222'. Chiffré, reprenable, et il ne s'étrangle pas sur une connexion qui lâche en plein milieu, ce qui explique pourquoi les gens s'appuient dessus pour déplacer de gros jeux de données entre machines.

Toujours un dry-run avant --delete

Voilà le piège avec --delete. Pointez la source sur le mauvais chemin, ou glissez un slash final qui change discrètement la structure, et rsync fera exactement ce que vous lui avez dit : supprimer les fichiers de destination pour coller à la source. Ce n'est pas malveillant. C'est obéissant, ce qui est pire. Donc ajoutez --dry-run d'abord, lisez vraiment la liste de ce qu'il veut retirer, et seulement après, lancez-le pour de vrai. C'est toute la raison pour laquelle ce générateur colle un avertissement rouge sur --delete et fournit un preset dry-run.

Confidentialité et fonctionnement de l'outil

Le JavaScript construit la commande directement ici, dans votre navigateur. Vos chemins et noms d'hôtes ne sont envoyés nulle part, et rien n'est journalisé. Ça compte sur cette page plus qu'ailleurs, vu que la moitié de ce que vous y tapez, ce sont de vrais noms de serveurs.

Questions fréquentes

Que veut dire rsync -avz ?

Trois flags regroupés. -a, c'est le mode archive : il récurse et garde intactes les permissions, les timestamps, les symlinks et les propriétaires. -v le fait juste parler, en listant ce qu'il a déplacé. -z compresse au passage. Vous croiserez -avz partout pour copier une arborescence, surtout parce que sur un réseau, c'est la combinaison qui marche tout simplement.

Pourquoi le slash final sur la source change-t-il quelque chose ?

Un slash à la fin veut dire le contenu de ce dossier. Donc rsync -a src/ dst/ dépose les fichiers de src directement dans dst. Perdez le slash et rsync -a src dst/ copie le dossier lui-même, ce qui vous laisse avec dst/src/. Un seul caractère. C'est sans doute l'erreur rsync la plus courante, et oui, je l'ai faite moi aussi.

Comment faire un rsync via SSH sur un port personnalisé ?

L'option -e s'en charge : rsync -avz -e 'ssh -p 2222' src/ user@host:/dest/. Indiquez un port non standard en haut et le générateur l'écrit pour vous. Honnêtement, cela dit, si vous tapez souvent sur le même hôte, je mettrais juste le port une bonne fois dans ~/.ssh/config et je laisserais tomber -e pour toujours.

Que supprime réellement --delete ?

Il retire tout ce qui est sur la destination mais pas dans la source, pour que les deux finissent en miroir exact. La source n'est jamais touchée, ne vous inquiétez pas pour ça. Ce qu'il faut craindre, c'est un chemin source vide ou erroné, parce que rsync recopiera joyeusement ce vide par-dessus votre destination. Lancez --dry-run d'abord et lisez la liste des suppressions avant de valider.

Comment reprendre un transfert interrompu ?

Dégainez -P, qui n'est que --partial --progress en raccourci. La moitié --partial est celle qui compte : elle garde le morceau déjà passé, pour qu'une relance continue au lieu de repartir du fichier complet à zéro. Sur une connexion capricieuse avec de gros fichiers, c'est la différence entre agaçant et insupportable.