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

Le
Laurent Claessens
Bonjour


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

Les deux ordinateurs sont dans la même pièce connectés par un cable
réseau. Tout deux utilisent avahi.

J'ai monté 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éseau
local)

Du point de vue non-python, tout va bien : je vois les répertoires
montés 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 était un répertoire local. Ça a l'air d'être aus=
si
transparent que ça puisse l'être.

Par contre en python, shutil ne parvient pas à copier :


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

import shutil

filename="/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ésultat :

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ême copie avec cp dans une console fonctionne sans accros, ce
n'est donc pas une question de droits.
Le même code, mais en changeant le nom du fichier de destination vers
un "vrai" répertoire local fonctionne.

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

Merci forall conseils

Bonne année
Laurent
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain Ketterlin
Le #23020571
Laurent Claessens
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.
Michel Claveau - MVP
Le #23020591
Quel est le sens de la vie ?



42
Laurent Claessens
Le #23020771
> 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
Alain Ketterlin
Le #23020941
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" 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.
Laurent Claessens
Le #23021191
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
Publicité
Poster une réponse
Anonyme