저는 Linux Mint 17.1 64비트(Ubuntu 14.04 기반)를 실행하고 있습니다. Linux Mint 14/Ubuntu 12.10에서 업그레이드한 이후 Walkman에 음악을 동기화하는 데 사용하는 Python 스크립트가 작동을 멈췄습니다.
이전에는 Walkman을 설치하면 자동으로 경로로 표시되어 /run/user/1000/gvfs/WALKMAN/Storage Media
다른 파일 시스템처럼 작동했습니다. Python을 통해 트랙을 복사하고 삭제할 수 있었습니다. 그러나 이를 달성하기 위해 어떤 변경을 해야 했는지 기억이 나지 않습니다.
Walkman을 설치할 때 Linux Mint 17(현재 17.1)로 업그레이드한 이후 경로로 표시됩니다 /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Media
. 또한 동일한 파일 작업을 실행하려고 하면 이제 실패합니다. 나는 이것이 Python뿐만 아니라 명령줄에서도 발생한다는 것을 발견했습니다. 예를 들어:
david@MILTON:~$ cp '/data/Music/10SecsWhiteNoise.mp3' '/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Storage Media/MUSIC'
cp: cannot create regular file ‘/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Storage Media/MUSIC/10SecsWhiteNoise.mp3’: Operation not supported
이 문제에 대해 몇 가지 연구를 수행했지만 가장 일반적인 설명은 이전에 이 PPA로 해결되었다는 것입니다.https://launchpad.net/~langdalepl/+archive/ubuntu/gvfs-mtp
하지만 이제 13.10의 Ubuntu 버전에는 이러한 모든 변경 사항이 포함되어 있으므로 더 이상 필요하지 않습니다. 그렇다면 왜 여전히 이러한 오류가 발생합니까? 명령줄이 아닌 그래픽 파일 관리자(Linux Mint의 Caja)를 통해 Walkman에서 파일 작업을 계속 수행할 수 있습니다.
답변1
추측: 실제로 MTP를 사용하여 Walkman에 액세스하고 있는데 MTP가 형편없습니다.
세부 사항
이 Operation not supported
오류는 Walkman이 "직접" 액세스를 지원하지 않는 MTP 구현을 사용하고 있음을 나타낼 수 있습니다. ~에 따르면http://intr.overt.org/blog/?p=174이 직접 액세스는 Android 전용 확장 프로그램이므로 Walkman이 이를 지원하지 않을 수도 있습니다.
따라서 MTP를 사용하여 Walkman의 파일에 액세스하는 방법은 몇 가지뿐입니다. 단일 작업으로 파일의 전체 내용을 읽거나 쓰는 것을 지원하고 싶지만 이러한 MTP 구현은 파일의 선택된 부분에 액세스하는 것을 지원하지 않습니다. cp
Python은 항상 후자의 액세스 방법을 사용하므로 실패하는 것 같습니다 .
가능한 해결책
하지만 cp
그냥 gvfs-copy
.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이 Mint 14에서는 작동하지만 Mint 17에서는 작동하지 않는 이유는 cp
내부 스위치 때문일 수 있습니다.피어 투 피어도착하다MTP액세스 시스템으로. 적어도 그것이 Ubuntu 12.04에서 14.04로 전환할 때 삼성 장치에서 발견한 것입니다. 전화기는 PTP와 MTP를 모두 지원하지만 Ubuntu 12.04는 분명히 PTP만 지원합니다. 새로운 Ubuntu 버전에는 MTP 지원 기능이 내장되어 있으므로 대신 이를 사용하십시오.
실제로 Walkman에 이전에 액세스한 적이 있을 수도 있습니다.USB 대용량 저장 장치, USB 하드 드라이브 및 플래시 드라이브에 사용됩니다. 아마도 어떤 이유에서인지 Linux(또는 Walkman)는 대용량 저장소 액세스보다 MTP를 선호하는 것으로 간주합니다.
Walkman의 URL을 보면 어떤 액세스 방법이 사용되는지 확인할 수 있습니다(노틸러스에서는 Walkman 폴더로 이동하여 Ctrl+L을 누르고 주소 표시줄을 확인하세요). MTP의 경우 장치는 다음에서 찾을 수 있습니다. 예. mtp://[usb:001,004]/
PTP의 경우에도 비슷합니다 gphoto2://[usb:001,004]/store_00010001
. 대용량 저장소 액세스의 경우 URL은 일반적인 경로입니다(예: /media/WALKMAN
.
MTP가 PTP나 대용량 저장소에 비해 실질적인 이점이 있는지, 아니면 PTP나 대용량 저장소로 다시 전환할 수 있는지는 모르겠습니다. Linux에서는 MTP와 PTP 구현 모두 고유한 버그 세트를 갖고 있으므로 어느 것이 더 나은지는 사용 사례에 따라 달라질 수 있습니다. 내가 아는 한, 대용량 저장소는 사용자에게 가장 이상적인 옵션이지만 휴대폰의 장치 지원은 점점 줄어들고 있습니다.
답변2
내 휴대폰에 액세스하려면 Linux Mint 17.1 Mate의 Synaptic Package Manager를 통해 mtp-server를 설치해야 했습니다. 이전 Linux Mint 17 Mate에서는 mtp 서버를 설치할 필요가 없었고 USB 포트를 통해 연결되면 자동으로 휴대폰을 인식했습니다. 아마도 이 정보가 도움이 될 것입니다.
답변3
Ubuntu 16.04 및 MTP 모드로 연결된 Samsung Galaxy SIII에서 이 문제가 발생했습니다.
Oliver가 제안한 대로 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에게 감사드립니다}(노틸러스도 마찬가지입니다).
gvfs-copy '/home/nigel/The Story of Funk-1.mp2' 'mtp://[usb:001,005]/Card/Music/Radio'
답변4
Debian Jessie에서는 gvfs-copy
from package가 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