Le MTP est nul pour cette tâche - OK pour quelques fichiers dans des "petits dossiers", mais bloquant pour les dossiers contenant de nombreux fichiers, ou pour copier de nombreux fichiers, ou pour essayer des choses en parallèle.
Comme vous utilisez Linux, ADB serait une excellente alternative. Je l'utilise avec adbfs-rootless qui permet de monter l'appareil localement sur votre ordinateur et fonctionne comme un charme (je l'utilise depuis des années, donc je peux confirmer qu'il fonctionne au moins jusqu'à Oreo).
Tout d'abord, pour faire fonctionner ADB, vous pouvez vérifier avec Comment faire pour que mon appareil soit détecté par ADB sous Linux ? . Les binaires ADB sont livrés dans les dépôts de nombreuses distributions sous un nom tel que android-tools-adb
afin que vous puissiez les installer facilement ; vous pouvez également consulter le site suivant Existe-t-il une installation minimale d'ADB ? pour un encombrement encore plus réduit.
Installation de adbfs
est assez simple si vous avez les outils de construction essentiels déjà installés sur votre système : selon le fichier readme, à côté de build-essential
vous aurez besoin libfuse-dev
y pkg-config
disponibles sur votre système. Le site git
n'est nécessaire que si vous voulez cloner le dépôt Github (sinon, vous pouvez simplement télécharger le code au format ZIP). cd
dans le répertoire où vous avez cloné/décompressé le code, et exécutez make
. Quand c'est fait, copiez le adbfs
à votre chemin (par exemple dans /usr/local/bin
o ~/bin
si vous l'avez configuré), de sorte que vous n'avez pas besoin de spécifier le chemin complet à chaque appel - et vous êtes prêt à l'utiliser.
Enfin, créez un point de montage (un répertoire vide où le système de fichiers de votre périphérique doit apparaître, par exemple mnt
dans votre répertoire personnel), et le monter avec adbfs ~/mnt
- et voilà, votre partie de copie peut commencer ; à partir du terminal ou graphiquement, c'est vous qui voyez. Lorsque vous avez terminé, utilisez fusermount -u ~/mnt
pour démonter à nouveau votre appareil.
Petit bonus pour vous : si vous avez parfois plusieurs appareils connectés en même temps, vous devrez définir le paramètre ANDROID_SERIAL
pour indiquer à adbfs
à quel dispositif se connecter. Voici un petit script pour vous faciliter la tâche :
case "$(adb devices|grep -v "devices"|grep -v -e '^[[:space:]]*$'|wc -l)" in
0) echo "Nothing to mount (no device attached)" ;;
1) export ANDROID_SERIAL=$(adb devices|grep -v "devices"|grep -v -e '^[[:space:]]*$'|awk '{print $1'})
adbfs /mnt/droid
;;
*) devices=''
tmpfile=$(tempfile)
adb devices -l|grep -v "devices"|grep -v -e '^[[:space:]]*$' > $tmpfile
while IFS='\n' read i
do
test="$(echo $i | awk '{print $2}')"
if [ "$test" = "device" ]; then
devices="$devices $(echo $i | awk '{print $1}')"
devices="$devices \"$(echo $i | awk '{print $5}')\""
fi
done < "$tmpfile"
rm -f -- "$tmpfile"
serial=$(whiptail --clear --menu 'Multiple devices found, make your choice:' 0 0 0 $devices 3>&1 1>&2 2>&3)
export ANDROID_SERIAL=$serial
adbfs /mnt/droid
esac
Si vous vous interrogez sur l'indentation : il s'agit d'un extrait de mon livre Midnight-Commander ( mc
). Vous pouvez l'insérer à cet endroit, en le faisant précéder de
= t d
+f ^mnt$
m Mount Droid
Ainsi, chaque fois que votre point de montage est mis en évidence par le curseur, appuyer sur F2 rendra cet élément de menu disponible et vous pourrez facilement monter votre appareil. Pour le démontage, voici le deuxième élément de menu :
+f ^mnt$
u uMount Droid
fusermount -u /mnt/droid
^mnt$
est le nom du point de montage que vous avez créé - donc si vous avez utilisé un nom différent, vous devez également l'ajuster.
Profitez-en !