3 votes

Comment transférer de grandes quantités de fichiers vers Linux via MTP ?

J'essaie de copier toutes mes photos de mon Samsung Galaxy S9+ vers mon ordinateur portable (sous Linux Mint). Je peux transférer quelques fichiers à la fois sans problème, mais j'ai amassé des milliers de fichiers dans mon dossier de photos.

Lorsque j'essaie de copier le dossier à l'aide du gestionnaire de fichiers, l'opération se bloque et échoue à chaque fois. Je préférerais le faire via le terminal, mais comme les téléphones Samsung utilisent mtp pour transférer les fichiers, je n'ai aucune idée des commandes à utiliser.

3voto

Milner Points 533

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 !

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X