Linux-Mint

無法在通過 GVFS 掛載的 MTP 設備上執行文件操作:“不支持操作”

  • July 23, 2021

我正在執行 Linux Mint 17.1 64 位(基於 Ubuntu 14.04)。自從從 Linux Mint 14/Ubuntu 12.10 升級後,我用來將音樂同步到隨身聽的 Python 腳本就停止工作了。

以前,當我安裝我的 Walkman 時,它會自動顯示為路徑/run/user/1000/gvfs/WALKMAN/Storage Media,並且可以像任何其他文件系統一樣工作:我可以將曲目複製到它,從中刪除曲目等,所有這些都通過 Python。但是,我不記得是否必須進行任何更改才能實現這一點。

自從升級到 Linux Mint 17(現在是 17.1)後,當我掛載 Walkman 時,它顯示為 path /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 版本包含所有這些更改,因此不再需要它。那麼為什麼我仍然有這些錯誤?我仍然可以通過圖形文件管理器(Caja,在 Linux Mint 上)對 Walkman 進行文件操作,而不是通過命令行。

一個猜測:您現在實際上是在使用 MTP 來訪問您的 Walkman,而 MTP 很糟糕。

細節

Operation not supported錯誤可能表明您的 Walkman 使用不支持“直接”訪問的 MTP 實現。根據http://intr.overt.org/blog/?p=174,這種直接訪問是 Android 特定的擴展,因此您的 Walkman 可能不支持它。

因此,您只能使用幾種選定的方式來使用 MTP 訪問 Walkman 上的文件:我想在一次操作中讀取或寫入文件的所有內容都受支持,而這些 MTP 實現不支持訪問文件的選定部分. 而且看起來cpPython 總是使用後一種訪問方法,因此失敗了。

可能的解決方法

但是,您也許可以只替換cpgvfs-copy. 在我對三星 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

為什麼之前有效?

至於為什麼在 Mint 14 中可以訪問您的 Walkman 而在 Mint 17 中無法訪問,這可能是由於從PTPMTP作為訪問系統cp的內部切換造成的。至少這是我在從 Ubuntu 12.04 切換到 14.04 時注意到的三星設備。手機同時支持 PTP 和 MTP,但 Ubuntu 12.04 顯然只支持 PTP;所以這就是使用的。由於新的 Ubuntu 版本內置了對 MTP 的支持,因此現在使用它來代替。

實際上,您的 Walkman 甚至可能以前作為USB 大容量儲存設備訪問過,這是 USB 硬碟和快閃記憶體驅動器使用的。也許出於某種原因,Linux(或您的隨身聽)認為 MTP 比海量儲存訪問更可取。

您可以通過查看 Walkman 的 URL 來查看使用的訪問方法(在 Nautilus 中,轉到 Walkman 文件夾,按 Ctrl+L 並查看地址欄):對於 MTP,該設備位於例如。mtp://[usb:001,004]/而對於 PTP,它類似於gphoto2://[usb:001,004]/store_00010001. 對於大容量儲存訪問,URL 只是一個普通路徑,例如/media/WALKMAN.

我不知道 MTP 是否比 PTP 或大容量儲存有任何實際優勢,或者是否可以切換回 PTP 或大容量儲存。在 Linux 下,MTP 和 PTP 實現都有自己的一組錯誤,因此可能取決於您的案例,哪個更好。AFAIK 大容量儲存是使用者最理想的選擇,但手機中的設備支持正在減弱。

引用自:https://unix.stackexchange.com/questions/193132