Forum général.général rm ou le nombre de caractères

Posté par  (site web personnel) .
Étiquettes : aucune
2
17
juil.
2012

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  (site web personnel) . Évalué à 1.

    rm -- "/media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE/main.lang"
    
    

    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

  • # alias

    Posté par  . É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  (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  . É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 :

    strace rm /media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE/main.lang
    
    

    Voir si le paramètre de unlink(2) est le bon, et que l'appel renvoie EINVAL.

    Ensuite :

    cd /media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE
    rm main.lang
    # ou aussi
    mv main.lang /media/backup
    rm /media/backup/main.lang
    # sait-on jamais
    
    
    • [^] # Re: DavFS

      Posté par  (site web personnel) . Évalué à 1.

      en root :

      strace rm /media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE/main.lang
      execve("/bin/rm", ["rm", "/media/backup/sauvegarde/ksxxxxxx"...], [/* 14 vars */]) = 0
      brk(0)                                  = 0x60d850
      access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
      mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f654eb57000
      access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
      open("/etc/ld.so.cache", O_RDONLY)      = 3
      fstat(3, {st_mode=S_IFREG|0644, st_size=17693, ...}) = 0
      mmap(NULL, 17693, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f654eb52000
      close(3)                                = 0
      access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
      open("/lib/libc.so.6", O_RDONLY)        = 3
      read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\355\1\0\0\0\0\0"..., 832) = 832
      fstat(3, {st_mode=S_IFREG|0755, st_size=1437064, ...}) = 0
      mmap(NULL, 3545160, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f654e5da000
      mprotect(0x7f654e733000, 2093056, PROT_NONE) = 0
      mmap(0x7f654e932000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x158000) = 0x7f654e932000
      mmap(0x7f654e937000, 18504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f654e937000
      close(3)                                = 0
      mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f654eb51000
      mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f654eb50000
      mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f654eb4f000
      arch_prctl(ARCH_SET_FS, 0x7f654eb50700) = 0
      mprotect(0x7f654e932000, 16384, PROT_READ) = 0
      mprotect(0x7f654eb59000, 4096, PROT_READ) = 0
      munmap(0x7f654eb52000, 17693)           = 0
      open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
      fstat(3, {st_mode=S_IFREG|0644, st_size=2023584, ...}) = 0
      mmap(NULL, 2023584, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f654e960000
      close(3)                                = 0
      brk(0)                                  = 0x60d850
      brk(0x62e850)                           = 0x62e850
      brk(0x62f000)                           = 0x62f000
      ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
      newfstatat(AT_FDCWD, "/media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE/main.lang", {st_mode=S_IFREG|0644, st_size=331, ...}, AT_SYMLINK_NOFOLLOW) = 0
      geteuid()                               = 0
      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)
      open("/usr/share/locale/locale.alias", O_RDONLY) = 3
      fstat(3, {st_mode=S_IFREG|0644, st_size=2570, ...}) = 0
      mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f654eb56000
      read(3, "# Locale name alias data base.\n#"..., 4096) = 2570
      read(3, "", 4096)                       = 0
      close(3)                                = 0
      munmap(0x7f654eb56000, 4096)            = 0
      open("/usr/share/locale/fr_FR/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
      open("/usr/share/locale/fr/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3
      fstat(3, {st_mode=S_IFREG|0644, st_size=316646, ...}) = 0
      mmap(NULL, 316646, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f654e58c000
      close(3)                                = 0
      open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
      fstat(3, {st_mode=S_IFREG|0644, st_size=26048, ...}) = 0
      mmap(NULL, 26048, PROT_READ, MAP_SHARED, 3, 0) = 0x7f654e585000
      close(3)                                = 0
      open("/usr/lib/gconv/ISO8859-1.so", O_RDONLY) = 3
      read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\4\0\0\0\0\0\0"..., 832) = 832
      fstat(3, {st_mode=S_IFREG|0644, st_size=10272, ...}) = 0
      mmap(NULL, 2105392, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f654e382000
      mprotect(0x7f654e384000, 2093056, PROT_NONE) = 0
      mmap(0x7f654e583000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f654e583000
      close(3)                                = 0
      mprotect(0x7f654e583000, 4096, PROT_READ) = 0
      write(2, "rm: ", 4rm: )                     = 4
      write(2, "impossible de supprimer \253\240/media"..., 132impossible de supprimer "/media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE/main.lang") = 132
      open("/usr/share/locale/fr_FR/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
      open("/usr/share/locale/fr/LC_MESSAGES/libc.mo", O_RDONLY) = 3
      fstat(3, {st_mode=S_IFREG|0644, st_size=142878, ...}) = 0
      mmap(NULL, 142878, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f654e35f000
      close(3)                                = 0
      write(2, ": Argument invalide", 19: Argument invalide)     = 19
      write(2, "\n", 1
      )                       = 1
      close(0)                                = 0
      close(1)                                = 0
      close(2)                                = 0
      exit_group(1)                           = ?
      
      

      J'ai comme l'impression qu'il y a un problème d'accès au fichier.

      cd /media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE
      rm main.lang
      ## -> rm: impossible de supprimer "main.lang": Argument invalide
      mv main.lang /media/backup
      ## -> mv: impossible de déplacer "main.lang" vers "/media/backup/sauvegarde/main.lang": Erreur d'entrée/sortie
      rm /media/backup/main.lang
      # Dommage
      
      

      Born to Kill EndUser !

      • [^] # Re: DavFS

        Posté par  (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  (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  (site web personnel) . Évalué à 1.

          Merci pour ton aide.

          Le kernel : 2.6.38.2-grsec

          cd /media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE
          touch toto
          # Ca passe
          
          cd /
          touch /media/backup/sauvegarde/ks384849.kimsufi.com/2012-06-11/www/defaut/www/html/gesco/langs/fr_BE/toto1
          # Ca passe
          
          ls /media/backup/sauvegarde/ks384849.kimsufi.com/2012-06-11/www/defaut/www/html/gesco/langs/fr_BE
          total 1
          -rw-r--r-- 1 root root 331 11 juin  23:51 main.lang
          # Il manquerait pas des fichiers par hasard ?
          
          

          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 :

          cd /media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE
          touch toto
          # Ca passe
          
          cd /
          touch /media/backup/sauvegarde/ks384849.kimsufi.com/2012-06-11/www/defaut/www/html/gesco/langs/fr_BE/toto1
          # Ca passe
          
          ls /media/backup/sauvegarde/ks384849.kimsufi.com/2012-06-11/www/defaut/www/html/gesco/langs/fr_BE
          -rw-r--r-- 1 root root 331 11 juin  23:51 main.lang
          -rw-r--r-- 1 root root   0 18 juil. 10:42 toto
          
          # Une minute plus tard...
          ls /media/backup/sauvegarde/ks384849.kimsufi.com/2012-06-11/www/defaut/www/html/gesco/langs/fr_BE
          total 1
          -rw-r--r-- 1 root root 331 11 juin  23:51 main.lang
          # Il manquerait pas des fichiers par hasard ?
          # J'ai fais le même teste à la raçine /media/backup et même constat.
          
          

          Je ne peux pas redémarrer le serveur il est en prod :(

          Born to Kill EndUser !

          • [^] # Re: DavFS

            Posté par  (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  (site web personnel) . Évalué à 1.

              # cd /media/backup/sauvegarde/ksxxxxxx.kimsufi.com/2012-06-11/www/defaut/www/html/xxxxx/langs/fr_BE
              # cat main.lang 
              
              CHARSET=UTF-8
              SeparatorDecimal=,
              SeparatorThousand=
              FormatDateShort=%d/%m/%Y
              FormatDateShortJava=dd/MM/yyyy
              FormatHourShort=%H:%M
              FormatDateTextShort=%d %b %Y
              FormatDateText=%d %B %Y
              FormatDateHourShort=%d/%m/%Y %H:%M
              FormatDateHourTextShort=%d %b %Y %H:%M
              FormatDateHourText=%d %B %Y %H:%M
              
              # file main.lang 
              main.lang: ASCII text
              
              

              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  (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  . É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.