Impossible d'effectuer des opérations sur les fichiers sur un périphérique MTP monté via GVFS: «Opération non prise en charge»

13

J'utilise Linux Mint 17.1 64 bits (basé sur Ubuntu 14.04). Depuis la mise à niveau de Linux Mint 14 / Ubuntu 12.10, le script Python que j'utilise pour synchroniser la musique sur mon Walkman a cessé de fonctionner.

Auparavant, lorsque je montais mon Walkman, il apparaissait automatiquement comme chemin /run/user/1000/gvfs/WALKMAN/Storage Mediaet fonctionnait comme n'importe quel autre système de fichiers: je pouvais y copier des pistes, en supprimer des pistes, etc., tout au long de Python. Cependant, je ne me souviens pas si j'ai dû apporter des modifications pour que cela se produise.

Depuis la mise à niveau vers Linux Mint 17 (et maintenant 17.1), lorsque je monte le Walkman, il apparaît comme le chemin /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Media. De plus, lorsque j'essaie d'exécuter les mêmes opérations sur les fichiers, elles échouent maintenant. J'ai découvert que cela se produit non seulement via Python, mais également sur la ligne de commande. Par exemple:

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

J'ai fait quelques recherches sur ce problème, mais l'explication la plus courante semble être qu'il a été résolu auparavant par ce PPA: https://launchpad.net/~langdalepl/+archive/ubuntu/gvfs-mtp

Mais maintenant, les versions d'Ubuntu depuis 13.10 contiennent toutes ces modifications, donc cela ne devrait plus être nécessaire. Alors pourquoi ai-je encore ces erreurs? Je suis toujours en mesure d'effectuer des opérations de fichiers sur mon Walkman via un gestionnaire de fichiers graphiques (Caja, sur Linux Mint), mais pas via la ligne de commande.

David Pitchford
la source
Je pense que cela peut vous aider à : github.com/hanwen/go-mtpfs
Golfe Persique
Mon appareil se monte déjà en MTP ... ce n'est pas le problème.
David Pitchford

Réponses:

15

Une supposition: vous utilisez maintenant MTP pour accéder à votre Walkman, et MTP est nul.

Détails

L' Operation not supportederreur pourrait indiquer que votre Walkman utilise une implémentation MTP qui ne prend pas en charge l'accès "direct". Selon http://intr.overt.org/blog/?p=174, ce type d'accès direct est une extension spécifique à Android, il n'est donc probablement pas pris en charge par votre Walkman.

En conséquence, vous ne pouvez utiliser que quelques façons sélectionnées pour accéder aux fichiers de votre Walkman à l'aide de MTP: je suppose que tout ce qui lit ou écrit des fichiers en une seule opération est pris en charge, tandis que l'accès à certaines parties d'un fichier n'est pas pris en charge pour ces implémentations MTP . Et il semble que cpPython utilise toujours cette dernière méthode d'accès et échoue donc.

Solution possible

Cependant, vous pourrez peut-être simplement le remplacer cppar gvfs-copy. Lors de mes tests avec un téléphone Android Samsung (qui a également une implémentation MTP paralysée), j'ai gvfs-copypu copier des fichiers sur le téléphone en cas d' cpéchec.

Contexte

Je n'ai pas pu trouver beaucoup d'informations sur ces limitations MTP dépendantes de l'appareil; voici quelques extraits où la situation est expliquée quelque peu:

/ubuntu//a/284831 https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1389001/comments/2 https://bugs.launchpad.net/ubuntu/+source / gvfs / + bug / 1157583 / commentaires / 1

Pourquoi cela a-t-il fonctionné auparavant?

Quant à savoir pourquoi votre Walkman était accessible avec cpdans Mint 14 mais pas dans Mint 17, cela pourrait être causé par un basculement interne de PTP vers MTP en tant que système d'accès. C'est du moins ce que j'ai remarqué pour l'appareil Samsung lors du passage d'Ubuntu 12.04 à 14.04. Le téléphone prend en charge PTP et MTP, mais Ubuntu 12.04 ne prend apparemment en charge que PTP; c'est donc ce qui a été utilisé. Étant donné que la nouvelle version d'Ubuntu dispose d'un support intégré pour MTP, celui-ci est désormais utilisé à la place.

En fait, il se peut même que votre Walkman soit précédemment utilisé en tant que périphérique de stockage de masse USB , ce que les disques durs USB et les lecteurs flash utilisent. Peut-être que pour une raison ou une autre, Linux (ou votre Walkman) a décidé que MTP était préférable à l'accès au stockage de masse.

Vous pouvez voir la méthode d'accès utilisée en regardant l'URL du Walkman (dans Nautilus, allez dans le dossier Walkman, appuyez sur Ctrl + L et regardez la barre d'adresse): pour MTP, le périphérique se trouve sous par exemple. mtp://[usb:001,004]/tandis que pour PTP, c'est quelque chose comme gphoto2://[usb:001,004]/store_00010001. Pour l'accès au stockage de masse, l'URL est juste un chemin normal comme /media/WALKMAN.

Je ne sais pas si MTP a des avantages réels par rapport au PTP ou au stockage de masse, ou s'il est possible de revenir au PTP ou au stockage de masse. Sous Linux, les implémentations MTP et PTP ont leur propre ensemble de bogues, cela peut donc dépendre de votre cas d'utilisation, lequel est le meilleur. AFAIK Mass Storage est l'option la plus souhaitable pour l'utilisateur, mais la prise en charge des appareils dans les téléphones est en déclin.

oliver
la source
2
Merci de m'avoir présenté gvfs-copy. Cependant, c'est une énorme déception, il ne copie pas les répertoires de manière récursive. Y a-t-il un autre que je peux faire récursivement?
TuxForLife
1
aussi gvfs-copyne fonctionne pas pour moi mieux que la normale cp. Et dans mon cas, le même téléphone fonctionnait dans le passé sur MTP. Certains téléphones fonctionnent et d'autres non. Partout sur MTP (lorsque je sélectionne l'option de connexion MTP dans le menu du téléphone). mise à jour: a trouvé le problème. J'essayais de copier de la carte vers la mémoire du téléphone. J'ai d'abord dû copier sur le système de fichiers local (par exemple / tmp) puis copier sur le stockage du téléphone. Il semble que la copie directe mtp-> mtp ne fonctionne pas (encore).
akostadinov
Ni gvfs-copy ni gvfs-déplacer ne fonctionnaient pour moi non plus. En utilisant Caja 1.8.2, j'ai pu les déplacer en utilisant l'interface graphique puis supprimer les fichiers.
Julien Lamarche
2

Afin d'accéder à mon téléphone portable, j'ai dû installer mtp-server via le Synaptic Package Manager sur mon Linux Mint 17.1 Mate. Mon ancien Linux Mint 17 Mate ne nécessitait pas que j'installe mtp-server, mon téléphone portable était reconnu automatiquement lors de la connexion via le port USB. Peut-être que cette information vous aidera.

Scott
la source
Voulez-vous dire via la ligne de commande? Comme je l'ai dit, je peux toujours y accéder via le gestionnaire de fichiers GUI.
David Pitchford
Caja répond à mes besoins, donc je ne peux pas vous aider avec la ligne de commande.
Scott
Merci Scott. Votre réponse m'a aidé à résoudre ce message d'erreur: 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.Et mon appareil Adroid ne s'est pas connecté via MTP sur mon installation Mint 17. Probablement après une mise à niveau 17.1. apt-get install mtp-serverrésolu mon problème. C'est pour d'autres chercheurs avec ce problème peut les aider comme cela m'a aidé.
2

J'ai rencontré ce même problème sur Ubuntu 16.04 et Samsung Galaxy SIII connectés en mode MTP.

Utiliser la suggestion d'Oliver pour utiliser gvfs-copy, copier directement de mon NAS vers le téléphone ne fonctionne pas: (Nautilus non plus). Il s'agit d'un work-round pour un bogue possible dans 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

Le format de chemin alternatif suggéré par la page de manuel n'a pas non plus:

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

La copie du fichier dans un dossier local en premier a cependant fonctionné. {Merci akostadinov} (et Nautilus aussi).

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

Sur Debian Jessie, le gvfs-copypackage gvfs-binfonctionne pour moi.

$ 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
user1338062
la source
0

Vous pouvez essayer d'utiliser rsync pour synchroniser avec votre appareil, mais avec les transferts MTP, vous ne pouvez généralement pas définir l'heure et la date de chaque fichier. Pour accélérer les transferts, vous devez utiliser l'option --size-only pour rsync et non l'option -t. Je trouve plus facile de changer de répertoire dans le répertoire mtp, tel que / run / user / 1000 / gvfs / mtp: host = blahblah / blah / blah, puis d'exécuter:

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

L'option -n consiste à effectuer un essai à sec. Supprimez simplement cette option si vous êtes satisfait des résultats.

Eric Sokolowsky
la source