Bonjour à tous,
Pour faire mes sauvegardes j'utilise pour tester un compte gratuit chez Hubic que je monte en davfs sauf que je rencontre un problème pour supprimer des fichiers et je ne suis pas certain que le service Hubic soit en cause, je m'explique.
Je veux supprimer ce fichier : /media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE/main.lang. backup étant la raçine du point de montage.
rm /media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE/main.lang
Et j'obtiens comme réponse :
rm: supprimer fichier "main.lang"? y
rm: impossible de supprimer "main.lang": Argument invalide
J'ai fais le teste en créant un fichier bidon dans /media/backup et en le supprimant, ça marche. Je supute que c'est la limite du nombre de caractère mais pas moyen de mettre la main sur le nombre de caractère dans ma petite tête ou sur le net. Ou alors je me trompe ?
# avec " " ?
Posté par solsTiCe (site web personnel) . Évalué à 1.
sinon je me souviens d'une limite sur la longueur du nom de fichier (qui dépend du système de fichier), mais sur le chemin complet ? peut-être sur le nombre de répertoire imbriqué ?
en tout cas, dans ton exemple, le nom du fichier n'est pas si long que ça, et le chemin non plus
[^] # Re: avec " " ?
Posté par Philippe M (site web personnel) . Évalué à 2.
les—permettent de supprimer un fichier commençant par un - par exemple.
Born to Kill EndUser !
# alias
Posté par jemore . Évalué à 2.
Le "rm" ne serait pas un alias qui rajouterai des paramètres, rendant la ligne de commande incompatible avec les "-" de la date dans le chemin ?
[^] # Re: alias
Posté par Philippe M (site web personnel) . Évalué à 1.
Les tirets je les utilisent tout les jours sur d'autres serveur qui n'utilise pas davfs et ça marche donc je ne pense pas.
Born to Kill EndUser !
# DavFS
Posté par Octabrain . Évalué à 2.
À mon avis, c'est plutôt un problème de davfs. Essaye strace pour voir comment est fait l'appel final de suppression :
Voir si le paramètre de unlink(2) est le bon, et que l'appel renvoie EINVAL.
Ensuite :
[^] # Re: DavFS
Posté par Philippe M (site web personnel) . Évalué à 1.
en root :
J'ai comme l'impression qu'il y a un problème d'accès au fichier.
Born to Kill EndUser !
[^] # Re: DavFS
Posté par ze_lionix (site web personnel) . Évalué à 2.
Bon, l'erreur se situe ici :
unlinkat(AT_FDCWD, "/media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE/main.lang", 0) = -1 EINVAL (Invalid argument)
D'après les pages de man :
int unlinkat(int dirfd, const char *pathname, int flags);
(…)
On success, unlinkat() returns 0. On error, -1 is returned and errno is set to indicate the error.
A première vue la syntaxe est bonne, mais on a pourtant un code retour -1.
L'erreur remonté est une 132 ce qui veux dire "The file pointer cannot be set on the specified device or file.".
Un pointeur dans l'espace : chouette ca !
Autre extrait du man :
If the pathname given in pathname is absolute, then dirfd is ignored.
Donc dans ton cas il y a que le chemin qui compte…
De plus en plus intéressant….
Et aussi :
unlinkat() was added to Linux in kernel 2.6.16.
Donc :
=> Question 1 : quelle version du noyau tu utilises ?
=> Question 2 : C'est pareil sur un touch ? Car je suspecte le userspace ou le pseudo-fs d'être pourrie. En trois ans, sachant que j'ai je fais du sshfs plein gaz non stop j'ai eu ça mais seulement deux fois. Si c'est pareil sur touch peux tu démonter / remonter / re tester ?
=> Question 3 : si en remontant le problème est pas résolu peux tu rebooter et tester ?
Fuse : j'en Use et Abuse !
[^] # Re: DavFS
Posté par ze_lionix (site web personnel) . Évalué à 2.
Erratum :
L'erreur remonté est une 132 ce qui veux dire "The file pointer cannot be set on the specified device or file.".Un pointeur dans l'espace : chouette ca ! !
Non le 132 c'est la taille de la string écrite sur le terminal !
J'ai les yeux qui se croisent il me faut une pause moi…
Fuse : j'en Use et Abuse !
[^] # Re: DavFS
Posté par Philippe M (site web personnel) . Évalué à 1.
Merci pour ton aide.
Le kernel : 2.6.38.2-grsec
J'ai démonté et remonté /media/backup mais le remontage prend un temps infernal, dans le genre 10 minutes mais ça c'est un problème avec OVH j'ai l'impression. Après remontage :
Je ne peux pas redémarrer le serveur il est en prod :(
Born to Kill EndUser !
[^] # Re: DavFS
Posté par ze_lionix (site web personnel) . Évalué à 1.
Re !
Bon vue les tests que tu as fais on peux considérer que l'arborescence et le répertoire sont nickel et c'est le fichier en lui même qui est naze. Vue le message "erreur entrée/sortie" sur le mv y a vraiment un truc !
Peux tu faire :
$> cat main.lang ( est ce qu'un descripteur de fichier en lecture marche ? )
$> file main.lang ( comment on voit le fichier ? )
Fichier pourri le détruire et le recréer est une piste ( vérifie que tu as la sauvegarde einh ! ).
Pour le virer :
- à la unix hot : $> cp /dev/null main.lang
- par l'i-noeud : $> ls -i main.lang et $> rm -i [numéro de la commande d'avant]
Petite question : tu as un accès ssh sur le serveur que tu montes ?
Fuse : j'en Use et Abuse !
[^] # Re: DavFS
Posté par Philippe M (site web personnel) . Évalué à 1.
Donc le fichier est lisible, ce que j'ai peut être oublié de préciser c'est que ce n'est pas uniquement ce fichier qui est en cause. Je pense que c'est toute l'arborescence montée en davfs qui déconne. Si je vais dans un autre répertoire et que je fais un rm j'ai de nouveau le "Argument invalide".
Malheureusement je n'ai pas accès au serveur qui me propose le webdav puisque c'est un espace hubic d'Ovh. Après pas mal de recherche j'ai l'impression que je ne suis pas le seul mais qu'Ovh fait le mort pour le moment. Je vais essayer d'avoir des infos de leurs côté mais je suis pas convaincu. Au départ j'étais parti sur le problème de longueur du chemin d'accès donc je n'ai pas pensé utilise préciser que c'était du Hubic :( En tout cas merci pour ton aide.
Born to Kill EndUser !
# Faire une trace système !
Posté par ze_lionix (site web personnel) . Évalué à 4.
$>strace rm media/backup/sauvegarde/(…)/xxxxx/langs/fr_BE/main.lang
Normalement tu dois avoir le chargement des lib, le check des droit, l'accès au fichier et l'unlink.
Regarde ce qui se passe juste avant la remontée d'erreur…
Compare éventuellement avec une trace de ce qui marche ( à la racine ) et n'oublie pas de nous dire ce qu'il en est…
Fuse : j'en Use et Abuse !
# réparer le FS
Posté par goeb . Évalué à 3.
Il faut peut-être réparer ton système de fichier avec fsck. C'est du ext2 ?
Je parle du système de fichier distant, qui contient vraiment 'main.lang'.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.