Guida
Usare rsync con un telefono Android e un Mac
rsync ha bisogno di una cartella a ciascun capo. Una volta montato come volume, il telefono lo diventa, e rsync funziona come su qualsiasi disco, con due piccole modifiche per la memoria di Android.
rsync non può raggiungere un telefono che vive dentro la finestra di un'app, come lo mostrano Android File Transfer e OpenMTP, perché ha bisogno di un percorso su entrambi i lati. Monta invece il telefono come volume, e copiare il rullino sul Mac diventa un solo comando:
rsync -av --progress "$PHONE/DCIM/Camera/" ~/Pictures/Phone/
Dal telefono al Mac funziona così com'è. Verso il telefono, usa -rt al posto di -a, perché la memoria del telefono non può conservare i permessi del Mac, e non ci si possono creare link simbolici. Prova ogni cosa nuova prima con -n, e maneggia --delete con cautela. Senza montare il telefono, i comandi pull e push di adb, e uno strumento chiamato better-adb-sync, fanno una parte dello stesso lavoro.
Trovare il percorso del telefono
SideMount monta il telefono attraverso il cavo USB come un volume che il Finder mostra come un disco (configurarlo richiede pochi minuti). Non si trova in /Volumes: è una cartella con il nome del telefono dentro ~/Library/Application Support/SideMount/Volumes/. La memoria interna del telefono è il primo livello del volume, e una scheda SD è una cartella chiamata SD Card al suo interno.
Non serve digitare quel percorso. Nel Terminale, scrivi PHONE= senza spazi, trascina il volume del telefono dal Finder nella finestra e premi A capo. Il Terminale scrive il percorso per te, con una barra rovesciata prima di ogni spazio. Da lì in poi, "$PHONE" indica il telefono in ogni comando di quella finestra. Tieni le virgolette doppie: il percorso contiene uno spazio.
Copiare le foto dal telefono
rsync -av --progress "$PHONE/DCIM/Camera/" ~/Pictures/Phone/
-acopia la cartella e tutto ciò che contiene, e conserva la data di modifica di ogni file.-velenca ogni file, e--progressmostra a che punto è ciascuno.- La barra finale di
Camera/conta. Con la barra, le foto finiscono direttamente in~/Pictures/Phone. Senza, rsync crea~/Pictures/Phone/Camerae le mette lì.
Esegui lo stesso comando la settimana dopo e rsync copia solo le foto nuove: confronta dimensione e data di modifica di ogni file sui due lati e salta quelli che coincidono. Gli screenshot di solito sono in Pictures/Screenshots o DCIM/Screenshots, e basta lo stesso comando con quel percorso.
Una cartella di migliaia di file piccoli richiede più tempo di quanto la sua dimensione lasci pensare. Ogni file ha un costo fisso sul cavo, qualunque strumento lo copi, quindi qualche centinaio di foto passa in fretta e la cartella dei media di un'app di messaggistica no.
Provare prima con -n
rsync -avn "$PHONE/DCIM/Camera/" ~/Pictures/Phone/
-n, o --dry-run, è una simulazione: elenca tutto ciò che rsync copierebbe e non copia nulla. Usalo ogni volta che cambi un percorso o aggiungi un'opzione, e sempre prima di --delete.
Creare una copia speculare con --delete
--delete rende la destinazione una copia esatta dell'origine: ogni file nella destinazione che non è nell'origine viene eliminato. È adatto a una cartella di musica che tieni sul Mac e che vuoi rispecchiata sul telefono, come in copiare musica da un Mac ad Android. Prima la simulazione, poi il comando vero:
rsync -rtn --delete --exclude '.DS_Store' ~/Music/Phone/ "$PHONE/Music/"
rsync -rt --delete --progress --exclude '.DS_Store' ~/Music/Phone/ "$PHONE/Music/"
Leggi la simulazione prima di eseguire la seconda riga. Un percorso sbagliato, o una barra mancante dopo l'origine, può puntare --delete su una cartella che non intendevi, e l'eliminazione è definitiva: non finisce nulla nel Cestino, da nessuna delle due parti. E non usarlo mai su un backup fatto dal telefono. Una foto che elimini sul telefono sparirebbe dal backup all'esecuzione successiva, e il backup non servirebbe più a nulla.
L'opzione --exclude '.DS_Store' c'è perché il Finder lascia quei file nelle cartelle del Mac, e a un telefono non servono.
Escludere le miniature
rsync -av --progress --exclude '.thumbnails' "$PHONE/DCIM/" ~/Pictures/Phone-DCIM/
Le app galleria dei telefoni più vecchi memorizzano le miniature in DCIM/.thumbnails, una cartella che può diventare grande e che il telefono ricrea quando serve. Uno schema senza barra vale a qualsiasi profondità, quindi --exclude '.thumbnails' salta quella cartella ovunque si trovi. --exclude '.*' va oltre e salta tutti i file e le cartelle nascosti.
Perché -a è un'abitudine sbagliata verso il telefono
-a è l'abbreviazione di -rlptgoD. Su un disco del Mac hanno tutte senso. Sulla memoria condivisa di un telefono, diverse no:
-p,-oe-gcopiano permessi, proprietario e gruppo. La memoria condivisa di Android non li conserva per singolo file, quindi non c'è niente da impostare. Il telefono montato accetta la richiesta e la ignora, così la copia va a buon fine, ma all'esecuzione successiva rsync trova la stessa differenza e ci riprova.-lcopia i link simbolici come link, e sul telefono montato non si può creare un link, quindi ognuno fallisce. Se la tua cartella contiene link,-Lcopia invece i file a cui puntano.-Dcopia i file di dispositivo, che una cartella di foto o di musica non contiene mai.
Del resto, quello che conta sono -r e -t. Quindi verso il telefono usa -rt, oppure tieni -a e aggiungi --no-perms --no-owner --no-group. In ogni caso tieni -t. Il telefono conserva le date di modifica, e senza di esse ogni file sembra cambiato, quindi ogni esecuzione ricopia tutto.
Resta una stranezza con le date, sulle schede SD. Una scheda formattata in FAT32 memorizza le date con una precisione di soli due secondi, quindi un file può risultare spostato di un secondo ed essere ricopiato a ogni esecuzione. Aggiungi --modify-window=1, che dice a rsync di considerare uguali le date che differiscono di un secondo.
Lascia fuori anche -c (--checksum). Legge per intero ogni file su entrambi i lati per confrontarli, il che sul telefono significa far passare ogni file attraverso il cavo. Dimensione e data bastano.
La versione di rsync del tuo Mac
Esegui rsync --version su un Mac recente e la risposta è:
openrsync: protocol version 29
rsync version 2.6.9 compatible
Da macOS 15.4, Apple include openrsync, una riscrittura con licenza di tipo BSD, al posto di rsync 2.6.9 con licenza GPL che aveva tenuto per anni. Accetta una parte delle opzioni di rsync, e ogni comando di questa pagina funziona con openrsync. Per gli extra di rsync 3, come --info=progress2 per una sola riga di avanzamento per l'intera esecuzione, installalo con Homebrew (brew install rsync); da quel momento, nel Terminale di solito viene usata per prima la copia di Homebrew.
Senza montare: gli strumenti di adb
| Strumento | Copia solo ciò che è cambiato | Simulazione | Copia speculare con eliminazioni | Schemi di esclusione |
|---|---|---|---|---|
| rsync, telefono montato con SideMount | Sì, per dimensione e data | Sì, -n | Sì, --delete | Sì, --exclude |
adb pull -a | No, copia tutto | No | No | No |
adb push --sync | Verso il telefono, per data | Il suo -n invia comunque i dati | No | No |
| better-adb-sync | Sì | Sì, -n | Sì, --del | Sì, --exclude |
Tutti richiedono il debug USB sul telefono; attivarlo richiede un minuto. Gli strumenti adb richiedono anche i platform-tools di Google per Android sul Mac.
adb pull -a /sdcard/DCIM/Camera ~/Pictures/copia l'intera cartella in~/Pictures/Camera, conservando data e modalità di ogni file. Copia tutto, ogni volta.adb push --synccopia i file sul telefono e salta quelli la cui data coincide già. Non elimina mai nulla.- better-adb-sync è quanto di più vicino a rsync esista su adb:
pip install BetterADBSync, poiadbsync pulloadbsync push, con--dry-run,--excludee--del. È nato come riscrittura di adb-sync di Google, che è stato archiviato a marzo 2025 e ora rimanda a better-adb-sync.
Un solo programma alla volta può tenere la connessione adb di un telefono. Se il telefono è in uso da SideMount, prima espellilo: così SideMount lo rilascia. Se il tuo server adb era già in esecuzione prima dell'espulsione, esegui una volta adb kill-server perché cerchi di nuovo il telefono.
Domande
rsync può copiare file da un telefono Android senza montarlo?
No. rsync ha bisogno di un percorso su entrambi i lati, e un'app MTP come OpenMTP mostra il telefono solo dentro la propria finestra. Monta il telefono come volume, così ha un percorso, oppure usa uno strumento basato su adb come adb pull o better-adb-sync, che parlano direttamente con il telefono.
Perché rsync -a si comporta male quando copio su un telefono Android?
-a chiede di copiare permessi, proprietari, gruppi e link simbolici, e la memoria condivisa di un telefono non conserva nessuna di queste cose. Usa -rt verso il telefono, oppure -a --no-perms --no-owner --no-group. Tieni -t, così rsync capisce quali file sono cambiati.
Quale rsync è incluso in macOS?
Da macOS 15.4 è openrsync, che risponde «openrsync: protocol version 29» e «rsync version 2.6.9 compatible». Gestisce -rt, -n, --progress, --delete e --exclude. Per avere rsync 3 completo, installalo con brew install rsync.
rsync --delete è sicuro da usare con un telefono?
Solo dopo una simulazione. Esegui prima lo stesso comando con -n e leggi l'elenco, perché i file che elimina spariscono per sempre. Usalo per allineare il telefono a una cartella del Mac, mai su un backup fatto dal telefono, dove eliminerebbe le foto che hai tolto dal telefono.
Perché rsync ricopia tutti i file a ogni esecuzione?
Di solito perché manca -t, quindi le copie portano la data in cui sono state create e non coincidono mai con gli originali. Su una scheda SD FAT32 le date sono memorizzate con una precisione di soli due secondi; aggiungi --modify-window=1 perché rsync consideri uguali le date che differiscono di un secondo.
Il tuo telefono Android, nel Finder.
Gratis per sette giorni, senza carta di credito. macOS 26 o successivo.