3 votos

¿Cómo se pueden transferir grandes cantidades de archivos a Linux a través de MTP?

Estoy intentando copiar todas mis fotos de mi Samsung Galaxy S9+ a mi portátil (con Linux Mint). Puedo transferir unos pocos archivos a la vez sin problema, pero he acumulado 1000 de archivos en mi carpeta de imágenes.

Al intentar copiar la carpeta a través del administrador de archivos, la operación se detiene y falla cada vez. Preferiría hacerlo a través del terminal, pero como los teléfonos Samsung utilizan mtp para transferir archivos, no tengo ni idea de qué comandos utilizar.

0 votos

Tuve el mismo problema al transferir un gran número de archivos. Se me ocurrió una solución que he mencionado en una otra respuesta aquí: Velocidad ultra lenta al transferir archivos entre el PC y el Samsung S5 .

3voto

Izzy Puntos 45544

MTP es una mierda para esa tarea - está bien para unos pocos archivos en "carpetas pequeñas", pero se atasca para carpetas con muchos archivos, o para copiar muchos archivos, o para intentar cosas en paralelo.

Al usar Linux, ADB sería una gran alternativa. Yo uso eso con adbfs-rootless , que permite montar el dispositivo de forma local en el ordenador y funciona a las mil maravillas (lo uso desde hace años, así que puedo confirmar que funciona al menos hasta Oreo).

En primer lugar, para conseguir que ADB funcione, puedes comprobarlo con ¿Cómo consigo que mi dispositivo sea detectado por ADB en Linux? . Los binarios de ADB se incluyen en los repositorios de muchas distribuciones con un nombre como android-tools-adb para que puedas instalarlos fácilmente; o bien echa un vistazo a ¿Existe una instalación mínima de ADB? para una huella aún más pequeña.

Instalación de adbfs es bastante sencillo si tiene las herramientas de compilación esenciales ya instaladas en su sistema: según el léeme, junto a build-essential necesitarás libfuse-dev y pkg-config disponible en su sistema. La página web git sólo es necesario si quieres clonar el repositorio de Github (alternativamente, puedes simplemente descargar el código como ZIP). cd al directorio en el que has clonado/desempaquetado el código, y ejecuta make . Una vez hecho esto, copie el adbfs binario a su ruta (por ejemplo, en /usr/local/bin o ~/bin si lo has configurado), por lo que no necesitas especificar la ruta completa con cada llamada - y ya estás listo para usarlo.

Por último, cree un punto de montaje (un directorio vacío donde aparecerá el sistema de archivos de su dispositivo, por ejemplo mnt en su directorio personal), y montarlo con adbfs ~/mnt - et voila, su fiesta de la copia puede comenzar; desde la terminal o gráficamente depende de usted. Cuando haya terminado, utilice fusermount -u ~/mnt para desmontar el dispositivo de nuevo.

Como un pequeño extra para ti: en caso de que a veces tengas varios dispositivos conectados al mismo tiempo, tendrás que configurar el ANDROID_SERIAL para decirle a adbfs a qué dispositivo conectarse. Aquí tienes un pequeño script que te lo pone más fácil:

        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 te preguntas por la sangría: es un fragmento de mi Midnight-Commander ( mc ). Puede insertarla allí, precediéndola de

= t d
+f ^mnt$
m       Mount Droid

Por lo tanto, siempre que el punto de montaje esté resaltado por el cursor, al pulsar F2 hará que ese elemento del menú esté disponible y puedas montar fácilmente tu dispositivo. Para desmontar, aquí está el segundo elemento del menú:

+f ^mnt$
u       uMount Droid
        fusermount -u /mnt/droid

^mnt$ es el nombre del punto de montaje que has creado, por lo que si has utilizado un nombre diferente, también deberás ajustarlo.

Que lo disfrutes.

0 votos

Gracias Montar el teléfono es una solución mucho mejor.

1 votos

Definitivamente. Te da total libertad para elegir el software de copia que prefieras, ya sea de línea de comandos cp / rsync o un gestor gráfico de archivos. Incluso podrías ir un paso más allá e integrarlo con un udev para que cuando se conecte ese dispositivo, su almacenamiento se monte automáticamente. No he hecho eso porque no estoy seguro de cómo manejar el umount entonces, que debe hacerse antes de desenchufar y por lo tanto sería difícil de automatizar ;)

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X