Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copie vers un répertoire monté gvfs donne OSError: [Errno 95] Operation not supported

5 réponses
Avatar
Laurent Claessens
Bonjour


J'essaye de faire des copies de fichiers d'un ordinateur vers un
autre.

Les deux ordinateurs sont dans la m=EAme pi=E8ce connect=E9s par un cable
r=E9seau. Tout deux utilisent avahi.

J'ai mont=E9 l'un vers l'autre avec

gvfs-mount sftp://moky@169.254.7.0
(169.254.7.0 est l'IP du second ordinateur dans mon petit r=E9seau
local)

Du point de vue non-python, tout va bien : je vois les r=E9pertoires
mont=E9s comme il faut dans Konqueror (Ubuntu Maverick sur l'un et Lucid
sur l'autre), et en bash, je peux faire des copies via cp comme si
l'autre ordinateur =E9tait un r=E9pertoire local. =C7a a l'air d'=EAtre aus=
si
transparent que =E7a puisse l'=EAtre.

Par contre en python, shutil ne parvient pas =E0 copier :


Un peu de code vaut mieux qu'un lon discours
++++++++++++++++++++++++++++++++++++++++++++
#! /usr/bin/python
# -*- coding: utf8 -*-

import shutil

filename=3D"/home/moky/.gvfs/sftp en tant que moky sur 169.254.7.0/home/
moky/test.txt"
shutil.copy2("/home/moky/impress.py",filename)
++++++++++++++++++++++++++++++++++++++++++++

R=E9sultat :

Traceback (most recent call last):
File "./ess.py", line 12, in <module>
shutil.copy2("/home/moky/impress.py",filename)
File "/usr/lib/python2.6/shutil.py", line 100, in copy2
copystat(src, dst)
File "/usr/lib/python2.6/shutil.py", line 73, in copystat
os.utime(dst, (st.st_atime, st.st_mtime))
OSError: [Errno 95] Operation not supported: '/home/moky/.gvfs/sftp en
tant que moky sur 169.254.7.0/home/moky/test.txt'


La m=EAme copie avec cp dans une console fonctionne sans accros, ce
n'est donc pas une question de droits.
Le m=EAme code, mais en changeant le nom du fichier de destination vers
un "vrai" r=E9pertoire local fonctionne.

Question : que se passe-t-il ? Que faire ? Quel est le sens de la
vie ?

Merci \forall conseils

Bonne ann=E9e
Laurent

5 réponses

Avatar
Alain Ketterlin
Laurent Claessens writes:

gvfs-mount sftp://
(169.254.7.0 est l'IP du second ordinateur dans mon petit réseau
local)

Traceback (most recent call last):
File "./ess.py", line 12, in <module>
shutil.copy2("/home/moky/impress.py",filename)
File "/usr/lib/python2.6/shutil.py", line 100, in copy2
copystat(src, dst)
File "/usr/lib/python2.6/shutil.py", line 73, in copystat
os.utime(dst, (st.st_atime, st.st_mtime))
OSError: [Errno 95] Operation not supported: '/home/moky/.gvfs/sftp en
tant que moky sur 169.254.7.0/home/moky/test.txt'



copy2 appelle copystat qui appelle utime, et ça c'est pas possible sur
un montage sftp.

La même copie avec cp dans une console fonctionne sans accros, ce
n'est donc pas une question de droits.



Ce n'est pas tout à fait la même chose. Est-ce que "cp -p" marche
aussi ?

-- Alain.
Avatar
Michel Claveau - MVP
Quel est le sens de la vie ?



42
Avatar
Laurent Claessens
> La même copie avec cp dans une console fonctionne sans accros, ce
> n'est donc pas une question de droits.

Ce n'est pas tout à fait la même chose. Est-ce que "cp -p" marche
aussi ?



Ah tiens, non.
cp: préservation des dates pour «.gvfs/sftp en tant que moky sur
169.254.7.0/test.txt»: Opération non supportée

Est-ce qu'il y a moyen de faire autrement ? Une autre commande pour
copier les fichiers ?
Le fait que le fichier de destination n'aie au final pas la même date
de création que le fichier de départ n'a pas d'importance.

En attendant, je vais voir les autres types de montages possibles. Des
suggestions ?

Merci
Laurent
Avatar
Alain Ketterlin
Laurent Claessens writes:

> La même copie avec cp dans une console fonctionne sans accros, ce
> n'est donc pas une question de droits.

Ce n'est pas tout à fait la même chose. Est-ce que "cp -p" mar che
aussi ?



Ah tiens, non.
cp: préservation des dates pour «.gvfs/sftp en tant que moky sur
169.254.7.0/test.txt»: Opération non supportée

Est-ce qu'il y a moyen de faire autrement ? Une autre commande pour
copier les fichiers ?
Le fait que le fichier de destination n'aie au final pas la même date
de création que le fichier de départ n'a pas d'importance.



Pourquoi utilises-tu copy2 dans ce cas ? Regarde la doc de copy.

En attendant, je vais voir les autres types de montages possibles. Des
suggestions ?



Tu ne nous a pas expliqué pourquoi tu voulais faire un montage. Est-ce
qu'un appel à scp (voire scp -p) ne conviendrait pas ?

-- Alain.
Avatar
Laurent Claessens
Pourquoi utilises-tu copy2 dans ce cas ? Regarde la doc de copy.
Tu ne nous a pas expliqué pourquoi tu voulais faire un montage. Est-ce
qu'un appel à scp (voire scp -p) ne conviendrait pas ?



Je crois qu'il y a une réponse commune à ces deux questions : j'avais
déjà fait une fonction qui utilisait copy2 dans un autre script (qui,
lui, avait besoin de garder les dates), et je voulais utiliser la même
dans un soucis de factorisation.
En utilisant copy, ça marche.
Par contre un problème avec shutil.copytree. Mais là, il est bien dit
dans la doc que ce n'est pas une fonction à utiliser telle quelle. Je
vais donc étudier comment fonctionne ce copytree et voir ce que je
peux faire.

En ce qui concerne scp --- en tout cas sous la forme
os.system("scp ....") --- ça ne me convient pas parce que j'ai des
centaines de fichiers à copier alors que scp va me demander le mot de
passe à chaque fois.


Pour mettre dans le contexte, j'ai un script qui doit d'habitude
copier quelque centaines de fichiers vers une autre partition de mon
disque, monté (normalement) dans /mnt/destination. Tout tourne bien.

Sauf que aujourd'hui (et dans les semaines à venir), je suis sur un
autre ordinateur, et je voudrais donc que mon script continue à faire
son œuvre.
À première vue, je pensais qu'avec un montage et en changeant
simplement dans mon script
DESTINATION="/mnt/destination"
en
DESTINATION="/home/moky/.gvfs/.../mnt/destination"
ça allait faire l'affaire.

Bref, je voulais que mon script fonctionne de la même façon pour
copier vers un répertoire local ou sur un répertoire autre part. C'est
pour ça que je privilégie la piste du montage que la piste de
l'utilisation de commandes particulières comme scp.


Bonne aprème
Laurent