У меня есть телефон Android, который подключается к моему компьютеру через MTP. Это работает нормально; я могу просматривать и передавать файлы с помощью Nautilus. Однако я часто хочу использовать терминал для перемещения большого количества файлов, и, похоже, я не могу найти устройство нигде в дереве файловой системы. Наутилус сообщает о местоположении следующим образом mtp://[usb:003,007]/, но это не под /media или /mnt.
Как вы уже сделали выяснил, точки монтирования находятся в /run/user/$USER/gvfs/ (или /var/run/user/$UID/gvfs) и названы в честь протокола, типа соединения и адреса, которые они используют. Что усложняет ситуацию, поскольку адрес подключения может меняться каждый раз, когда вы повторно подключаете устройство, даже если это один и тот же порт. Если у вас есть одно и то же устройство дважды, это становится еще хуже.
Вы можете использовать lsusb для отображения всех подключенных USB-устройств с терминала:
$ lsusb | grep Google # Note: This is a Nexus 4, change accordinglyBus 002 Device 025: ID 18d1:4ee2 Google Inc.
Как вы заметили, Nautilus также предоставляет эту информацию с помощью всплывающей подсказки. Вы найдете закодированную форму, например 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: Я удалил сценарий, который ранее был включен в этот ответ из-за нехватки времени на техническое обслуживание и улучшения. Вы все еще можете найти его в истории изменений.
# Лично я бы ограничил разрешения на НЕТ-выполнить
# На данный момент я не уверен, что это достаточно чтобы сесть на лошадь.
Затем отсоедините телефон от Micro-USB и подключите его к розетке...
sudo mtpfs -o allow_other /media/mtp/phone
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
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. "Плейлисты" - это виртуальный каталог под названием "/Playlists", который содержит ваши плейлисты в виде файлов .m3u. (за man mtpfs)
Это, кажется, делает свое дело. Полезные команды для запоминания...
sudo mtpfs -h ... перечисляет параметры устройства. Похоже, это работает только до того, как вы смонтируете устройство. Так что, возможно, сначала проверьте.
mtp-detect ... показывает множество материал об устройстве (часть mtp-tools).
Кроме того, я думаю, вам нужен телефон / устройство "на", откройте экранную заставку, если она у вас есть, чтобы устройство могло подключиться.
Я заметил, что мой USB-s монтируется как:
/средства массовой информации/воля/usb-накопитель
Так что, возможно, имеет больше смысла монтировать под вашим именем пользователя вместо заглушки "mtp". Кроме того, просмотрите сообщение: "Установка SD-карты MTP Androids на Ubuntu", в нем есть несколько полезных предложений и дополнений.
Я не знаю точно, как перейти к местоположению MTP через терминал. Однако я обнаружил, что мы можем щелкнуть правой кнопкой мыши на внутренней памяти / SD-карте и выбрать опцию "Открыть в терминале". При этом местоположение открывается непосредственно в терминале.
Это не прямой ответ на проблему, но, тем не менее, решение.
После того, как я столкнулся с несогласованностью с подключением по USB, я обошел систему .gvfs и USB все вместе.
Я установил простой ftp-сервер на Android и вуаля! Подключитесь к серверу (либо ftp с логином, либо без него, в зависимости от того, как вы выберете) из Nautilus / nemo / thunar, и все готово.
Синхронизация папок осуществляется через ownCloud и/или BitTorrentSync.
И FTP по беспроводной сети намного быстрее, чем при подключении по USB.
MTP - это протокол, очень похожий на FTP или SSH. Он извлекает файлы, когда пользователь запрашивает их. Таким образом, на компьютере нет смонтированной файловой системы.
Используйте mtpfs, чтобы он выглядел как смонтированная файловая система.
mtpfs <a_folder_to_mount>
Нет необходимости указывать устройство. Если у вас подключено только одно устройство, то никакой двусмысленности нет. Я не тестировал его с несколькими устройствами, подключенными к моему компьютеру.
После доступа к правильному пути, как сказано здесь и другие ответы, хорошая идея - добавить неизменяемый путь (например /run/user/1000/gvfs) в качестве закладки на левой панели файлового менеджера. Когда телефон отключен, эта папка будет пустой.
Я заметил, что существует разница между параметрами, доступными для файла, доступ к которому осуществляется таким образом и те, которые доступны для того же файла при доступе "обычным" способом, с помощью mtp:// путь (нажав "mtp" или имя / номера устройства на левой панели): при доступе с помощью /run/user/.../gvfs файл имеет в контекстном меню ("Открыть с помощью") все ожидаемые параметры; эти параметры ограниченный (уменьшено до значений по умолчанию / ванильных), когда к файлу обращается mtp://. Кроме того, некоторые программы (например, MKVToolNix) не могут получить доступ к файлу с помощью mtp:// путь, но они могут пойти другим путем. Этот аспект может стать важным в некоторых сценариях, например, когда нужно создать / загрузить файл на телефон, обработать его с помощью компьютерной программы (например, MKVToolNix) и вывести его на внешнее устройство.