Không thể thực hiện các thao tác tệp trên thiết bị MTP được gắn qua GVFS: Thao tác không được hỗ trợ


13

Tôi đang chạy Linux Mint 17.1 64-bit (dựa trên Ubuntu 14.04). Kể từ khi nâng cấp từ Linux Mint 14 / Ubuntu 12.10, tập lệnh Python tôi sử dụng để đồng bộ hóa nhạc với Walkman của tôi đã ngừng hoạt động.

Trước đây, khi tôi gắn Walkman, nó sẽ tự động hiển thị dưới dạng đường dẫn /run/user/1000/gvfs/WALKMAN/Storage Mediavà sẽ hoạt động như mọi hệ thống tệp khác: Tôi có thể sao chép các bản nhạc vào nó, xóa các bản nhạc từ nó, v.v., thông qua Python. Tuy nhiên, tôi không thể nhớ nếu tôi phải thực hiện bất kỳ thay đổi nào để điều này xảy ra.

Kể từ khi nâng cấp lên Linux Mint 17 (và bây giờ là 17.1), khi tôi gắn Walkman, nó hiển thị dưới dạng đường dẫn /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Media. Hơn nữa, khi tôi cố chạy các hoạt động tập tin tương tự, bây giờ chúng thất bại. Tôi đã phát hiện ra rằng điều này xảy ra không chỉ thông qua Python mà còn trên dòng lệnh. Ví dụ:

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

Tôi đã thực hiện một số nghiên cứu về vấn đề này, nhưng lời giải thích phổ biến nhất dường như là nó đã được giải quyết trước đây bởi PPA này: https://launchpad.net/~langdalepl/+archive/ubuntu/gvfs-mtp

Nhưng hiện tại, các phiên bản Ubuntu kể từ ngày 13.10 chứa tất cả những thay đổi này nên không còn cần thiết nữa. Vậy tại sao tôi vẫn gặp phải những lỗi này? Tôi vẫn có thể thực hiện các thao tác tệp trên Walkman của mình thông qua trình quản lý tệp đồ họa (Caja, trên Linux Mint), chỉ không qua dòng lệnh.


Tôi nghĩ rằng nó có thể giúp bạn: github.com/hanwen/go-mtpfs
tiếng

Thiết bị của tôi đã được gắn kết là MTP ... đó không phải là vấn đề.
David Pitchford

Câu trả lời:


14

Một dự đoán: bạn hiện đang thực sự sử dụng MTP để truy cập Walkman và MTP rất tệ.

Chi tiết

Các Operation not supportedlỗi có thể chỉ ra rằng Walkman của bạn sử dụng một thực hiện MTP mà không hỗ trợ truy cập "trực tiếp". Theo http://intr.overt.org/blog/?p=174 loại truy cập trực tiếp này là một tiện ích mở rộng dành riêng cho Android, vì vậy có lẽ nó không được Walkman hỗ trợ.

Do đó, bạn chỉ có thể sử dụng một vài cách đã chọn để truy cập tệp trên Walkman bằng MTP: Tôi đoán mọi thứ đọc hoặc ghi tệp trong một thao tác đều được hỗ trợ, trong khi quyền truy cập vào các phần được chọn của tệp không được hỗ trợ cho các triển khai MTP này . Và có vẻ như cpvà Python luôn sử dụng phương thức truy cập sau và do đó thất bại.

Cách giải quyết có thể

Tuy nhiên, bạn có thể chỉ cần thay thế cpbằng gvfs-copy. Trong các thử nghiệm của tôi với điện thoại Samsung Android (cũng có triển khai MTP bị tê liệt) gvfs-copyđã có thể sao chép các tệp vào điện thoại khi cpkhông thành công.

Lý lịch

Tôi không thể tìm thấy nhiều thông tin về những hạn chế MTP phụ thuộc vào thiết bị này; đây là một số đoạn trong đó tình huống được giải thích phần nào:

/ubuntu//a/284831 https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1389001/comments/2 https://bugs.launchpad.net/ubuntu/+source / gvfs / + bug / 1157583 / bình luận / 1

Tại sao nó hoạt động trước đây?

Về lý do tại sao Walkman của bạn có thể truy cập được cptrong Mint 14 nhưng không phải trong Mint 17, điều này có thể do chuyển đổi nội bộ từ PTP sang MTP làm hệ thống truy cập. Ít nhất đó là những gì tôi nhận thấy cho thiết bị Samsung khi chuyển từ Ubuntu 12.04 sang 14.04. Điện thoại hỗ trợ cả PTP và MTP, nhưng Ubuntu 12.04 rõ ràng chỉ hỗ trợ PTP; Vì vậy, đó là những gì đã được sử dụng. Do phiên bản Ubuntu mới có hỗ trợ tích hợp cho MTP, nên hiện tại nó được sử dụng thay thế.

Trên thực tế, đó thậm chí có thể là trường hợp Walkman của bạn trước đây được truy cập dưới dạng Thiết bị lưu trữ USB , đó là những gì mà đĩa cứng USB và ổ đĩa flash sử dụng. Có thể vì một số lý do, Linux (hoặc Walkman của bạn) đã quyết định rằng MTP thích hợp hơn truy cập Mass Storage.

Bạn có thể thấy phương thức truy cập được sử dụng bằng cách xem URL cho Walkman (trong Nautilus, đi đến thư mục Walkman, nhấn Ctrl + L và xem thanh địa chỉ): đối với MTP, thiết bị được tìm thấy trong ví dụ. mtp://[usb:001,004]/trong khi đối với PTP thì nó giống như thế gphoto2://[usb:001,004]/store_00010001. Đối với truy cập Mass Storage, URL chỉ là một đường dẫn bình thường /media/WALKMAN.

Tôi không biết liệu MTP có bất kỳ lợi thế thực tế nào so với PTP hoặc Mass Storage hay không, liệu có thể chuyển trở lại PTP hoặc Mass Storage không. Trong Linux, cả hai triển khai MTP và PTP đều có bộ lỗi riêng, do đó, có thể tùy thuộc vào trường hợp sử dụng của bạn, cái nào tốt hơn. AFAIK Mass Storage là tùy chọn hấp dẫn nhất đối với người dùng nhưng hỗ trợ thiết bị trong điện thoại đang suy yếu dần.


2
Cảm ơn đã giới thiệu cho tôi gvfs-copy. Tuy nhiên, đó là một số tiền rất lớn, nó không sao chép các thư mục theo cách đệ quy. Có một cái khác tôi có thể làm nó đệ quy?
TuxForLife

1
cũng gvfs-copykhông làm việc cho tôi tốt hơn bình thường cp. Và trong trường hợp của tôi, cùng một chiếc điện thoại đã hoạt động trong quá khứ so với MTP. Một số điện thoại hoạt động và một số thì không. Tất cả trên MTP (khi tôi chọn tùy chọn kết nối MTP trong menu điện thoại). cập nhật: tìm thấy vấn đề. Đã cố gắng sao chép từ thẻ vào bộ nhớ điện thoại. Trước tiên tôi phải sao chép vào hệ thống tệp cục bộ (ví dụ / tmp) sau đó sao chép vào bộ nhớ điện thoại. Có vẻ như mtp-> mtp sao chép trực tiếp không hoạt động (chưa).
akostadinov

Cả gvfs-copy hoặc gvfs-move đều hoạt động với tôi. Sử dụng Caja 1.8.2, tôi có thể di chuyển chúng bằng giao diện đồ họa và sau đó xóa các tệp.
Julien Lamarche

2

Để truy cập điện thoại di động của tôi, tôi đã phải cài đặt máy chủ mtp thông qua Trình quản lý gói Synaptic trên Linux Mint 17.1 Mate của tôi. Linux Mint 17 Mate trước đây của tôi không yêu cầu tôi cài đặt máy chủ mtp, điện thoại di động của tôi được nhận dạng tự động khi kết nối qua cổng usb. Có lẽ thông tin này sẽ giúp.


Bạn có nghĩa là thông qua dòng lệnh? Như tôi đã nói, tôi vẫn có thể truy cập nó thông qua trình quản lý tệp GUI.
David Pitchford

Caja trả lời các nhu cầu của tôi, vì vậy tôi không thể giúp bạn với dòng lệnh.
Scott

Cảm ơn Scott. Câu trả lời của bạn đã giúp tôi giải quyết thông báo lỗi này: Kon 'mtp://[usb:003,029]/' niet weergeven. Fout: The name :1.1813 was not provided by any .service files Kies een andere weergavemethode en probeer het opnieuw.Và thiết bị Adroid của tôi không kết nối qua MTP khi cài đặt Mint 17. Có lẽ sau khi nâng cấp 17.1. apt-get install mtp-servergiải quyết vấn đề của tôi Điều này là cho những người tìm kiếm khác với vấn đề này có thể giúp họ vì nó đã giúp tôi.

2

Tôi gặp phải vấn đề này trên Ubuntu 16.04 và Samsung Galaxy SIII được kết nối ở chế độ MTP.

Sử dụng đề xuất của Oliver để sử dụng gvfs-copy, sao chép trực tiếp từ NAS của tôi sang điện thoại không hoạt động: (Nautilus cũng không). Đây là một vòng công việc cho một lỗi có thể có trong 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

Không có định dạng đường dẫn thay thế được đề xuất bởi manpage:

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

Tuy nhiên, sao chép tập tin vào một thư mục cục bộ đã làm việc. {Cảm ơn akostadinov} (và Nautilus cũng vậy).

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

1

Trên Debian Jessie, gvfs-copytừ gói gvfs-binhoạt động với tôi.

$ 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

0

Bạn có thể thử sử dụng rsync để đồng bộ hóa với thiết bị của mình, mặc dù với chuyển MTP, bạn thường không thể đặt dấu thời gian và ngày cho mỗi tệp. Để thực hiện chuyển khoản nhanh hơn, bạn nên sử dụng tùy chọn --size-only cho rsync chứ không phải tùy chọn -t. Tôi thấy dễ dàng nhất để thay đổi thư mục vào thư mục mtp, chẳng hạn như / run / user / 1000 / gvfs / mtp: host = blahblah / blah / blah, sau đó chạy:

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

Tùy chọn -n là để thực hiện chạy khô. Chỉ cần xóa tùy chọn đó nếu bạn hài lòng với kết quả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.