GVFS経由でマウントされたMTPデバイスでファイル操作を実行できませんでした:「操作はサポートされていません」

GVFS経由でマウントされたMTPデバイスでファイル操作を実行できませんでした:「操作はサポートされていません」

私は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実装はファイルの選択された部分へのアクセスをサポートしません。cpPythonは常に後者のアクセス方法を使用しているため失敗するようです。

考えられる解決策

しかし、cpただ。gvfs-copygvfs-copycp

背景

これらのデバイスに関連する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に切り替えたときにSamsungデバイスで発見されました。電話は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-copyfrom 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

関連情報