No se pueden realizar operaciones de archivo en un dispositivo MTP montado a través de GVFS: "Operación no admitida"

13

Estoy ejecutando Linux Mint 17.1 de 64 bits (basado en Ubuntu 14.04). Desde la actualización de Linux Mint 14 / Ubuntu 12.10, el script Python que uso para sincronizar música con mi Walkman ha dejado de funcionar.

Anteriormente, cuando montaba mi Walkman, se mostraba automáticamente como la ruta /run/user/1000/gvfs/WALKMAN/Storage Mediay funcionaba como cualquier otro sistema de archivos: podía copiar pistas, eliminar pistas, etc., todo a través de Python. Sin embargo, no recuerdo si tuve que hacer algún cambio para que esto sucediera.

Desde la actualización a Linux Mint 17 (y ahora 17.1), cuando monto el Walkman, aparece como la ruta /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Media. Además, cuando intento ejecutar las mismas operaciones de archivo, ahora fallan. He descubierto que esto sucede no solo a través de Python, sino también en la línea de comando. Por ejemplo:

david@MILTON:~$ cp '/data/Music/10SecsWhiteNoise.mp3' '/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Storage Media/MUSIC'
cp: cannot create regular file ‘/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Storage Media/MUSIC/10SecsWhiteNoise.mp3’: Operation not supported

He realizado algunas investigaciones sobre este problema, pero la explicación más común parece ser que este PPA lo resolvió anteriormente: https://launchpad.net/~langdalepl/+archive/ubuntu/gvfs-mtp

Pero ahora, las versiones de Ubuntu desde 13.10 contienen todos estos cambios, por lo que ya no debería ser necesario. Entonces, ¿por qué sigo teniendo estos errores? Todavía puedo realizar operaciones de archivo en mi Walkman a través de un administrador de archivos gráfico (Caja, en Linux Mint), pero no a través de la línea de comandos.

David Pitchford
fuente
Creo que puede ayudarte: github.com/hanwen/go-mtpfs
PersianGulf
Mi dispositivo ya se monta como MTP ... ese no es el problema.
David Pitchford

Respuestas:

15

Una suposición: ahora estás usando MTP para acceder a tu Walkman, y MTP apesta.

Detalles

El Operation not supportederror podría indicar que su Walkman utiliza una implementación MTP que no admite el acceso "directo". Según http://intr.overt.org/blog/?p=174, este tipo de acceso directo es una extensión específica de Android, por lo que probablemente no sea compatible con su Walkman.

Como resultado, solo puede usar algunas formas seleccionadas de acceder a los archivos en su Walkman usando MTP: supongo que todo lo que lee o escribe archivos en una sola operación es compatible, mientras que el acceso a partes seleccionadas de un archivo no es compatible con estas implementaciones de MTP . Y parece que cpPython siempre usa el último método de acceso y, por lo tanto, falla.

Posible solución

Sin embargo, es posible que pueda reemplazar cppor gvfs-copy. En mis pruebas con un teléfono Samsung Android (que también tiene una implementación MTP paralizada) gvfs-copypude copiar archivos al teléfono donde cpfalló.

Antecedentes

No pude encontrar mucha información sobre estas limitaciones de MTP dependientes del dispositivo; Aquí hay algunos fragmentos donde la situación se explica un poco:

/ubuntu//a/284831 https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1389001/comments/2 https://bugs.launchpad.net/ubuntu/+source / gvfs / + bug / 1157583 / comentarios / 1

¿Por qué funcionó antes?

En cuanto a por qué se cppodía acceder a su Walkman en Mint 14 pero no en Mint 17, esto podría deberse a un cambio interno de PTP a MTP como sistema de acceso. Al menos eso es lo que noté para el dispositivo Samsung al cambiar de Ubuntu 12.04 a 14.04. El teléfono admite PTP y MTP, pero Ubuntu 12.04 aparentemente solo admite PTP; así que eso fue lo que se usó. Dado que la nueva versión de Ubuntu tiene soporte incorporado para MTP, ahora se usa en su lugar.

En realidad, incluso podría darse el caso de que se haya accedido previamente a su Walkman como dispositivo de almacenamiento masivo USB , que es lo que usan los discos duros USB y las unidades flash. Tal vez por alguna razón Linux (o su Walkman) decidió que MTP era preferible al acceso al almacenamiento masivo.

Puede ver el método de acceso utilizado al mirar la URL del Walkman (en Nautilus, vaya a la carpeta Walkman, presione Ctrl + L y mire la barra de direcciones): para MTP, el dispositivo se encuentra, por ejemplo, en. mtp://[usb:001,004]/mientras que para PTP es algo así gphoto2://[usb:001,004]/store_00010001. Para el acceso al almacenamiento masivo, la URL es solo una ruta normal como /media/WALKMAN.

No sé si MTP tiene alguna ventaja real sobre PTP o almacenamiento masivo, o si es posible volver a PTP o almacenamiento masivo. En Linux, las implementaciones MTP y PTP tienen su propio conjunto de errores, por lo que puede depender de su caso de uso cuál es mejor. El almacenamiento masivo AFAIK es la opción más deseable para el usuario, pero la compatibilidad del dispositivo en los teléfonos está disminuyendo.

Oliver
fuente
2
Gracias por presentarme a gvfs-copy. Sin embargo, es un gran fastidio, no copia directorios de forma recursiva. ¿Hay otro que pueda hacer recursivamente?
TuxForLife
1
Tampoco gvfs-copyme funciona mejor de lo normal cp. Y en mi caso, el mismo teléfono funcionó en el pasado sobre MTP. Algunos teléfonos funcionan y otros no. Todo sobre MTP (cuando selecciono la opción de conexión MTP en el menú del teléfono). actualización: encontró el problema. Estaba intentando copiar de la tarjeta al almacenamiento del teléfono. Primero tuve que copiar al sistema de archivos local (por ejemplo, / tmp) y luego copiar al almacenamiento del teléfono. Parece que mtp-> mtp direct copy no funciona (todavía).
akostadinov 01 de
Ni gvfs-copy ni gvfs-moved funcionaron para mí tampoco. Usando Caja 1.8.2, pude moverlos usando la interfaz gráfica y luego eliminar los archivos.
Julien Lamarche
2

Para acceder a mi teléfono celular, tuve que instalar mtp-server a través del Administrador de paquetes Synaptic en mi Linux Mint 17.1 Mate. Mi anterior Linux Mint 17 Mate no requería que instalara mtp-server, mi teléfono celular fue reconocido automáticamente al conectarse a través del puerto usb. Quizás esta información ayude.

Scott
fuente
¿Te refieres a través de la línea de comando? Como dije, aún puedo acceder a través del administrador de archivos GUI.
David Pitchford
Caja responde a mis necesidades, así que no puedo ayudarte con la línea de comando.
Scott
Gracias Scott Su respuesta me ayudó a resolver este mensaje de error: Kon 'mtp://[usb:003,029]/' niet weergeven. Fout: The name :1.1813 was not provided by any .service files Kies een andere weergavemethode en probeer het opnieuw.y mi dispositivo Adroid no se conectó a través de MTP en mi instalación de Mint 17. Probablemente después de una actualización 17.1. apt-get install mtp-serverresolvió mi problema Esto es para otros buscadores con este problema que pueden ayudarlos, ya que me ayudó.
2

Me encontré con este mismo problema en Ubuntu 16.04 y Samsung Galaxy SIII conectado en modo MTP.

Usando la sugerencia de Oliver de usar gvfs-copy, copiar directamente desde mi NAS al teléfono no funciona: (tampoco Nautilus). Esta es una solución alternativa para un posible error en gvfs-copy.

gvfs-copy '/run/user/1000/gvfs/smb-share:server=n2100,share=public/Music/The Story of Funk-1.mp2' '/run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C005%5D/Card/Music/Radio/'
Error copying file /run/user/1000/gvfs/smb-share:server=n2100,share=public/Music/The Story of Funk-1.mp2: Operation unsupported

Tampoco el formato alternativo de ruta sugerido por la página de manual:

gvfs-copy 'smb://n2100/public/Music/The Story of Funk-1.mp2' 'mtp://[usb:001,005]/Card/Music/Radio'
Error copying file smb://n2100/public/Music/The Story of Funk-1.mp2: Operation unsupported

Sin embargo, copiar el archivo a una carpeta local primero funcionó. {Gracias akostadinov} (y también Nautilus).

gvfs-copy '/home/nigel/The Story of Funk-1.mp2' 'mtp://[usb:001,005]/Card/Music/Radio'
Nigel Winterbottom
fuente
1

En Debian Jessie, el gvfs-copypaquete gvfs-binme funciona.

$ dpkg -S $(which gvfs-copy)
gvfs-bin: /usr/bin/gvfs-copy
$ dpkg -l gvfs-bin |tail -1
ii  gvfs-bin       1.22.2-1     amd64        userspace virtual filesystem - binaries
usuario1338062
fuente
0

Puede intentar usar rsync para sincronizar con su dispositivo, aunque con las transferencias MTP generalmente no puede configurar la marca de fecha y hora para cada archivo. Para que las transferencias sean más rápidas, debe usar la opción --size-only para rsync y no la opción -t. Me resulta más fácil cambiar el directorio al directorio mtp, como / run / user / 1000 / gvfs / mtp: host = blahblah / blah / blah, luego ejecuta:

rsync -n -vlr --size-only --delete /source/of/files/ ./

La opción -n es realizar una ejecución en seco. Simplemente borre esa opción si está satisfecho con los resultados.

Eric Sokolowsky
fuente