Не мог выполнить операции файла на устройстве MTP, смонтированном через GVFS: “Операция, не поддерживаемая”

Попытайтесь добавить эту строку к своему .emacs файлу.

(add-hook 'term-mode-hook 'char-line-mode)
13
29.03.2015, 00:06
6 ответов

Догадка: теперь вы фактически используете MTP для доступа к вашему Walkman, и MTP - отстой.

Подробности

Ошибка Операция не поддерживается может указывать на то, что ваш Walkman использует реализацию MTP, которая не поддерживает "прямой" доступ. Согласно http://intr.overt.org/blog/?p=174 этот тип прямого доступа является расширением, специфичным для Android, поэтому он, вероятно, не поддерживается вашим Walkman.

В результате, вы можете использовать только несколько выбранных способов доступа к файлам на вашем Walkman с помощью MTP: я думаю, что поддерживается все, что читает или записывает файлы за одну операцию, в то время как доступ к выбранным частям файла не поддерживается для этих реализаций MTP. И получается, что cp и Python всегда используют последний метод доступа и, следовательно, терпят неудачу.

Возможное обходное решение

Однако, вы можете просто заменить cp на gvfs-копию . В моих тестах с телефоном Samsung на платформе Android (который также имеет поврежденную реализацию MTP) gvfs-copy смог скопировать файлы на телефон, где cp не удалось.

Background

Я не смог найти много информации об этих ограничениях MTP, зависящих от устройства; вот несколько фрагментов, где ситуация несколько объяснена:

https://askubuntu.com/a/284831 https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1389001/comments/2 https://bugs.launchpad. net/ubuntu/+source/gvfs/+bug/1157583/comments/1

Почему это раньше работало?

Что касается того, почему ваш Walkman был доступен с помощью cp на Минт 14, но не на Минт 17, это может быть вызвано внутренним переключением с PTP на MTP в качестве системы доступа. По крайней мере, именно это я заметил у устройства Samsung при переключении с Ubuntu 12.04 на 14.04. Телефон поддерживает как PTP, так и MTP, но Ubuntu 12.04, по-видимому, поддерживает только PTP; так что именно это и было использовано. Так как новая версия Ubuntu имеет встроенную поддержку MTP, она теперь используется вместо этого.

На самом деле, возможно, даже в том случае, если ваш Walkman ранее был доступен как USB-устройство хранения данных , который является то, что USB-жесткие диски и флэш-накопители используют. Может быть, по какой-то причине Linux (или ваш Walkman) решил, что MTP предпочтительнее, чем доступ к запоминающим устройствам.

Способ доступа можно увидеть, посмотрев на URL для Walkman (в Nautilus, перейдите в папку Walkman, нажмите Ctrl+L и посмотрите на адресную строку): для MTP устройство найдено, например, под. mtp://[usb:001,004]/, в то время как для PTP это что-то вроде gphoto2://[usb:001,004]/store_00010001. Для доступа к массовому хранилищу URL - это обычный путь типа /медиа/WALKMAN.

Я не знаю, имеет ли MTP какие-либо реальные преимущества по сравнению с PTP или массовым хранением, или можно ли переключиться обратно на PTP или массовое хранение. В реализации MTP и PTP под Linux есть свой набор ошибок, так что это может зависеть от того, какая из них лучше. Массовое хранилище AFAIK является наиболее желательным вариантом для пользователя, но поддержка устройств в телефонах ослабевает.

14
27.01.2020, 19:53

Чтобы получить доступ к моему мобильному телефону, мне пришлось установить MTP-сервер через менеджер Synaptic Package на My Minux Mint 17.1. Мой предыдущий Mate Linux Mint 17 Mate не требовал меня установить MTP-сервер, мой мобильный телефон был автоматически распознан при подключении через USB-порт. Может быть, эта информация поможет.

2
27.01.2020, 19:53

Я столкнулся с этой проблемой на Ubuntu 16.04 и Samsung Galaxy SIII, подключенном в режиме MTP.

Используя предложение Оливера использовать gvfs-copy, копирование напрямую с моего NAS на телефон не работает: (как и Nautilus). Это обходной путь для возможной ошибки в gvfs-copy.

gvfs-copy '/run/user/1000/gvfs/smb-share:server=n2100,share=public/Music/The Story of Funk-1.mp2' '/run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C005%5D/Card/Music/Radio/'
Error copying file /run/user/1000/gvfs/smb-share:server=n2100,share=public/Music/The Story of Funk-1.mp2: Operation unsupported

Не работает и альтернативный формат пути, предложенный в руководстве:

gvfs-copy 'smb://n2100/public/Music/The Story of Funk-1.mp2' 'mtp://[usb:001,005]/Card/Music/Radio'
Error copying file smb://n2100/public/Music/The Story of Funk-1.mp2: Operation unsupported

Однако копирование файла в локальную папку сначала сработало. {Спасибо akostadinov} (как и Nautilus).

gvfs-copy '/home/nigel/The Story of Funk-1.mp2' 'mtp://[usb:001,005]/Card/Music/Radio'
2
27.01.2020, 19:53

В Debian Jessie у меня работает gvfs-copy из пакета gvfs-bin .

$ dpkg -S $(which gvfs-copy)
gvfs-bin: /usr/bin/gvfs-copy
$ dpkg -l gvfs-bin |tail -1
ii  gvfs-bin       1.22.2-1     amd64        userspace virtual filesystem - binaries
1
27.01.2020, 19:53

Вы можете попробовать использовать rsync для синхронизации с вашим устройством, хотя при передаче MTP вы обычно не можете устанавливать отметку времени и даты для каждого файла. Чтобы ускорить передачу, вы должны использовать опцию --size -only для rsync, а не опцию -t. Я считаю, что проще всего сменить каталог на каталог mtp, например, /run/user/1000/gvfs/mtp :host=blahblah/blah/blah, затем запустить:

rsync -n -vlr --size-only --delete /source/of/files/./

Опция -n предназначена для пробного прогона. Просто сотрите эту опцию, если вы удовлетворены результатами.

0
27.01.2020, 19:53

Попробуйте использовать gio copyдля работы с Ubuntu 20.04.2 LTS и Samsung A21s.

0
28.04.2021, 15:05

Теги

Похожие вопросы