Construire une commande rsync sûre, la copier, puis la lancer
rsync est l'outil standard pour copier des fichiers entre deux endroits (un dossier local, un autre dossier, un serveur distant en SSH) et ne transférer que ce qui a vraiment changé. Cela le rend parfait pour les sauvegardes, déploiements de sites web, mirroring d'un NAS, sync entre deux machines. Le hic : la ligne de commande a 50+ flags, l'ordre compte, et une faute de frappe avec `--delete` peut effacer des données que vous vouliez garder.
Ce builder vous donne la commande complète dans un aperçu en direct : choisissez un preset (deploy, backup, mirror), activez les flags que vous voulez, remplissez source et destination, et copiez le résultat. Il affiche le gotcha du trailing slash comme un diagramme visuel (`src/` versus `src` change ce qui est copié), vous avertit avant d'armer `--delete` sans `--dry-run`, et présente la commande avec des continuations de ligne pour que vous puissiez la lire avant de coller dans un terminal.
Tout tourne dans votre navigateur : rien n'est envoyé nulle part, aucune connexion SSH n'est faite, l'outil construit juste du texte. Collez le résultat dans votre propre shell quand vous êtes prêt.
Comment l'utiliser
- Choisissez un scénario en haut : local vers local, local vers distant (push sur SSH), distant vers local (pull), ou distant vers distant. Les placeholders source et destination se mettent à jour pour que vous connaissiez le format.
- Tapez la source (le dossier d'où vous copiez) et la destination (où ça atterrit). Pour les chemins distants, utilisez `user@host:/absolute/path`.
- Faites attention au trailing slash sur la source. Avec `/var/www/site/` vous copiez le contenu du dossier. Sans le slash (`/var/www/site`) vous copiez le dossier lui-même comme sous-répertoire de la destination. Le diagramme à droite montre ce qui se passe dans votre état actuel.
- Choisissez un mode : Archive (préserver tout), Backup (garder les anciennes versions dans un dossier latéral), Mirror (rendre la destination exactement égale à la source, supprime les extras), Deploy (compressé, mirrored, saute `.git`), ou Custom pour activer les flags vous-même.
- Ouvrez Transfer options pour ajouter la compression (`-z`, utile en SSH), la progression (`--progress`), des niveaux verbose, le dry run (`-n`, recommandé pour le premier passage), ou delete extras (`--delete`, dangereux).
- Ajoutez des patterns d'exclusion (un par ligne, par ex. `.git`, `node_modules`, `*.log`) et des patterns d'inclusion si vous avez besoin que rsync garde des fichiers spécifiques dans un dossier autrement exclu.
- Pour les cibles SSH, remplissez le port et le fichier d'identité (clé privée) sous SSH options. Le builder l'enveloppe dans `-e "ssh -p N -i path/key"` pour vous.
- Copiez la commande complète depuis le panneau de droite et collez-la dans votre terminal. Lancez toujours `--dry-run` d'abord quand des flags destructifs sont activés.
Quand c'est utile
Huit scénarios où construire la commande rsync à l'avance vous évite une mauvaise surprise :
- Déployer un site web sur un VPS. Vous avez changé quelques fichiers localement et vous les voulez sur le serveur. `rsync -avz --delete --exclude='.git' --exclude='node_modules' /local/site/ user@host:/var/www/site/`. Seuls les fichiers changés traversent le réseau, la destination finit identique à votre source, et vos dossiers de contrôle de version restent hors de l'upload.
- Sauvegarde nocturne d'un dossier home vers un NAS. Montez le NAS, puis `rsync -avh --delete /home/me/ /mnt/nas/backup/me/`. Après la première exécution (qui copie tout), chaque exécution suivante prend des secondes parce que seuls les diffs bougent.
- Récupérer un dump de logs serveur pour analyse. `rsync -avz --progress user@prod:/var/log/app/ ./logs/`. Le flag `--progress` vous montre un ETA par fichier, utile quand le dump fait 5 Go.
- Déplacer des photos d'une carte SD. `rsync -avh --progress /Volumes/SDCARD/DCIM/ ~/Pictures/2026/`. rsync vérifie chaque fichier après copie, contrairement à un simple glisser-déposer dans Finder qui peut silencieusement tronquer un fichier si la carte est arrachée trop tôt.
- Mirror d'un dump de base de données production entre deux serveurs. `rsync -avz --partial --append --bwlimit=5000 server-a:/dumps/ server-b:/dumps/`. La limite de bande passante empêche le transfert de saturer le uplink du bureau. `--partial --append` vous laisse reprendre si la connexion SSH chute à mi-chemin d'un dump de 50 Go.
- Synchroniser vos dotfiles entre laptop et desktop. `rsync -avh --exclude-from=excludes.txt ~/dotfiles/ desktop:~/dotfiles/`. Plus facile que git quand vous ne voulez pas de dépôt, plus rapide que copier à la main.
- Nettoyer une destination qui a dérivé hors sync. La destination a des fichiers que votre source n'a plus. `rsync -avn --delete /src/ /dest/` (notez le `-n` pour dry run) liste exactement ce qui serait enlevé. Une fois que ça a l'air bien, supprimez le `-n` et lancez pour de vrai.
- Migrer un serveur vers du nouveau matériel. `rsync -avzAX --numeric-ids --delete /` depuis l'ancienne box vers la nouvelle (en SSH, en root, avec soin) préserve les permissions, ACLs et attributs étendus pour que le nouveau serveur boote dans le même état.