Onde estão os dispositivos montados no MTP no sistema de arquivos?

207

Eu tenho um telefone Android que se conecta ao meu computador via MTP. Isso funciona bem; Eu posso ver e transferir arquivos com o Nautilus. No entanto, geralmente quero usar o terminal para mover um grande número de arquivos e não consigo encontrar o dispositivo em nenhum lugar da árvore do sistema de arquivos. O Nautilus relata o local como mtp://[usb:003,007]/, mas não está abaixo /mediaou /mnt.

Alguém sabe onde fica?

bessman
fonte

Respostas:

154

Como você já descobriu , os pontos de montagem estão em /run/user/$USER/gvfs/(ou /var/run/user/$UID/gvfs) e recebem o nome do protocolo, tipo de conexão e endereço que usam. O que dificulta as coisas, porque o endereço de conexão pode mudar sempre que você reconectar o dispositivo, mesmo que seja a mesma porta. Se você tiver o mesmo dispositivo duas vezes, fica ainda pior.

Você pode usar lsusbpara exibir todos os dispositivos USB conectados no terminal:

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

Como você notou, o Nautilus também fornece essas informações por meio da dica de ferramenta. Você encontrará a forma codificada, por exemplo, mtp://[usb:002,025]em /run/user/$USER/gvfs(ou /var/run/user/$UID/gvfs) comomtp:host=%5Busb%3A002%2C025%5D


Edição do Asker: Isso parece exigir uma versão mais recente do libmtp e / ou gvfs que está disponível por padrão no 13.04. Execute sudo add-apt-repository ppa:langdalepl/gvfs-mtpe atualize antes de fazer qualquer outra coisa.


Edit: O PPA não é mais necessário no saucy / 13.10 e, mais recentemente, os nomes de arquivos são listados no terminal, assim como no Nautilus.

Editar 11-01-2016: removi o script que foi incluído anteriormente nesta resposta devido à falta de tempo para manutenção e aprimoramentos. Você ainda pode encontrá-lo no histórico de revisões.

LiveWireBT
fonte
Obrigado pela sua resposta. Infelizmente, ele não funciona porque os nomes das pastas reais (por exemplo, / DCIM / Camera /) são visíveis apenas no Nautilus, não no terminal. Portanto, $ Path / DCIM / Camera não está acessível com o rsync.
bessman
2
O caminho é apenas um exemplo e é diferente para telefones Android. O telefone também deve ser desbloqueado via tela de bloqueio para permitir o acesso aos dados.
LiveWireBT
O caminho /DCIM/Camera/existe no meu telefone, mas no terminal é chamado /2404/2407/. Esse é o problema. Se eu cdentrar /2404/2407/e correr nautilus ., /DCIM/Camera/é aberto. O telefone está desbloqueado, caso contrário, eu não conseguiria acessá-lo via Nautilus, certo?
precisa saber é
5
Observe que, para que tudo isso funcione, você precisa ter o gvfs-fusepacote instalado. Nem todas as versões / sabores do Ubuntu o possuem por padrão (por exemplo, o Ubuntu MATE 14.10 não). Sem ele, o dispositivo MTP não será montado como um caminho local e somente poderá ser usado por aplicativos que suportam URIs gvfs.
precisa saber é o seguinte
2
Eu encontrei o gvfs/diretório eventualmente. No entanto, em vez de $ USER, o caminho neste PC é: /run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C003%5D- Para outros, sugiro que você dê uma olhada, se não o encontrar imediatamente.
será
94

A memória do meu dispositivo Nexus pode ser acessada em:

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

Portanto, se seu $ UID for 1000, você poderá encontrá-lo fazendo

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

ou (para o local exato em um exemplo, supondo que seu UID seja 1000),

$ cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
Babken Vardanyan
fonte
2
Essa deve ser a resposta aceita, pois não requer a instalação de nenhum software adicional. Muito obrigado user2529583!
NH.
Alguma idéia se o mtp*nome do arquivo pode ser renomeado para uso em aplicativos Wine? Naive mvme dá mv: cannot move 'mtp:host=%5Busb%3A001%2C065%5D' to 'mtp': No such file or directory(note que o nome do arquivo é tab-concluída)
Mark Jeronimus
@ Marcar qualquer caractere é um nome de arquivo válido no linux. Veja se existe uma maneira de renomeá-lo sem mv.
Babken Vardanyan
Impressionante. Funciona perfeitamente bem e me salvou bastante de "experimentar" o Raspbian Wheezy e Jessie
Zimano
11
Ubuntu 16.04 e Honor 9 Lite. Depois de conectar, a /run/user/1000/gvfspasta do telefone está vazia.
LRDPRDX
25

MTP O dispositivo montado geralmente pode ser encontrado em: /run/user/1000/gvfs/


por exemplo, se a barra de endereço do Nautilus aparecer mtp://[usb:001,006]/, você poderá acessar por:

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

agora no terminal você pode copiar arquivos ou pastas:

  • CD na pasta -> cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
  • copie as pastas necessárias para o diretório atual -> cp -r ~/videos/ .
suhailvs
fonte
2
Funciona exatamente como você diz. Mas quando eu faço 'ls -a', ele fica vazio.
ycc_swe
10

Digite mount. Isso listará todos os sistemas de arquivos ativos.

waltinator
fonte
14
Não, o dispositivo não aparece na saída.
LiveWireBT
11
Hmm. Isso meio que funcionou. Encontrei-o em / run / user / myusername / gvfs /. No entanto, todos os nomes de pastas são apenas números, em vez dos nomes reais que vejo no Nautilus. Como tal, isso realmente não resolve o meu problema, porque ainda não consigo usar facilmente o terminal para mover arquivos para o dispositivo.
Bessman
Quando o Nautilus tiver o dispositivo MTP aberto, use os comandos lsof -c nautilus | lesspara listar todos os arquivos que o Nautilus abriu.
waltinator
11
Que resolveu para mim :)
Marlar
10

Isso está trabalhando com:

  • Linux Mint 17.3
  • Samsung Galaxy S5

tente isto:

  1. apt-get install mtpfs
  2. apt-get install mtp-tools
    • #sim poderia ser uma linha (isso é opcional )
  3. sudo mkdir -p /media/mtp/phone
  4. sudo chmod 775 /media/mtp/phone
    • #Pessoalmente, restringiria as permissões ao NO-eXecute
    • #Neste ponto, não tenho certeza do que é suficiente para montar.
  5. Desconecte o telefone micro-USB e plug-in e, em seguida ...
  6. sudo mtpfs -o allow_other /media/mtp/phone
  7. ls -lt /media/mtp/phone

resultado:

 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

resultado:

 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

Listando o acesso ao cartão SD no meu telefone Android. " Playlists " é um diretório virtual chamado "/ Playlists" que contém suas playlists como arquivos .m3u. (por man mtpfs)

Isso parece fazer o truque. Comandos úteis para lembrar ...

  • sudo mtpfs -h... lista as opções do dispositivo. Isso parece funcionar apenas antes de você montar o dispositivo. Portanto, verifique primeiro, talvez.
  • mtp-detect... mostra muitas coisas sobre o dispositivo (parte do mtp-tools).

Também acho que você precisa do telefone / dispositivo " ligado ", abra o protetor de tela, se tiver um, para que o dispositivo possa se conectar.

Notei que meu USB-s é montado como:

  • / media / will / usbdrive

Portanto, pode fazer mais sentido montar sob o seu nome de usuário em vez do stub "mtp". Leia também o post: " Montando o seu cartão SD do Android MTP no Ubuntu ", tem algumas sugestões e extras úteis.

referências:

Assumi minha liderança nesses dois posts:

vai
fonte
Oi, embora isso funcione, ainda acho que o MTP é muito lento e, muitas vezes, é como se meu PC Linux estivesse bloqueado. Apoio os comentários adicionais sobre o uso do FTP. Eu fiz algumas escavações e recomendo o aplicativo sshelper . É muito útil, de código aberto e maduro. Funcionará com Windows, Linux e Mac - ou qualquer coisa que suporte SSH. Fácil de usar também. Dê uma chance.
vai
8

Eu tenho um telefone LG2 e estou executando o Xubuntu 15.10.

Foi assim que montei o dispositivo no diretório mnt no meu usuário.

  1. Primeiro, verifique se você tem os seguintes pacotes instalados no seu sistema.

    sudo apt-get install jmtpfs mtp-tools
    
  2. Conecte seu telefone como dispositivo MTP e digite o seguinte comando no seu terminal.

    mtp-detect
    
  3. Descomentar user_allow_otherno arquivo /etc/fuse.conf.

  4. Crie um diretório mntno seu diretório pessoal.

    mkdir mnt
    
  5. Monte o dispositivo.

    jmtpfs ~/mnt
    
  6. É isso aí. Agora seu dispositivo está montado no mntdiretório criado na etapa 4 .

Nota: Pode haver algumas etapas desnecessárias. Mas seguir os passos acima funcionou para mim.

Referência: https://wiki.archlinux.org/index.php/MTP

Coração de ferro
fonte
6

Esta não é uma resposta direta ao problema, mas uma solução, no entanto.

Depois de experimentar inconsistências com a conectividade USB, ignorei todos os sistemas .gvfs e USB.

Eu instalei um servidor ftp simples no android e pronto! Conecte-se ao servidor (ftp com login ou sem, dependendo de sua escolha) no Nautilus / nemo / thunar e pronto.

A sincronização de pastas é realizada através do OwnCloud e / ou BitTorrentSync.

E o FTP pela rede sem fio é muito mais rápido que a conexão USB.

Nick Heywood
fonte
5

MTP é um protocolo, bem como FTP ou SSH. Ele busca arquivos quando o usuário solicita. Portanto, não há sistema de arquivos montado no computador.

Use mtpfs para fazer com que pareça um sistema de arquivos montado.

mtpfs <a_folder_to_mount>

Não há necessidade de especificar o dispositivo. Se você tiver apenas um dispositivo conectado, não haverá ambiguidade. Não testei com vários dispositivos conectados ao meu computador.

Krishnendu
fonte
4

Eu não sei exatamente para atravessar para o local MTP via terminal. No entanto, descobri que podemos clicar com o botão direito do mouse no armazenamento interno / cartão SD e escolher a opção "Abrir no terminal". Fazendo isso, o local é aberto diretamente no Terminal.

Vikas Mohan
fonte
2
Uma captura de tela real (do buffer de moldura interno) seria muito melhor do que uma foto da tela (com uma câmera externa).
David Foerster
1

Eu sou capaz de gerenciar arquivos em um dispositivo MTP conectado Android usando gvfs-*comandos (por exemplo gvfs-cp, gvfs-move...) que também são mencionados no seguinte artigo da Wikipedia : gvfs .

Eu escrevi um utilitário CLI simples para sincronização de arquivos de / para um dispositivo Android: https://github.com/DusanMadar/PySyncDroid

Dušan Maďar
fonte
11
Basta ir para o diretório e uso rsync
Evan Carroll