Le partage natif de fichiers entre une machine Android (un tĂ©lĂ©phone) et une machine sous Linux fonctionne plutĂŽt bien, il est cependant assez lent, nâest pas complĂštement intĂ©grĂ© au systĂšme (accĂšs depuis un terminal) et nâaime pas vraiment les accĂšs concurrents (par exemple copie d'une arborescence du tĂ©lĂ©phone, et navigation d'une autre en parallĂšle).
Ici, nous allons voir une alternative corrigeant ces problĂšmes et dâautres.
Les remarques prĂ©liminaires sont valables au moins aussi pour Windows, mais je pense quâil sâagit dâune limitation du protocole utilisĂ© et donc prĂ©sent quel-que-soit le systĂšme.
Le titre de ce billet pourrait-ĂȘtre :
Comment transférer des fichiers entre Linux et Android ?
Pour accĂ©der au tĂ©lĂ©phone nous allons utiliser sshfs cĂŽtĂ© Linux et đ» SimpleSSHD cĂŽtĂ© Android.
Pour une bonne intégration au systÚme Linux interface graphique comprise, le point de montage doit se trouver dessous le dossier /media
. Vous pouvez utiliser un dossier dessous /media/${USER}
par exemple /media/${USER}/phone
mais cela peut entrer en conflit avec lâautomatisation de lâinterface graphique.
Dans le cas dâun Linux sans interface graphique, il nây a pas vraiment de contrainte.
Compte tenu de ces éléments, je vous propose de créer le point de montage sur le dossier /media/${USER}#mount-ssh/phone
.
On va d'abord créer le dossier /media/${USER}#mount-ssh
et pour cela les droits root sont requis :
sudo mkdir -vp "/media/${USER}#mount-ssh"
Pour ne pas avoir besoin dâutiliser sudo Ă chaque fois que vous monter ou dĂ©monter votre tĂ©lĂ©phone sur votre systĂšme, on va changer le propriĂ©taire de ce rĂ©pertoire :
sudo chown "${USER}:${USER}" "/media/${USER}#mount-ssh"
On pourra par la suite créer des répertoires dessous pour chaque appareil et faire le montage sans les droits administrateurs.
Voici une fonction qui implémente la création et le montage :
function mount_phone {
local -r _ip_="$1"
local -r _port_="${2:-2222}"
local -r _localdir_="${3:-android-phone}"
local -r _localdir_base_="${4:-/media/${USER}#mount-ssh}"
local -r _localdir_path_="${_localdir_base_}/${_localdir_}"
mkdir -vp "${_localdir_path_}" || return $?
(
set -x
mount -v -t sshfs -o port="${_port_}" --read-write "user@${_ip_}:/sdcard/" "${_localdir_path_}"
) || return $?
}
Qui sâutilise comme suit :
mount_phone IP [PORT] [DIRNAME] [BASENAME]
Les valeurs par défaut correspondent à la ligne :
mount_phone IP 2222 'android-phone' "/media/${USER}#mount-ssh"
Voici une fonction pour l'opération inverse:
function umount_phone {
local -r _localdir_="${1:-android-phone}"
local -r _localdir_base_="${2:-/media/${USER}#mount-ssh}"
local -r _localdir_path_="${_localdir_base_}/${_localdir_}"
(
set -x
umount "${_localdir_path_}"
) || return $?
rm -d -v "${_localdir_path_}" || return $?
}
Qui sâutilise comme suit :
umount_phone [DIRNAME] [BASENAME]
Les valeurs par défaut correspondent à la ligne :
umount_phone 'android-phone' "/media/${USER}#mount-ssh"
Exemple concret pour monter deux tĂ©lĂ©phones en mĂȘme temps
- On monte le 1er téléphone sur le point de montage par défaut :
mount_phone 192.168.2.72
Vous verrez apparaßtre un périphérique nommé android-phone
et accessible depuis /media/claude#mount-ssh/android-phone
.
On monte le second téléphone sur le point de montage android-phone2
 :
mount_phone 192.168.1.73 '' android-phone2 # ici le '' indique qu'on garde la valeur par défaut pour le port
Vous verrez apparaßtre un périphérique nommé android-phone2
et accessible depuis /media/claude#mount-ssh/android-phone2
.
Le démontage se fera comme suit pour le 1er téléphone :
umount_phone
Pour le second :
umount_phone android-phone2
Remarques
- Ces points de montage ne rĂ©sistent pas au reboot de lâun des deux pĂ©riphĂ©riques.
- De maniÚre en cas de rupture prolongée de la connexion, le point de montage saute.
Liens
- Les billets :
- đ» SimpleSSHD un serveur SSH pour Android qui explique comment installer lâapplication sur Android,
- đ» Synchronisation vers un tĂ©lĂ©phone,
- đ « sshfs » une alternative Ă samba,
- đ Exemples prĂȘts Ă lâemploi avec la commande « ip » pour lâautomatisation de la recherche de lâIP du tĂ©lĂ©phone.
኿