Где в файловой системе находятся подключенные к MTP устройства?

207

У меня есть телефон Android, который соединяется с моим компьютером через MTP. Это отлично работает; Я могу видеть и передавать файлы с помощью Nautilus. Тем не менее, я часто хочу использовать терминал для перемещения большого количества файлов, и я не могу найти устройство где-либо в дереве файловой системы. Наутилус сообщает о местоположении как mtp://[usb:003,007]/, но это не под /mediaили /mnt.

Кто-нибудь знает где это?

Бэссман
источник

Ответы:

154

Как вы уже узнали , точки монтирования находятся в /run/user/$USER/gvfs/(или /var/run/user/$UID/gvfs) и называются в соответствии с протоколом, типом соединения и адресом, который они используют. Это усложняет задачу, поскольку адрес подключения может меняться каждый раз, когда вы подключаете устройство, даже если это один и тот же порт. Если у вас есть одно и то же устройство дважды, становится еще хуже.

Вы можете использовать lsusbдля отображения всех подключенных USB-устройств с терминала:

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

Как вы заметили, Наутилус также предоставляет эту информацию через всплывающую подсказку. Вы найдете закодированную форму, например, mtp://[usb:002,025]в /run/user/$USER/gvfs(или /var/run/user/$UID/gvfs) какmtp:host=%5Busb%3A002%2C025%5D


Правка Аскера: для этого требуется более новая версия libmtp и / или gvfs, чем та, которая доступна по умолчанию в 13.04. Запустите sudo add-apt-repository ppa:langdalepl/gvfs-mtpи обновите, прежде чем делать что-либо еще.


Изменить: PPA больше не требуется в Saucy / 13.10 и новее, имена файлов перечислены в терминале, как и в Nautilus.

Изменить 2016-01-11: я удалил сценарий, который ранее был включен в этот ответ из-за нехватки времени на обслуживание и улучшения. Вы все еще можете найти его в истории изменений.

LiveWireBT
источник
Спасибо за ваш ответ. К сожалению, это не работает, потому что реальные имена папок (например, / DCIM / Camera /) видны только в Nautilus, а не в терминале. Таким образом, $ Path / DCIM / Camera не доступен с rsync.
Бессман
2
Путь является лишь примером и отличается для телефонов Android. Телефон также должен быть разблокирован через экран блокировки, чтобы обеспечить доступ к данным.
LiveWireBT
Путь /DCIM/Camera/существует на моем телефоне, но в терминале он называется /2404/2407/. Это проблема. Если я cdвхожу /2404/2407/и бегаю nautilus ., то /DCIM/Camera/открывается. Телефон разблокирован, иначе я бы не смог получить к нему доступ через Наутилус, верно?
Бессман
5
Обратите внимание, что для того, чтобы все это работало, вам нужно установить gvfs-fuseпакет. Не во всех версиях / вариантах Ubuntu он есть по умолчанию (например, в Ubuntu MATE 14.10 его нет). Без этого устройство MTP не будет подключено как локальный путь и будет доступно только приложениям, которые поддерживают URI gvfs.
user149408
2
Я нашел gvfs/каталог в конце концов. Однако вместо $ USER путь на этом ПК: /run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C003%5D- Для других, я предлагаю вам просто покопаться, если вы не найдете его сразу.
будет
94

Доступ к памяти моего устройства Nexus можно получить по адресу:

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

Так что, если ваш $ UID 1000, вы можете найти его, выполнив

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

или (для точного местоположения в примере, предполагая, что ваш UID равен 1000),

$ cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
Бабкен Варданян
источник
2
Это должен быть принятый ответ, поскольку он не требует установки какого-либо дополнительного программного обеспечения. Большое спасибо user2529583!
НХ.
Любая идея, если mtp*имя файла можно переименовать для использования в приложениях Wine? Наивный mvдает мне mv: cannot move 'mtp:host=%5Busb%3A001%2C065%5D' to 'mtp': No such file or directory(обратите внимание, что имя файла завершено табуляцией)
Марк Jeronimus
@Mark любой символ является допустимым именем файла в Linux. Посмотрите, есть ли способ переименовать его без mv.
Бабкен Варданян
Потрясающие. Он отлично работает и избавил меня от многих «испытаний» Распбиана Уизи и Джесси
Зимано
1
Ubuntu 16.04 и Honor 9 Lite. После подключения телефона /run/user/1000/gvfsпапка пуста.
LRDPRDX
25

MTP Установленное устройство обычно можно найти в: /run/user/1000/gvfs/


например, если ваша адресная строка Nautilus показывает mtp://[usb:001,006]/, то вы можете получить доступ по:

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

Теперь на терминале вы можете копировать файлы или папки:

  • перейдите в папку -> cd /run/user/1000/gvfs/mtp\:host=%5Busb%3A001%2C006%5D/
  • затем скопируйте необходимые папки в текущий каталог -> cp -r ~/videos/ .
suhailvs
источник
2
Это работает так, как вы говорите. Но когда я делаю 'ls -a', он пуст.
ycc_swe
10

Тип mount. Это будет список всех активных файловых систем.

waltinator
источник
14
Нет, устройство не отображается на выходе.
LiveWireBT
1
Хм. Такого рода работа Я нашел его в / run / user / myusername / gvfs /. Тем не менее, все следующие имена - просто цифры, а не настоящие имена, которые я вижу в Наутилусе. Таким образом, это не решает мою проблему, потому что я все еще не могу легко использовать терминал для перемещения файлов на устройство.
Бессман
Когда Nautilus имеет открытое устройство MTP, используйте команды lsof -c nautilus | lessдля просмотра списка всех файлов, открытых Nautilus.
вальтинатор
1
Это решило это для меня :)
marlar
10

Это работает с:

  • Linux Mint 17.3
  • Samsung Galaxy S5

попробуй это:

  1. apt-get install mtpfs
  2. apt-get install mtp-tools
    • #да может быть одна строка (это необязательно )
  3. sudo mkdir -p /media/mtp/phone
  4. sudo chmod 775 /media/mtp/phone
    • #Лично я бы ограничил разрешения для NO-eXecute
    • #На данный момент я не уверен, что достаточно для установки.
  5. Отключите телефон от micro-USB и подключите, а затем ...
  6. sudo mtpfs -o allow_other /media/mtp/phone
  7. ls -lt /media/mtp/phone

выход:

 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

выход:

 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

Доступ к SD-карте на моем телефоне Android. « Плейлисты » - это виртуальный каталог под названием «/ Плейлисты», который содержит ваши плейлисты в виде файлов .m3u. (за man mtpfs)

Это, кажется, делает трюк. Полезные команды для запоминания ...

  • sudo mtpfs -h... перечисляет параметры устройства. Кажется, это работает только до того, как вы установили устройство. Так что проверьте сначала, возможно.
  • mtp-detect... показывает много материала об устройстве (часть MTP-инструментов).

Также я думаю, что вам нужно, чтобы телефон / устройство было включено , откройте экранную заставку, если она у вас есть, чтобы устройство могло подключиться.

Я заметил, что мои USB-ы монтируются как:

  • / media / will / usbdrive

Так что может быть более разумно монтировать под своим именем пользователя вместо заглушки "mtp". Также просмотрите пост « Монтирование SD-карты Android MTP в Ubuntu », там есть несколько полезных советов и дополнений.

Рекомендации:

Я взял на себя инициативу из этих двух сообщений:

будем
источник
Привет, хотя это работает, я все еще нахожу, что MTP слишком медленный, и часто это так, как будто мой компьютер с Linux заблокирован. Я поддерживаю дальнейшие комментарии по использованию FTP. Я покопался и порекомендовал приложение sshelper . Это очень полезно, с открытым исходным кодом, и зрелым. Будет работать с Windows, Linux и Mac - или всем, что поддерживает SSH. Прост в использовании тоже. Попробуй.
будет
8

Я получил телефон LG2 и использую Xubuntu 15.10.

Вот как я смонтировал устройство в директории mnt под моим пользователем.

  1. Сначала убедитесь, что в вашей системе установлены следующие пакеты.

    sudo apt-get install jmtpfs mtp-tools
    
  2. Подключите телефон как устройство MTP и введите следующую команду в своем терминале.

    mtp-detect
    
  3. Раскомментируйте user_allow_otherв файле /etc/fuse.conf.

  4. Создайте каталог mntв вашем домашнем каталоге.

    mkdir mnt
    
  5. Смонтируйте устройство.

    jmtpfs ~/mnt
    
  6. Это оно. Теперь ваше устройство подключено к mntкаталогу, созданному на шаге 4 .

Примечание: могут быть некоторые ненужные шаги. Но следующие шаги сработали для меня.

Ссылка: https://wiki.archlinux.org/index.php/MTP

Железное сердце
источник
6

Это не прямой ответ на проблему, но, тем не менее, решение.

Испытав несоответствие с USB-подключением, я обошел все .gvfs и USB-систему.

Я установил простой FTP-сервер на Android и вуаля! Подключитесь к серверу (либо по ftp с логином или без, в зависимости от того, как вы выберете) из Nautilus / nemo / thunar и все готово.

Синхронизация папок обрабатывается через OwnCloud и / или BitTorrentSync.

И FTP через беспроводную сеть работает намного быстрее, чем USB-соединение.

Ник Хейвуд
источник
5

MTP - это протокол, очень похожий на FTP или SSH. Он выбирает файлы, когда пользователь просит об этом. Таким образом, на компьютере нет смонтированной файловой системы.

Используйте mtpfs, чтобы он выглядел как смонтированная файловая система.

mtpfs <a_folder_to_mount>

Не нужно указывать устройство. Если у вас подключено только одно устройство, то двусмысленности нет. Я не тестировал его с несколькими устройствами, подключенными к моему компьютеру.

Krishnendu
источник
4

Я не знаю точно, чтобы перейти к местоположению MTP через терминал. Однако я обнаружил, что мы можем щелкнуть правой кнопкой мыши на внутренней памяти / SD-карте и выбрать опцию «Открыть в терминале». При этом местоположение открывается непосредственно в Терминале.

Викас Мохан
источник
2
Реальный скриншот (с внутренним кадровым буфером) был бы намного лучше, чем фотография экрана (с внешней камерой).
Дэвид Фёрстер
1

Я могу управлять файлами на MTP подключен Android устройства с помощью gvfs-*команд (например gvfs-cp, gvfs-move...) , которые также упоминаются в следующей статье Википедии : GVFS .

Я написал простую утилиту CLI для синхронизации файлов с устройством Android: https://github.com/DusanMadar/PySyncDroid

Душан Магар
источник
1
Просто зайдите в каталог и используйте rsync
Эван Кэрролл