Dove si trovano i dispositivi montati MTP nel filesystem?


207

Ho un telefono Android che si collega al mio computer tramite MTP. Questo funziona bene; Posso vedere e trasferire file con Nautilus. Tuttavia, spesso desidero utilizzare il terminale per spostare un gran numero di file e non riesco a trovare il dispositivo da nessuna parte nella struttura del filesystem. Nautilus riporta la posizione come mtp://[usb:003,007]/, ma non è sotto /mediao /mnt.

Qualcuno sa dove sia?


Possibile duplicato del percorso accessibile 'cd'
dimo414

Risposte:


154

Come hai già scoperto , i mountpoint sono in /run/user/$USER/gvfs/(o /var/run/user/$UID/gvfs) e prendono il nome dal protocollo, dal tipo di connessione e dall'indirizzo che usano. Il che rende le cose più difficili, perché l'indirizzo di connessione può cambiare ogni volta che si ricollega il dispositivo, anche se si tratta della stessa porta. Se hai lo stesso dispositivo due volte peggiora ancora.

È possibile utilizzare lsusbper visualizzare tutti i dispositivi USB collegati dal terminale:

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

Come hai notato, Nautilus fornisce anche queste informazioni tramite la descrizione comandi. Troverai la forma codificata di es. mtp://[usb:002,025]In /run/user/$USER/gvfs(o /var/run/user/$UID/gvfs) comemtp:host=%5Busb%3A002%2C025%5D


Modifica di Asker: questo sembra richiedere una versione più recente di libmtp e / o gvfs di quella disponibile per impostazione predefinita in 13.04. Esegui sudo add-apt-repository ppa:langdalepl/gvfs-mtpe aggiorna prima di fare qualsiasi altra cosa.


Modifica: PPA non è più necessario in saucy / 13.10 e versioni successive, i nomi dei file sono elencati nel terminale come in Nautilus.

Modifica 11-01-2016: ho rimosso lo script precedentemente incluso in questa risposta a causa della mancanza di tempo per la manutenzione e i miglioramenti. Puoi ancora trovarlo nella cronologia delle revisioni.


La ringrazio per la risposta. Sfortunatamente, non funziona perché i nomi delle cartelle attuali (ad es. / DCIM / Camera /) sono visibili solo in Nautilus, non nel terminale. Pertanto, $ Path / DCIM / Camera non è accessibile con rsync.
Bessman,

2
Il percorso è solo un esempio ed è diverso per i telefoni Android. Il telefono deve anche essere sbloccato tramite la schermata di blocco per consentire l'accesso ai dati.
LiveWireBT

Il percorso /DCIM/Camera/esiste sul mio telefono, ma nel terminale viene chiamato /2404/2407/. Questo è il problema. Se cdentro /2404/2407/e corro nautilus ., allora /DCIM/Camera/viene aperto. Il telefono è sbloccato, altrimenti non sarei in grado di accedervi tramite Nautilus, giusto?
Bessman,

5
Si noti che affinché tutto ciò funzioni, è necessario che il gvfs-fusepacchetto sia installato. Non tutte le versioni / versioni di Ubuntu lo hanno per impostazione predefinita (ad esempio Ubuntu MATE 14.10 no). Senza di esso, il dispositivo MTP non verrà montato come percorso locale e sarà utilizzabile solo dalle applicazioni che supportano gli URI gvfs.
user149408

2
gvfs/Alla fine ho trovato la directory. Tuttavia, invece di $ USER, il percorso su questo PC è: /run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C003%5D- Per altri, ti consiglio di curiosare, se non lo trovi subito.
sarà

94

La memoria del mio dispositivo Nexus è accessibile all'indirizzo:

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

Quindi, se il tuo $ UID è 1000, potresti trovarlo in entrambi i modi

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

oppure (per la posizione esatta in un esempio supponendo che il tuo UID sia 1000),

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

2
Questa dovrebbe essere la risposta accettata poiché non richiede l'installazione di alcun software aggiuntivo. Grazie mille user2529583!
NH.

Qualche idea se il mtp*nome file può essere rinominato per l'uso nelle applicazioni Wine? Naive mvmi dà mv: cannot move 'mtp:host=%5Busb%3A001%2C065%5D' to 'mtp': No such file or directory(nota che il nome del file è completato da tabulazioni)
Mark Jeronimus,

@Mark qualsiasi personaggio è un nome file valido in Linux. Guarda se c'è un modo per rinominarlo senza mv.
Babken Vardanyan,

Eccezionale. Funziona perfettamente e mi ha risparmiato un sacco di "tentativi" su Raspbian Wheezy e Jessie
Zimano,

1
Ubuntu 16.04 e Honor 9 Lite. Dopo aver collegato la /run/user/1000/gvfscartella del telefono è vuota.
LRDPRDX,

25

MTP il dispositivo montato di solito si trova in: /run/user/1000/gvfs/


ad esempio se viene visualizzata la barra degli indirizzi di Nautilus mtp://[usb:001,006]/, è possibile accedere a:

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

ora sul terminale è possibile copiare file o cartelle:

  • cd nella cartella -> cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
  • quindi copia le cartelle richieste nella directory corrente -> cp -r ~/videos/ .

2
Funziona esattamente come dici tu. Ma quando faccio 'ls -a' è vuoto.
ycc_swe,

10

Tipo mount. Questo elencherà tutti i filesystem attivi.


14
No, il dispositivo non viene visualizzato nell'output.
LiveWireBT,

1
Hmm. Quel tipo di lavoro ha funzionato. L'ho trovato in / run / user / myusername / gvfs /. Tuttavia, tutti i nomi delle cartelle sono solo numeri anziché i nomi reali che vedo in Nautilus. In quanto tale, non risolve davvero il mio problema perché non riesco ancora a utilizzare facilmente il terminale per spostare i file sul dispositivo.
Bessman,

Quando Nautilus ha il dispositivo MTP aperto, utilizzare i comandi lsof -c nautilus | lessper elencare tutti i file di file che Nautilus ha aperto.
Waltinator,

1
Questo mi ha risolto :)
marlar

10

Questo funziona con:

  • Linux Mint 17.3
  • Samsung Galaxy S5

prova questo:

  1. apt-get install mtpfs
  2. apt-get install mtp-tools
    • #sì potrebbe essere una riga (questo è facoltativo )
  3. sudo mkdir -p /media/mtp/phone
  4. sudo chmod 775 /media/mtp/phone
    • #Personalmente limiterei le autorizzazioni a NO-eXecute
    • #A questo punto non sono sicuro di cosa sia sufficiente montare.
  5. Scollega il telefono micro-USB e il plug-in, quindi ...
  6. sudo mtpfs -o allow_other /media/mtp/phone
  7. ls -lt /media/mtp/phone

produzione:

 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

produzione:

 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

Elenco di accesso alla scheda SD sul mio telefono Android. " Playlists " è una directory virtuale chiamata "/ Playlists" che contiene le tue playlist come file .m3u. (per man mtpfs)

Questo sembra fare il trucco. Comandi utili da ricordare ...

  • sudo mtpfs -h... elenca le opzioni del dispositivo. Questo sembra funzionare solo prima di aver montato il dispositivo. Quindi controlla prima di tutto, forse.
  • mtp-detect... mostra molte cose sul dispositivo (parte di mtp-tools).

Inoltre penso che tu abbia bisogno del telefono / dispositivo " acceso ", apri lo screen saver se ne hai uno in modo che il dispositivo possa connettersi.

Ho notato che il mio dispositivo USB si monta come:

  • / media / will / usbdrive

Quindi potrebbe avere più senso montare sotto il tuo nome utente anziché lo stub "mtp". Leggi anche il post: " Montare la tua scheda SD Androids MTP su Ubuntu ", contiene alcuni suggerimenti ed extra utili.

Riferimenti:

Ho preso il comando da questi due post:


Ciao, anche se funziona, trovo ancora che l'MTP sia troppo lento e spesso è come se il mio PC Linux fosse bloccato. Sostengo gli ulteriori commenti sull'uso di FTP. Ho fatto qualche scavo e consiglio l' app sshelper . È molto utile, open source e maturo. Funzionerà con Windows, Linux e Mac - O qualsiasi cosa che supporti SSH. Anche facile da usare. Provaci.
sarà il

8

Ho un telefono LG2 e utilizzo Xubuntu 15.10.

Ecco come ho montato il dispositivo nella directory mnt sotto il mio utente.

  1. Innanzitutto assicurati di avere i seguenti pacchetti installati nel tuo sistema.

    sudo apt-get install jmtpfs mtp-tools
    
  2. Connetti il ​​tuo telefono come dispositivo MTP e digita il seguente comando nel tuo terminale.

    mtp-detect
    
  3. Uncomment user_allow_otherin file /etc/fuse.conf.

  4. Crea una directory mntnella tua home directory.

    mkdir mnt
    
  5. Montare il dispositivo.

    jmtpfs ~/mnt
    
  6. Questo è tutto. Ora il dispositivo è montato nella mntdirectory creata nel passaggio 4 .

Nota: alcuni passaggi potrebbero non essere necessari. Ma seguire i passaggi precedenti ha funzionato per me.

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


6

Questa non è una risposta diretta al problema, ma comunque una soluzione.

Dopo aver riscontrato incoerenze con la connettività USB, ho bypassato tutti i sistemi .gvfs e USB.

Ho installato un semplice server ftp su Android e voilà! Connettiti al server (ftp con login o senza, a seconda di come scegli) da Nautilus / nemo / thunar e via.

La sincronizzazione delle cartelle viene gestita tramite OwnCloud e / o BitTorrentSync.

E l'FTP via wireless è molto più veloce della connessione USB.


5

MTP è un protocollo, molto simile a FTP o SSH. Recupera i file quando l'utente lo richiede. Pertanto non esiste un file system montato sul computer.

Usa mtpfs per farlo apparire come un file system montato.

mtpfs <a_folder_to_mount>

Non è necessario specificare il dispositivo. Se hai solo un dispositivo collegato, allora non c'è ambiguità. Non l'ho testato con più dispositivi collegati al mio computer.


4

Non so esattamente attraversare la posizione MTP tramite terminale. Tuttavia, ho scoperto che possiamo fare clic con il pulsante destro del mouse sulla memoria interna / scheda SD e scegliere l'opzione "Apri nel terminale". In questo modo la posizione viene aperta direttamente nel Terminale.


2
Un vero screenshot (del framebuffer interno) sarebbe molto meglio di una foto dello schermo (con una fotocamera esterna).
David Foerster,

1

Sono in grado di gestire i file su un dispositivo Android connesso MTP utilizzando i gvfs-*comandi (ad es gvfs-cp. gvfs-move, ...) che sono anche menzionati nel seguente articolo di Wikipedia : GVfs .

Ho scritto una semplice utility CLI per la sincronizzazione dei file da / verso un dispositivo Android: https://github.com/DusanMadar/PySyncDroid


1
Basta andare nella directory e usare rsync
Evan Carroll il
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.