La synchronisation entre un tĂ©lĂ©phone et un ordinateur Ă gĂ©nĂ©ralement pour but de copier les photos et vidĂ©os prisent par le tĂ©lĂ©phone sur lâordinateur. De nombreuses solutions existent (parfois Ă votre insu) et pour nâen citer quâune je pense Ă Nextcloud.
Ici, on parlera de lâopĂ©ration rĂ©ciproque, qui consiste Ă copier des documents depuis un ordinateur et de les maintenir Ă jour sur le tĂ©lĂ©phone.
Quel type de besoin ?
Eh bien cela dĂ©pend de vos besoins, mais pour donner des exemples je pense aux sons et fonds dâĂ©crans personnalisĂ©s. Mais Ă©galement vos musiques prĂ©fĂ©rĂ©es.
On peut aussi imaginer que vous préparer sur votre ordinateur :
- Un dossier contenant des films/séries à regarder pour vos WE ou déplacement,
- Un ensemble de dossier contenant une sélection de vos photos préférées.
Des dossiers que vous synchroniserez périodiquement.
La solution proposée ci-dessous permet en fait de faire la synchronisation dans les deux sens.
Si vous synchroniser des donnĂ©es de votre ordinateur vers votre tĂ©lĂ©phone, assurez que dâĂ©ventuel programmes de synchronisation prĂ©sent sur le tĂ©lĂ©phone ne prennent pas en compte les dossiers oĂč son stoker ces donnĂ©es.
La base technique sur lâordinateur
- Un client ssh configurer avec une paire de clé,
- Ăventuellement la commande nmap pour rechercher automatiquement lâadresse IP du tĂ©lĂ©phone.
La base technique sur le téléphone
Un serveur SSH, je vous propose đ» SimpleSSHD un serveur SSH pour Android en utilisant votre clĂ© publique (en gĂ©nĂ©ral ~/.ssh/id_rsa.pub
ou ~/.ssh/id_ed25519.pub
).
Le tĂ©lĂ©phone et lâordinateur doivent ĂȘtre sur le mĂȘme rĂ©seau local.
Une fois SimpleSSHD dĂ©marrĂ©, vous verrez un Ă©cran de ce type qui vous donnera les adresses dâĂ©coutes de lâapplication.
On ignorera les adresses en IPv6 un peu longues Ă Ă©crire (partiellement floutĂ©es sur la capture dâĂ©cran) et vous rechercherez une IP correspondant Ă un rĂ©seau prĂ©sent sur lâordinateur.
Ici, il sâagit de lâadresse IP 192.168.2.72
.
- On ignorera les adresses en IPv6 (Celles dont les valeurs sont séparées par
:
) - Lâadresse Ă prendre en compte commence par
192.168.
(sauf manipulation particuliÚre sur votre réseau que montre que vous savez ce que vous faite)
Usage basé sur « rsync »
Ici, on suppose que vous avec garder le port par défaut de SimpleSSHD, à savoir le port 2222
.
Dans notre exemple lâadresse du tĂ©lĂ©phone sur le rĂ©seau local est : 192.168.2.72
.
rsync --compress --copy-links --delete --progress --recursive --update --verbose -e 'ssh -p 2222' ~/Pictures/photos-pour-telephone user@192.168.2.72:/sdcard/Pictures.local/
rsync
 : la commande permet de faire des copies de fichiers efficaces entre deux machines, elle se base sur le protocole SSH.-z
,--compress
 : active la compression des transferts (optionnel)-L
,--copy-links
 : Android ne supporte pas les liens symboliques, en cas de lien, câest la cible qui est copiĂ©e.--delete
 : Supprime sur la destination les fichiers qui nâexistent pas sur la source.--progress
 : Informe sur la progression des copies (optionnel)-r
,--recursive
 : copie lâensemble du contenu des rĂ©pertoires rĂ©cursivement.-u
,--update
 : Saute les fichiers plus récents sur la destination que sur la source (optionnel)-v
,--verbose
 : Active un affichage plus loquace-e 'ssh -p 2222'
,--rsh='ssh -p 2222'
 : Permet de modifier le shell utilisé par la communication (détails ci-aprÚs)ssh
 : On garde ssh-p 2222'
 : mais on change le port de communication (Important)
~/Pictures/photos-pour-telephone
 : Le dossier source (ici un dossier local de l'ordinateur)user@192.168.2.72:/sdcard/Pictures.local/
 : Le dossier destinationuser
 : Lâapplication SimpleSSHD ne supporte quâun seul utilisateur, son nomuser
192.168.2.72
 :lâadresse IP du tĂ©lĂ©phone/sdcard/Pictures.local/
: Le répertoire de destination sur le téléphone.
On peut faire lâinverse copier des donnĂ©es de tĂ©lĂ©phone sur lâordinateur :
mkdir -vp ~/Desktop/PhoneCamera # Création du dossier qui va recevoir les médias
rsync --compress --copy-links --delete --progress --recursive --update --verbose -e 'ssh -p 2222' user@192.168.1.73:/sdcard/DCIM/Camera/ ~/Desktop/PhoneCamera
En général, on peut accéder aux photos de la caméra du téléphone avec le chemin /sdcard/DCIM/Camera
mĂȘme si le chemin rĂ©el est quelque chose comme /storage/emulated/0/DCIM/Camera
.
Pour copier vos données, vous devrez utiliser un chemin partant depuis `/sdcard/.
Le tĂ©lĂ©phone et lâordinateur doivent ĂȘtre sur le mĂȘme rĂ©seau local.
Les deux pĂ©riphĂ©riques doivent ĂȘtre sur le mĂȘme rĂ©seau local⊠Hum, ça veut dire quoi ?
En fait cela vous laisse pas mal de liberté :
- Les deux pĂ©riphĂ©riques sont connectĂ©s Ă la mĂȘme « box » en WIFI ou en RJ45, sans doute la plus triviale des options (Ă privilĂ©gier pour vos premiers tests),
- Avec une connexion USB direct entre les deux machines est également possible. Il faut soit activer le partage de fichier, soit le partage de connexion via USB. Cette derniÚre option est pratique en déplacement, elle vous donne accÚs aux fichiers du téléphone et à Internet.
- Avec une connexion Bluetooth direct, ça marche aussi en activant le partage de connexion via Bluetooth.
Rechercher lâIP du tĂ©lĂ©phone depuis lâordinateur
Dans le cas oĂč plusieurs adresses en IPv4, on peut dĂ©terminer le bon rĂ©seau en regardant les adresses IPv4 prĂ©sentes sur lâordinateur. Pour ce faire la connexion entre le tĂ©lĂ©phone et lâordinateur doit ĂȘtre prĂ©alablement Ă©tablie, en USB il suffit que le cĂąble soit brancher entre les deux appareils.
On va dâabord rechercher les rĂ©seaux prĂ©sents et actif sur lâordinateur (voir le billet : đ Exemples prĂȘts Ă lâemploi avec la commande « ip ») :
ip -4 --json addr show |
jq -c 'map( select( .flags | index("LOOPBACK") | not ) | select( .flags | index( "UP") ) | .addr_info[] | { "ip": .local, "len": .prefixlen } )[]'
On va par exemple obtenir quelque chose comme :
{"ip":"192.168.2.143","len":24}
{"ip":"172.17.0.1","len":16}
{"ip":"172.18.0.1","len":16}
Comme dit plus haut, le rĂ©seau quâutilise commence probablement par 192.168.
Automatisation de la recherche de lâIP
Lâautomatisation peut sembler un peu ardue, elle permet de ne pas avoir Ă regarder le tĂ©lĂ©phone pour connaĂźtre son adresse IP, cette partie est facultative.
-
AutomatisationâŠ
Certains rĂ©seaux sont Ă Ă©liminer, on va se limiter aux rĂ©seaux de classe C (ceux avec la longueur de masque Ă 24), ce qui dâaprĂšs mes tests est suffisant, par ailleurs lâanalyse des rĂ©seaux de classe B (longueur de masque Ă 16) serait beaucoup trop long.
Sur la base de notre exemple, cela revient à fixer :
_port_='2222' _ip_='192.168.2.143' _len_='24'
nmap -n -T4 -oG - -p "${_port_}" "${_ip_}/${_len_}"
-
DĂ©tail des paramĂštres de nmap
-n
 : Pas de résolution DNS-T4
 : Utilise le mode agressif pour le scan, câest le mode conseiller pour les rĂ©seaux avec de temps de rĂ©ponse raisonnable.-oG -
 : « Sortie Grepable », donne un rĂ©sultat permettant dâautomatiser lâanalyse des rĂ©sultats vers la sortie standard (le-
seul).-p <PORT>
 : Permet de limiter lâanalyse Ă un seul port.<IP>/<NOMBRE_DE_BITS>
 : Indique la cible pour la recherche. Dans lâexemple on utilise '192.168.2.143' ce qui nâest pas en terme rĂ©seau correct, il faudrait utiliser '192.168.2.0' qui est lâadresse du rĂ©seau. Mais comme le nombre de bit Ă prendre en compte est 24 (soit 3 fois 1 octet (8 bits)) la derniĂšre valeur est ignorĂ©e. En gros pour nmap '192.168.2.143' est Ă©gal Ă '192.168.2.0'
Il reste du bruit quâon peut Ă©liminer avec :
nmap -n -T4 -oG - -p "${_port_}" "${_ip_}/${_len_}" | grep -F "${_port_}/open/tcp/" | sed -E 's,^.*:[[:blank:]]([0-9.]+)[[:blank:]].*$,\1,g'
-
DĂ©tail de lâensemble des commandes
Le résultat de la commande nmap est filtré par un grep puis un sed.
grep -F '2222/open/tcp/'
 : Indique lâon ne garde que les lignes oĂč le port2222
est ouvert pour le tcp. L'option-F
servant Ă prĂ©ciser quâil ne sâagit pas dâune expression rĂ©guliĂšre, mais bien dâune expression littĂ©rale.sed -E 's,^.*:[[:blank:]]([0-9.]+)[[:blank:]].*$,\1,g'
 : Isole les caractÚres0
Ă9
et.
qui se trouvent juste aprÚs la séquence:
suivi dâun caractĂšre dâespacement et juste avant une sĂ©quence commençant par un autre caractĂšre dâespacement.
Si ce résultat vous donne plusieurs résultats, je vous conseille de modifier le port dans la configuration de SimpleSSHD, ainsi que dans le reste de la configuration, par exemple en utilisant
22222
. -
DĂ©tail des paramĂštres de nmap
Liens
- Les billets liés :
- đ» SimpleSSHD un serveur SSH pour Android qui explique comment installer lâapplication sur Android,
- đ» Monter votre tĂ©lĂ©phone comme un vrai disque,
- đ Exemples prĂȘts Ă lâemploi avec la commande « ip » pour lâautomatisation de la recherche de lâIP du tĂ©lĂ©phone,
- Documentation en français de rsync,
- Manuel de rsync [Fr], rsync [En],
- Manuel de nmap [Fr],
- La FAQ de jq en anglais,
- Le manuel de jq en anglais (Vous pouvez choisir la version de jq).
኿