Guide
Utiliser rsync avec un téléphone Android et un Mac
rsync a besoin d’un dossier à chaque bout. Une fois monté comme volume, le téléphone en est un, et rsync s’y utilise comme sur n’importe quel disque, avec deux petits ajustements pour le stockage d’Android.
rsync ne peut pas atteindre un téléphone qui vit dans la fenêtre d’une app, comme le montrent Android File Transfer et OpenMTP, car il lui faut un chemin de chaque côté. Montez plutôt le téléphone comme un volume, et copier la pellicule sur le Mac tient en une commande :
rsync -av --progress "$PHONE/DCIM/Camera/" ~/Pictures/Phone/
Du téléphone vers le Mac, elle fonctionne telle quelle. Vers le téléphone, utilisez -rt au lieu de -a, car le stockage du téléphone ne peut pas garder les permissions du Mac, et on ne peut pas y créer de liens symboliques. Essayez toute nouveauté d’abord avec -n, et maniez --delete avec prudence. Sans montage, les commandes pull et push d’adb, et un outil appelé better-adb-sync, font une partie du même travail.
Trouver le chemin du téléphone
SideMount monte le téléphone par le câble USB comme un volume que le Finder affiche comme un disque (la configuration prend quelques minutes). Il ne se trouve pas dans /Volumes : c’est un dossier au nom du téléphone dans ~/Library/Application Support/SideMount/Volumes/. Le stockage interne du téléphone est la racine du volume, et une carte SD est un dossier nommé SD Card à l’intérieur.
Inutile de taper ce chemin. Dans le Terminal, tapez PHONE= sans espace, faites glisser le volume du téléphone depuis le Finder dans la fenêtre, et appuyez sur Retour. Le Terminal écrit le chemin pour vous, avec une barre oblique inverse devant chaque espace. À partir de là, "$PHONE" désigne le téléphone dans toutes les commandes de cette fenêtre. Gardez les guillemets doubles : le chemin contient un espace.
Copier les photos du téléphone
rsync -av --progress "$PHONE/DCIM/Camera/" ~/Pictures/Phone/
-acopie le dossier et tout son contenu, et garde la date de modification de chaque fichier.-vliste chaque fichier, et--progressmontre où en est chacun.- La barre oblique à la fin de
Camera/compte. Avec elle, les photos arrivent directement dans~/Pictures/Phone. Sans elle, rsync crée~/Pictures/Phone/Cameraet les y place.
Lancez la même commande la semaine suivante et rsync ne copie que les nouvelles photos : il compare la taille et la date de modification de chaque fichier des deux côtés et ignore ceux qui correspondent. Les captures d’écran sont en général dans Pictures/Screenshots ou DCIM/Screenshots, et se copient avec la même commande et ce chemin.
Un dossier de milliers de petits fichiers prend plus de temps que sa taille ne le laisse penser. Chaque fichier a un coût fixe sur le câble, quel que soit l’outil qui le copie, donc quelques centaines de photos passent vite, et le dossier de médias d’une messagerie, non.
Essayer d’abord avec -n
rsync -avn "$PHONE/DCIM/Camera/" ~/Pictures/Phone/
-n, ou --dry-run, liste tout ce que rsync copierait et ne copie rien. C’est une simulation. Faites-en une chaque fois que vous changez un chemin ou ajoutez une option, et à chaque fois avant --delete.
Faire un miroir avec --delete
--delete fait de la destination une copie exacte de la source : tout fichier présent dans la destination mais absent de la source est supprimé. Cela convient à un dossier de musique que vous gardez sur le Mac et auquel le téléphone doit correspondre, comme dans copier sa musique d’un Mac vers Android. La simulation d’abord, puis la vraie commande :
rsync -rtn --delete --exclude '.DS_Store' ~/Music/Phone/ "$PHONE/Music/"
rsync -rt --delete --progress --exclude '.DS_Store' ~/Music/Phone/ "$PHONE/Music/"
Lisez la simulation avant de lancer la deuxième ligne. Un chemin erroné, ou une barre oblique oubliée après la source, peut diriger --delete vers un dossier que vous ne visiez pas, et la suppression est définitive : rien ne passe par une corbeille, d’un côté comme de l’autre. Ne l’utilisez jamais non plus sur une sauvegarde faite depuis le téléphone. Une photo supprimée du téléphone disparaîtrait alors de la sauvegarde au passage suivant, ce qui ruine l’intérêt de la sauvegarde.
Le --exclude '.DS_Store' est là parce que le Finder laisse ces fichiers dans les dossiers du Mac, et qu’ils ne servent à rien sur un téléphone.
Laisser de côté les miniatures
rsync -av --progress --exclude '.thumbnails' "$PHONE/DCIM/" ~/Pictures/Phone-DCIM/
Sur les téléphones plus anciens, les apps de galerie mettent les miniatures en cache dans DCIM/.thumbnails, qui peut devenir volumineux et que le téléphone reconstruit au besoin. Un motif sans barre oblique correspond à n’importe quelle profondeur, donc --exclude '.thumbnails' ignore ce dossier où qu’il soit. --exclude '.*' va plus loin et ignore tous les fichiers et dossiers cachés.
Pourquoi -a est une mauvaise habitude vers le téléphone
-a est le raccourci de -rlptgoD. Sur un disque du Mac, tout cela a un sens. Sur le stockage partagé d’un téléphone, plusieurs de ces options n’en ont pas :
-p,-oet-gcopient les permissions, le propriétaire et le groupe. Le stockage partagé d’Android ne les conserve pas par fichier, donc elles n’ont rien à régler. Le téléphone monté accepte la demande et l’ignore, la copie passe, mais rsync retrouve la même différence au passage suivant et redemande.-lcopie les liens symboliques en tant que liens, et on ne peut pas créer de lien sur le téléphone monté, donc chacun échoue. Si votre dossier contient des liens,-Lcopie à la place les fichiers vers lesquels ils pointent.-Dcopie les fichiers de périphérique, qu’un dossier de photos ou de musique n’a jamais.
Ce qui compte dans le reste, c’est -r et -t. Vers le téléphone, utilisez donc -rt, ou gardez -a et ajoutez --no-perms --no-owner --no-group. Gardez -t dans tous les cas. Le téléphone conserve les dates de modification, et sans elles chaque fichier semble modifié, donc chaque passage recopie tout.
Reste une bizarrerie de dates, sur les cartes SD. Une carte formatée en FAT32 ne stocke les dates qu’à deux secondes près, donc un fichier peut sembler décalé d’une seconde et être recopié à chaque passage. Ajoutez --modify-window=1, qui dit à rsync de traiter comme identiques deux dates séparées d’une seconde.
Laissez aussi de côté -c (--checksum). Il lit chaque fichier en entier des deux côtés pour les comparer, ce qui, sur le téléphone, revient à faire passer chaque fichier par le câble. La taille et la date suffisent.
Le rsync de votre Mac
Lancez rsync --version sur un Mac récent et il répond :
openrsync: protocol version 29
rsync version 2.6.9 compatible
Depuis macOS 15.4, Apple fournit openrsync, une réécriture sous licence de type BSD, à la place du rsync 2.6.9 sous GPL qu’il gardait depuis des années. Il accepte une partie des options de rsync, et toutes les commandes de cette page fonctionnent avec lui. Pour les extras de rsync 3, comme --info=progress2 pour une seule ligne de progression sur toute la copie, installez-le avec Homebrew (brew install rsync) ; la copie de Homebrew passe en général en premier dans le Terminal ensuite.
Sans montage : les outils d’adb
| Outil | Ne copie que ce qui a changé | Simulation | Miroir avec suppressions | Motifs d’exclusion |
|---|---|---|---|---|
| rsync, téléphone monté avec SideMount | Oui, par taille et date | Oui, -n | Oui, --delete | Oui, --exclude |
adb pull -a | Non, copie tout | Non | Non | Non |
adb push --sync | Vers le téléphone, par horodatage | Son -n envoie quand même les données | Non | Non |
| better-adb-sync | Oui | Oui, -n | Oui, --del | Oui, --exclude |
Tous demandent le débogage USB sur le téléphone ; l’activer prend une minute. Les outils adb demandent aussi les outils de plateforme Android de Google sur le Mac.
adb pull -a /sdcard/DCIM/Camera ~/Pictures/copie tout le dossier dans~/Pictures/Camera, en gardant la date et le mode de chaque fichier. Il copie tout, à chaque fois.adb push --synccopie les fichiers vers le téléphone et ignore ceux dont l’horodatage correspond déjà. Il ne supprime jamais rien.- better-adb-sync est ce qui se rapproche le plus de rsync via adb :
pip install BetterADBSync, puisadbsync pullouadbsync push, avec--dry-run,--excludeet--del. C’était au départ une réécriture d’adb-sync, l’outil de Google, archivé en mars 2025 et qui renvoie désormais vers lui.
Un seul programme à la fois peut tenir la connexion adb d’un téléphone. Si SideMount tient le téléphone, éjectez-le d’abord, ce qui libère le téléphone. Si votre serveur adb tournait déjà avant l’éjection, lancez une fois adb kill-server pour qu’il cherche à nouveau le téléphone.
Questions
rsync peut-il copier des fichiers d’un téléphone Android sans le monter ?
Non. rsync a besoin d’un chemin de chaque côté, et une app MTP comme OpenMTP n’affiche le téléphone que dans sa propre fenêtre. Montez le téléphone comme un volume pour qu’il ait un chemin, ou utilisez un outil basé sur adb comme adb pull ou better-adb-sync, qui parlent directement au téléphone.
Pourquoi rsync -a se comporte-t-il mal vers un téléphone Android ?
-a demande de copier les permissions, les propriétaires, les groupes et les liens symboliques, et le stockage partagé d’un téléphone ne garde rien de tout cela. Utilisez -rt vers le téléphone, ou -a --no-perms --no-owner --no-group. Gardez -t, pour que rsync sache quels fichiers ont changé.
Quel rsync est fourni avec macOS ?
Depuis macOS 15.4, c’est openrsync, qui répond « openrsync : protocol version 29 » et « rsync version 2.6.9 compatible ». Il gère -rt, -n, --progress, --delete et --exclude. Pour le rsync 3 complet, installez-le avec brew install rsync.
rsync --delete est-il sans risque avec un téléphone ?
Seulement après une simulation. Lancez d’abord la même commande avec -n et lisez la liste, car les fichiers qu’il supprime sont perdus pour de bon. Utilisez-le pour aligner le téléphone sur un dossier du Mac, jamais sur une sauvegarde faite depuis le téléphone, où il supprimerait les photos que vous avez retirées du téléphone.
Pourquoi rsync recopie-t-il tous les fichiers à chaque passage ?
En général parce que -t manque, donc les copies portent la date de leur création et ne correspondent jamais aux originaux. Sur une carte SD en FAT32, les dates ne sont stockées qu’à deux secondes près ; ajoutez --modify-window=1 pour que rsync considère comme égales deux dates séparées d’une seconde.
Votre téléphone Android, dans le Finder.
Gratuit pendant sept jours, sans carte bancaire. macOS 26 ou ultérieur.