Попытайтесь добавить эту строку к своему .emacs файлу.
(add-hook 'term-mode-hook 'char-line-mode)
Догадка: теперь вы фактически используете 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
не удалось.
Я не смог найти много информации об этих ограничениях 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 является наиболее желательным вариантом для пользователя, но поддержка устройств в телефонах ослабевает.
Чтобы получить доступ к моему мобильному телефону, мне пришлось установить MTP-сервер через менеджер Synaptic Package на My Minux Mint 17.1. Мой предыдущий Mate Linux Mint 17 Mate не требовал меня установить MTP-сервер, мой мобильный телефон был автоматически распознан при подключении через USB-порт. Может быть, эта информация поможет.
Я столкнулся с этой проблемой на 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'
В 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
Вы можете попробовать использовать 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 предназначена для пробного прогона. Просто сотрите эту опцию, если вы удовлетворены результатами.
Попробуйте использовать gio copy
для работы с Ubuntu 20.04.2 LTS и Samsung A21s.