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


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, muitas vezes eu quero usar o terminal para mover um grande número de arquivos, e não consigo encontrar o dispositivo em qualquer lugar na árvore do sistema de arquivos. Nautilus informa a localização como mtp://[usb:003,007]/, mas não está sob /media ou /mnt.

Alguém sabe onde é?


169
2017-09-06 20:00


origem


Duplicação possível de Exibir caminho acessível 'cd' para o dispositivo mtp no Nemo - dimo414


Respostas:


Como você já descobriu, os pontos de montagem estão em /run/user/$USER/gvfs/ (ou /var/run/user/$UID/gvfs) e são nomeados após o protocolo, tipo de conexão e endereço que eles usam. O que torna as coisas mais difíceis, porque o endereço de conexão pode mudar toda vez que você reconecta o dispositivo, mesmo que seja a mesma porta. Se você tiver o mesmo dispositivo duas vezes, fica ainda pior.

Você pode usar lsusb para exibir todos os dispositivos USB conectados do terminal:

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

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


Asker's edit: Isto parece requerer uma versão mais nova do libmtp e / ou gvfs que está disponível por padrão em 13.04. Corre sudo add-apt-repository ppa:langdalepl/gvfs-mtp e atualize antes de fazer qualquer outra coisa.


Edit: PPA não é mais necessário em saucy / 13.10 e mais recentes, nomes de arquivos são listados no terminal como eles estão no Nautilus.

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


124
2017-09-07 13:25



Obrigado pela sua resposta. Infelizmente, isso não funciona porque os nomes das pastas reais (por exemplo, / DCIM / Camera /) são visíveis apenas no Nautilus, não no terminal. Assim, $ Path / DCIM / Camera não está acessível com o rsync. - bessman
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 cd para dentro /2404/2407/ e corra nautilus ., então /DCIM/Camera/ está aberto. O telefone está desbloqueado, caso contrário eu não conseguiria acessá-lo via Nautilus, certo? - bessman
Note que para que tudo isso funcione, você precisa ter o gvfs-fuse pacote instalado. Nem todas as versões / sabores do Ubuntu têm 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 só será utilizável por aplicativos que suportem URIs gvfs. - user149408
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, eu sugiro que você apenas pique sobre, se você não encontrá-lo imediatamente. - will


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

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

Então, se o seu $ UID é 1000, você pode encontrá-lo fazendo

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

ou (para o local exato em um exemplo assumindo que seu UID é 1000),

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

78
2018-02-15 07:39



este deve ser a resposta aceita, uma vez que não requer a instalação de nenhum software adicional. Muito obrigado user2529583! - NH.
Qualquer ideia se o mtp* filename pode ser renomeado para uso em aplicativos Wine? Ingênuo mv me dá mv: cannot move 'mtp:host=%5Busb%3A001%2C065%5D' to 'mtp': No such file or directory (observe que o nome do arquivo é preenchido por tabulações) - Mark Jeronimus
@Mark qualquer caractere é um nome de arquivo válido no linux. Olha se há uma maneira de renomeá-lo sem mv. - Babken Vardanyan
Impressionante. Ele funciona perfeitamente bem e me salvou um monte de "experimentar" em Raspbian Wheezy e Jessie - Zimano
Ubuntu 16.04 e Honor 9 Lite. Depois de conectar o telefone /run/user/1000/gvfs pasta está vazia. - LRDPRDX


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


por exemplo, se a barra de endereços do Nautilus mostrar mtp://[usb:001,006]/, então você pode 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/ .

21
2018-03-10 04:07



Funciona exatamente como você diz. Mas quando eu faço 'ls -a' está vazio. - ycc_swe


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


10
2017-09-06 21:50



Não, o dispositivo não aparece na saída. - LiveWireBT
Hmm. Esse tipo de trabalho. Eu encontrei 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, 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 tem o dispositivo MTP aberto, use os comandos lsof -c nautilus | less para listar todos os arquivos de arquivos que o Nautilus abriu. - waltinator
Isso resolveu para mim :) - marlar


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 (isto é opcional)
  3. sudo mkdir -p /media/mtp/phone
  4. sudo chmod 775 /media/mtp/phone
    • # Pessoalmente eu restringir as permissões para NO-eXecute
    • # Neste momento não tenho certeza do que é suficiente para montar.
  5. Desligue o telefone micro-USB e plug-in, então ...
  6. sudo mtpfs -o allow_other /media/mtp/phone
  7. ls -lt /media/mtp/phone

saída:

 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

saída:

 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. "Listas de reprodução"é um diretório virtual chamado" / Playlists "que contém suas listas de reprodução como arquivos .m3u. 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ê ter montado o dispositivo. Então cheque primeiro, talvez.
  • mtp-detect ... mostra muitas coisa sobre o dispositivo (parte do mtp-tools).

Também acho que você precisa do telefone / dispositivo "em", abra a proteção de tela se tiver uma para que o dispositivo possa se conectar.

Notei que o meu USB-s montar como:

  • / media / will /pendrive

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

referências:

Eu tomei a liderança desses dois posts:


7
2018-01-11 20:11



Oi, embora isso funcione, eu ainda acho que o MTP é muito lento e muitas vezes é Até parece meu PC Linux está bloqueado. Eu apoio os comentários adicionais sobre o uso do FTP. Eu fiz algumas escavações e recomendo o sshelper aplicativo. É 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. - will


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

Depois de experimentar inconsistência com conectividade USB, eu ignorei o sistema .gvfs e USB juntos.

Eu instalei um servidor ftp simples no android e pronto! Conecte-se ao servidor (ftp com login ou sem, dependendo de como você escolhe) do Nautilus / nemo / thunar e você vai longe.

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

E o FTP via wireless é muito mais rápido do que a conexão USB.


6
2017-10-27 02:11





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

Isto é como eu montei o dispositivo para o diretório mnt no meu usuário.

  1. Primeiro, verifique se você possui os seguintes pacotes instalados em 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_other no arquivo /etc/fuse.conf.

  4. Crie um diretório mnt no seu diretório home.

    mkdir mnt
    
  5. Monte o dispositivo.

    jmtpfs ~/mnt
    
  6. É isso aí. Agora seu dispositivo está montado sob o mnt diretório criado em Passo 4.

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

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


6
2017-12-16 06:00





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

Use o 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á ambigüidade. Eu não testei com vários dispositivos conectados ao meu computador.


4
2018-02-13 08:05





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


2
2018-04-16 10:48



Uma imagem real (do framebuffer interno) seria muito melhor que uma foto da tela (com uma câmera externa). - David Foerster


Eu sou capaz de gerenciar arquivos em um dispositivo Android MTP conectado usando gvfs-* comandos (por ex. gvfs-cp, gvfs-move, ...) que também são mencionados nas seguintes Artigo da Wikipédia: GVfs.

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


0
2017-08-23 17:15



Basta ir ao diretório e usar rsync - Evan Carroll