¿Dónde están ubicados los dispositivos montados en MTP en el sistema de archivos?

207

Tengo un teléfono Android que se conecta con mi computadora a través de MTP. Esto funciona bien; Puedo ver y transferir archivos con Nautilus. Sin embargo, a menudo quiero usar el terminal para mover grandes cantidades de archivos, y parece que no puedo encontrar el dispositivo en ninguna parte del árbol del sistema de archivos. Nautilus informa la ubicación como mtp://[usb:003,007]/, pero no está debajo /mediao /mnt.

¿Alguien sabe dónde está?

Bessman
fuente
Posible duplicado de la ruta accesible 'cd'
dimo414

Respuestas:

154

Como ya ha descubierto , los puntos de montaje están en /run/user/$USER/gvfs/(o /var/run/user/$UID/gvfs) y llevan el nombre del protocolo, el tipo de conexión y la dirección que utilizan. Lo que hace las cosas más difíciles, porque la dirección de conexión puede cambiar cada vez que vuelva a enchufar el dispositivo, incluso si es el mismo puerto. Si tiene el mismo dispositivo dos veces, empeora aún más.

Puede usar lsusbpara mostrar todos los dispositivos USB conectados desde el terminal:

$ lsusb | grep Google                       # Note: This is a Nexus 4
Bus 002 Device 025: ID 18d1:4ee2 Google Inc.

Como habrás notado, Nautilus también brinda esta información a través de la información sobre herramientas. Encontrará la forma codificada de, por ejemplo, mtp://[usb:002,025]en /run/user/$USER/gvfs(o /var/run/user/$UID/gvfs) comomtp:host=%5Busb%3A002%2C025%5D


Edición de Asker: Esto parece requerir una versión más reciente de libmtp y / o gvfs que está disponible por defecto en 13.04. Ejecute sudo add-apt-repository ppa:langdalepl/gvfs-mtpy actualice antes de hacer cualquier otra cosa.


Editar: PPA ya no es necesario en saucy / 13.10 y posteriores, los nombres de los archivos se enumeran en la terminal como en Nautilus.

Editar 2016-01-11: eliminé el script que se incluyó anteriormente en esta respuesta debido a la falta de tiempo para el mantenimiento y las mejoras. Todavía puede encontrarlo en el historial de revisiones.

LiveWireBT
fuente
Gracias por su respuesta. Desafortunadamente, no funciona porque los nombres de las carpetas reales (por ejemplo, / DCIM / Camera /) solo son visibles en Nautilus, no en el terminal. Por lo tanto, $ Path / DCIM / Camera no es accesible con rsync.
bessman
2
El camino es solo un ejemplo y es diferente para los teléfonos Android. El teléfono también debe desbloquearse mediante la pantalla de bloqueo para permitir el acceso a los datos.
LiveWireBT
La ruta /DCIM/Camera/existe en mi teléfono, pero en la terminal se llama /2404/2407/. Ese es el problema. Si cdentro /2404/2407/y corro nautilus ., entonces /DCIM/Camera/se abre. El teléfono está desbloqueado, de lo contrario no podría acceder a él a través de Nautilus, ¿verdad?
bessman
55
Tenga en cuenta que para que todo esto funcione, debe tener el gvfs-fusepaquete instalado. No todas las versiones / versiones de Ubuntu lo tienen por defecto (por ejemplo, Ubuntu MATE 14.10 no). Sin él, el dispositivo MTP no se montará como una ruta local y solo podrá ser utilizado por aplicaciones que admitan URI de gvfs.
user149408
2
gvfs/Finalmente encontré el directorio. Sin embargo, en lugar de $ USER, la ruta en esta PC es: /run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C003%5D- Para otros, le sugiero que simplemente mire, si no lo encuentra de inmediato.
será
94

Se puede acceder a la memoria de mi dispositivo Nexus en:

/run/user/$UID/gvfs/mtp*

Entonces, si su $ UID es 1000, puede encontrarlo haciendo

$ cd /run/user/$UID/gvfs/mtp*

o (para la ubicación exacta en un ejemplo asumiendo que su UID es 1000),

$ cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
Babken Vardanyan
fuente
2
Esta debería ser la respuesta aceptada, ya que no requiere la instalación de ningún software adicional. Muchas gracias user2529583!
NH.
¿Alguna idea de si mtp*se puede cambiar el nombre del nombre de archivo para usarlo en las aplicaciones de Wine? Ingenuo mvme da mv: cannot move 'mtp:host=%5Busb%3A001%2C065%5D' to 'mtp': No such file or directory(tenga en cuenta que el nombre de archivo se completa con tabulación)
Mark Jeronimus
@Mark cualquier carácter es un nombre de archivo válido en Linux. Mira si hay alguna forma de cambiarle el nombre sin mv.
Babken Vardanyan
Increíble. Funciona perfectamente bien y me ahorró muchas "pruebas" en Raspbian Wheezy y Jessie
Zimano
1
Ubuntu 16.04 y Honor 9 Lite. Después de conectar la /run/user/1000/gvfscarpeta del teléfono está vacía.
LRDPRDX
25

MTP El dispositivo montado generalmente se puede encontrar en: /run/user/1000/gvfs/


por ejemplo, si aparece la barra de direcciones de Nautilus mtp://[usb:001,006]/, puede acceder por:

/run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/

ahora en la terminal puedes copiar archivos o carpetas:

  • cd en la carpeta -> cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
  • luego copie las carpetas requeridas al directorio actual -> cp -r ~/videos/ .
suhailvs
fuente
2
Funciona exactamente como tú dices. Pero cuando hago 'ls -a' está vacío.
ycc_swe
10

Tipo mount. Eso enumerará todos los sistemas de archivos activos.

Waltinator
fuente
14
No, el dispositivo no aparece en la salida.
LiveWireBT
1
Hmm Ese tipo de trabajo. Lo encontré en / run / user / myusername / gvfs /. Sin embargo, todos los nombres de las carpetas son solo números en lugar de los nombres reales que veo en Nautilus. Como tal, realmente no resuelve mi problema porque todavía no puedo usar fácilmente el terminal para mover archivos al dispositivo.
bessman
Cuando Nautilus tiene el dispositivo MTP abierto, use los comandos lsof -c nautilus | lesspara enumerar todos los archivos que Nautilus ha abierto.
waltinator
1
Eso lo resolvió para mí :)
marlar
10

Esto está trabajando con:

  • Linux Mint 17.3
  • Samsung Galaxy S5

prueba esto:

  1. apt-get install mtpfs
  2. apt-get install mtp-tools
    • #Sí, podría ser una línea (esto es opcional )
  3. sudo mkdir -p /media/mtp/phone
  4. sudo chmod 775 /media/mtp/phone
    • #Personalmente, restringiría los permisos a NO-eXecute
    • #En este punto no estoy seguro de qué es suficiente para montar.
  5. Desenchufe el teléfono micro-USB y enchúfelo, luego ...
  6. sudo mtpfs -o allow_other /media/mtp/phone
  7. ls -lt /media/mtp/phone

salida:

 total 0
 drwxrwxrwx 2 will will 0 Jan  1  1970 Card
 drwxrwxrwx 2 will will 0 Jan  1  1970 Phone
 drwxrwxrwx 2 will will 0 Jan  1  1970 Playlists
  1. ls -lt /media/mtp/phone/Card

salida:

 total 0
 drwxrwxrwx 2 will will 0 Jan  1  1970 Android
 drwxrwxrwx 2 will will 0 Jan  1  1970 DCIM
 drwxrwxrwx 2 will will 0 Jan  1  1970 LOST.DIR
 drwxrwxrwx 2 will will 0 Jan  1  1970 Music

Listado de acceso a la tarjeta SD en mi teléfono Android. " Listas de reproducción " es un directorio virtual llamado "/ Listas de reproducción" que contiene sus listas de reproducción como archivos .m3u. (por man mtpfs)

Eso parece hacer el truco. Comandos útiles para recordar ...

  • sudo mtpfs -h... enumera las opciones del dispositivo. Esto parece funcionar solo antes de que haya montado el dispositivo. Así que verifique primero, tal vez.
  • mtp-detect... muestra muchas cosas sobre el dispositivo (parte de mtp-tools).

También creo que necesita el teléfono / dispositivo " encendido ", abra el protector de pantalla si tiene uno para que el dispositivo pueda conectarse.

Noté que mi USB-s se monta como:

  • / media / will / usbdrive

Por lo tanto, podría tener más sentido montar bajo su nombre de usuario en lugar del código auxiliar "mtp". También revise la publicación: " Montaje de su tarjeta SD de androides MTP en Ubuntu ", tiene algunas sugerencias útiles y extras.

referencias:

Tomé mi liderazgo en estas dos publicaciones:

será
fuente
Hola, aunque esto funciona, todavía encuentro que el MTP es demasiado lento y, a menudo, es como si mi PC con Linux se hubiera bloqueado. Apoyo los comentarios adicionales sobre el uso de FTP. Investigué un poco y recomiendo la aplicación sshelper . Es muy útil, de código abierto y maduro. Funcionará con Windows, Linux y Mac, o cualquier cosa que admita SSH. Fácil de usar también. Darle una oportunidad.
será
8

Tengo un teléfono LG2 y estoy ejecutando Xubuntu 15.10.

Así es como monté el dispositivo en el directorio mnt debajo de mi usuario.

  1. Primero asegúrese de tener los siguientes paquetes instalados en su sistema.

    sudo apt-get install jmtpfs mtp-tools
    
  2. Conecte su teléfono como dispositivo MTP y escriba el siguiente comando en su terminal.

    mtp-detect
    
  3. Descomentar user_allow_otheren el archivo /etc/fuse.conf.

  4. Cree un directorio mnten su directorio de inicio.

    mkdir mnt
    
  5. Montar el dispositivo.

    jmtpfs ~/mnt
    
  6. Eso es. Ahora su dispositivo está montado en el mntdirectorio creado en el paso 4 .

Nota: Puede haber algunos pasos que son innecesarios. Pero seguir los pasos anteriores funcionó para mí.

Referencia: https://wiki.archlinux.org/index.php/MTP

Corazón de hierro
fuente
6

Esta no es una respuesta directa al problema, sino una solución.

Después de experimentar inconsistencias con la conectividad USB, evité todos los sistemas .gvfs y USB.

¡Instalé un servidor ftp simple en Android y listo! Conéctese al servidor (ya sea ftp con inicio de sesión o sin él, dependiendo de cómo elija) desde Nautilus / nemo / thunar y listo.

La sincronización de carpetas se maneja a través de OwnCloud y / o BitTorrentSync.

Y el FTP a través de la conexión inalámbrica es mucho más rápido que la conexión USB.

Nick Heywood
fuente
5

MTP es un protocolo, muy parecido a FTP o SSH. Busca archivos cuando el usuario lo solicita. Por lo tanto, no hay un sistema de archivos montado en la computadora.

Use mtpfs para que parezca un sistema de archivos montado.

mtpfs <a_folder_to_mount>

No es necesario especificar el dispositivo. Si solo tiene un dispositivo conectado, entonces no hay ambigüedad. No lo he probado con múltiples dispositivos conectados a mi computadora.

Krishnendu
fuente
4

No sé exactamente atravesar a la ubicación MTP a través de la terminal. Sin embargo, descubrí que podemos hacer clic derecho en el almacenamiento interno / tarjeta SD y elegir la opción "Abrir en la Terminal". Al hacerlo, la ubicación se abre directamente en la Terminal.

Vikas Mohan
fuente
2
Una captura de pantalla real (del framebuffer interno) sería mucho mejor que una foto de la pantalla (con una cámara externa).
David Foerster
1

Soy capaz de manejar archivos en un dispositivo MTP conectado Android usando gvfs-*comandos (por ejemplo gvfs-cp, gvfs-move, ...) que también se menciona en el siguiente artículo de Wikipedia : gvfs .

Escribí una sencilla utilidad CLI para la sincronización de archivos a / desde un dispositivo Android: https://github.com/DusanMadar/PySyncDroid

Dušan Maďar
fuente
1
Simplemente vaya al directorio y use rsync
Evan Carroll