cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

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

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog