Impossibile eseguire operazioni sui file su un dispositivo MTP montato tramite GVFS: "Operazione non supportata"


13

Sto eseguendo Linux Mint 17.1 64-bit (basato su Ubuntu 14.04). Da quando ho effettuato l'aggiornamento da Linux Mint 14 / Ubuntu 12.10, lo script Python che utilizzo per sincronizzare la musica con il mio Walkman ha smesso di funzionare.

In precedenza, quando montavo il mio Walkman, si presentava automaticamente come percorso /run/user/1000/gvfs/WALKMAN/Storage Mediae funzionava come qualsiasi altro file system: potevo copiare tracce su di esso, eliminare tracce da esso, ecc., Tramite Python. Tuttavia, non riesco a ricordare se ho dovuto apportare modifiche per far sì che ciò accada.

Dall'aggiornamento a Linux Mint 17 (e ora 17.1), quando monto il Walkman, viene visualizzato come percorso /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Media. Inoltre, quando provo a eseguire le stesse operazioni sui file, ora falliscono. Ho scoperto che ciò accade non solo tramite Python, ma anche dalla riga di comando. Per esempio:

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

Ho fatto alcune ricerche su questo problema, ma la spiegazione più comune sembra essere che in precedenza era stato risolto da questo PPA: https://launchpad.net/~langdalepl/+archive/ubuntu/gvfs-mtp

Ma ora, le versioni di Ubuntu dal 13.10 contengono tutte queste modifiche, quindi non dovrebbero più essere necessarie. Quindi perché continuo a riscontrare questi errori? Sono ancora in grado di eseguire operazioni sui file sul mio Walkman tramite un file manager grafico (Caja, su Linux Mint), ma non tramite la riga di comando.


Penso che possa aiutarti: github.com/hanwen/go-mtpfs
PersianGulf

Il mio dispositivo si monta già come MTP ... non è questo il problema.
David Pitchford,

Risposte:


15

Un'ipotesi: ora stai effettivamente utilizzando MTP per accedere al tuo Walkman e MTP fa schifo.

Dettagli

L' Operation not supportederrore potrebbe indicare che il Walkman utilizza un'implementazione MTP che non supporta l'accesso "diretto". Secondo http://intr.overt.org/blog/?p=174 questo tipo di accesso diretto è un'estensione specifica per Android, quindi probabilmente non è supportata dal Walkman.

Di conseguenza, è possibile utilizzare solo alcuni modi selezionati per accedere ai file sul Walkman tramite MTP: suppongo che sia supportato tutto ciò che legge o scrive i file in un'unica operazione, mentre l'accesso a parti selezionate di un file non è supportato per queste implementazioni MTP . E sembra che cpPython usi sempre quest'ultimo metodo di accesso e quindi fallisca.

Possibile soluzione alternativa

Tuttavia, si potrebbe essere in grado di sostituire solo cpda gvfs-copy. Nei miei test con un telefono Android Samsung (che ha anche un'implementazione MTP paralizzata) è gvfs-copystato in grado di copiare i file sul telefono dove cpfallito.

sfondo

Non sono riuscito a trovare molte informazioni su queste limitazioni MTP dipendenti dal dispositivo; ecco alcuni frammenti in cui la situazione è spiegata in qualche modo:

/ubuntu//a/284831 https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1389001/comments/2 https://bugs.launchpad.net/ubuntu/+source / GVFS / + bug / 1.157.583 / commenti / 1

Perché ha funzionato prima?

Sul motivo per cui il Walkman era accessibile con cpMint 14 ma non con Mint 17, ciò potrebbe essere causato da un passaggio interno da PTP a MTP come sistema di accesso. Almeno questo è quello che ho notato per il dispositivo Samsung quando sono passato da Ubuntu 12.04 a 14.04. Il telefono supporta sia PTP che MTP, ma Ubuntu 12.04 apparentemente supporta solo PTP; quindi è quello che è stato usato. Poiché la nuova versione di Ubuntu ha il supporto integrato per MTP, ora viene utilizzata questa.

In realtà potrebbe anche essere il caso in cui al Walkman sia stato precedentemente effettuato l'accesso come dispositivo di archiviazione di massa USB , che è quello che utilizzano i dischi rigidi USB e le unità flash. Forse per qualche motivo Linux (o il tuo Walkman) ha deciso che l'MTP era preferibile all'accesso alla memoria di massa.

Puoi vedere il metodo di accesso usato guardando l'URL del Walkman (in Nautilus, vai alla cartella Walkman, premi Ctrl + L e guarda la barra degli indirizzi): per MTP il dispositivo si trova sotto ad es. mtp://[usb:001,004]/mentre per PTP è qualcosa di simile gphoto2://[usb:001,004]/store_00010001. Per l'accesso alla memoria di massa l'URL è solo un percorso normale come /media/WALKMAN.

Non so se l'MTP presenta vantaggi reali rispetto all'archiviazione di massa o PTP o se è possibile tornare all'archiviazione di massa o PTP. Sotto Linux, entrambe le implementazioni MTP e PTP hanno il proprio set di bug, quindi potrebbe dipendere dal tuo caso d'uso quale è meglio. AFAIK Mass Storage è l'opzione più desiderabile per l'utente ma il supporto del dispositivo nei telefoni sta calando.


2
Grazie per avermi fatto conoscere gvfs-copy. Tuttavia, è un grande peccato che non copi ricorsivamente le directory. C'è un altro che posso fare in modo ricorsivo?
TuxForLife,

1
inoltre gvfs-copynon funziona per me meglio del normale cp. E nel mio caso, lo stesso telefono ha funzionato in passato tramite MTP. Alcuni telefoni funzionano e altri no. Tutto su MTP (mentre seleziono l'opzione di connessione MTP nel menu del telefono). aggiornamento: trovato il problema. Stavo cercando di copiare dalla scheda alla memoria del telefono. Prima dovevo copiare sul filesystem locale (ad es. / Tmp), quindi copiarlo nella memoria del telefono. Sembra che mtp-> mtp direct copy non funzioni (ancora).
Akostadinov

Né gvfs-copy né gvfs-moved hanno funzionato neanche per me. Usando Caja 1.8.2, sono stato in grado di spostarli utilizzando l'interfaccia grafica e quindi eliminare i file.
Julien Lamarche,

2

Per accedere al mio cellulare ho dovuto installare mtp-server tramite il Gestore pacchetti Synaptic sul mio Linux Mint 17.1 Mate. Il mio precedente Linux Mint 17 Mate non mi richiedeva di installare mtp-server, il mio cellulare veniva riconosciuto automaticamente al momento della connessione tramite porta USB. Forse queste informazioni ti aiuteranno.


Intendi dalla riga di comando? Come ho già detto, posso ancora accedervi tramite il file manager della GUI.
David Pitchford,

Caja risponde alle mie esigenze, quindi non posso aiutarti con la riga di comando.
Scott

Grazie Scott. La tua risposta mi ha aiutato a risolvere questo messaggio di errore: 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.E il mio dispositivo Adroid non si è connesso tramite MTP sulla mia installazione di Mint 17. Probabilmente dopo un aggiornamento 17.1. apt-get install mtp-serverrisolto il mio problema. Questo è per altri utenti con questo problema che può aiutarli come mi ha aiutato.

2

Ho riscontrato questo problema su Ubuntu 16.04 e Samsung Galaxy SIII collegati in modalità MTP.

Usare il suggerimento di Oliver per usare gvfs-copy, copiare direttamente dal mio NAS sul telefono non funziona: (nemmeno Nautilus). Questa è una soluzione per un possibile bug in 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

Né il formato del percorso alternativo suggerito dalla manpage:

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

Tuttavia, la copia del file in una cartella locale prima ha funzionato. {Grazie akostadinov} (e anche Nautilus).

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

1

Su Debian Jessie, gvfs-copydal pacchetto gvfs-binfunziona per me.

$ 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

0

Puoi provare a utilizzare rsync per la sincronizzazione con il tuo dispositivo, anche se con i trasferimenti MTP di solito non puoi impostare la data e l'ora per ciascun file. Per velocizzare i trasferimenti, dovresti usare l'opzione --size-only per rsync e non l'opzione -t. Trovo più semplice cambiare la directory nella directory mtp, come / run / user / 1000 / gvfs / mtp: host = blahblah / blah / blah, quindi eseguo:

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

L'opzione -n ​​è di eseguire una corsa a secco. Cancella questa opzione se sei soddisfatto dei risultati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.