Forum Astuces.divers Copier un fichier qui "n'existe pas"

Posté par .
Tags : aucun
-1
24
août
2012

ls -l monfichier

monfichier existe, il fait 28 giga.

cp monfichier destination/

no such file or directory

gniii ???

Solution :

ls -i monfichier

je recupere le numero d'inode

find -inum moninode -exec cp {} destination \;

Et là ca veut bien copier…

Par contre, apres la copie, le fichier copié présente le meme pb :
cp destination/monfichier /tmp
no such file or directory

Quelqu'un sait à quoi ca peut tenir ?

  • # strace ?

    Posté par (page perso) . Évalué à 3.

    Tout est dans le titre.

    Système - Réseau - Sécurité Open Source

    • [^] # Re: strace ?

      Posté par . Évalué à 2.

      Merci pour ta réponse.

      Le problème est que là le problème m'est pas arrivé sur linux mais sur aix, mais j'ai déja eu le pb sur linux (pas forcément pour les memes causes ?) et sur AIX strace existe aussi mais ne semble pas avoir la meme fonction. Rosetta m'apprend que l'equivalent de strace sous AIX est truss. J'ai essayé, mais je ne comprends RIEN à l'output ^

      # truss cp monfichier /tmp
      execve("/usr/bin/cp", 0x2FF22C60, 0x20012ED8) argc: 3
      sbrk(0x00000000) = 0x300023D8
      vmgetinfo(0x2FF225C0, 7, 16) = 0
      sbrk(0x00000000) = 0x300023D8
      sbrk(0x00000008) = 0x300023D8
      __libc_sbrk(0x00000000) = 0x300023E0
      getuidx(2) = 0
      umask(0) = 23
      umask(23) = 0
      statx("/tmp", 0x2FF22AF0, 176, 020) = 0
      statx("monfichier", 0x2FF22938, 176, 020) Err#2 ENOENT
      cpkwrite(2, " c p", 2) = 2
      : kwrite(2, " : ", 2) = 2
      monfichier(2, " m o n f i c h i e r".., 27) = 27
      : kwrite(2, " : ", 2) = 2
      No such file or directorykwrite(2, " N o s u c h f i l e".., 25) = 25

      kwrite(2, "\n", 1) = 1
      kfcntl(1, F_GETFL, 0x2FF22FFC) = 67110914
      kfcntl(2, F_GETFL, 0x00000000) = 67110914
      _exit(1)

  • # Sur quel filesystem ?

    Posté par . Évalué à 2.

    Tout est dans le titre.

    • [^] # Re: Sur quel filesystem ?

      Posté par . Évalué à 2.

      En fait c'est sur AIX sur un FS qui sur un NAS. je ne connais pas le type de FS

  • # caractères bizare dans le nom de fichier ?

    Posté par (page perso) . Évalué à 7.

    Genre un espace à la fin ?
    Le find ne fait rien d'autre que d'envoyer le nom du fichier en paramètre a cp.

    • [^] # Re: caractères bizare dans le nom de fichier ?

      Posté par . Évalué à 2.

      bonne remarque… vais essayer d'utiliser l'astuce du find pour renommer le fichier, voir si ca marche

      • [^] # Re: caractères bizare dans le nom de fichier ?

        Posté par . Évalué à 4. Dernière modification le 24/08/12 à 18:30.

        Bingo !

        Merci à toi !

        par contre c'est bizzare, meme en faisant cp 'monfichier ' destination ca marche pas… C'est donc pas un espace en fin du nom… Soit plusieurs espaces, soit une autre connerie dans le nom du fichier.

        • [^] # Re: caractères bizare dans le nom de fichier ?

          Posté par . Évalué à 4.

          Essaie d'utiliser l'auto-complétion avec la touche TAB. Si le shell est propre, soit il te l'encadrera avec des guillemets ou des « quotes », soit il te mettra des anti-slashes devant les caractères à problème. Sinon, tu peux toujours essayer un « find . -inum | hexdump » ou autre éditeur hexa pour voir s'il te les affiche explicitement.

          • [^] # Re: caractères bizare dans le nom de fichier ?

            Posté par . Évalué à 4.

            ls -b
            
            

            Affiche les caractères non imprimables du nom du fichier en octal.

            • [^] # Re: caractères bizare dans le nom de fichier ?

              Posté par (page perso) . Évalué à 0.

              Sinon ls monficher puis presse ESC + * (ou = je ne sais plus)

              Is it a Bird? Is it a Plane?? No, it's Super Poil !!!

            • [^] # Re: caractères bizare dans le nom de fichier ?

              Posté par . Évalué à 2.

              Exact. C'est écrit « OPTIONS GNU » dans les man pages linux et ça ne marche pas sous OpenBSD, donc je n'étais pas allé chercher plus loin.

              • [^] # Re: caractères bizare dans le nom de fichier ?

                Posté par . Évalué à 1.

                Ça tombe bien CHP< a ce problème sur AIX.

                • [^] # Re: caractères bizare dans le nom de fichier ?

                  Posté par . Évalué à 1.

                  C'est ce que je dis : « -b » était approprié mais la man page Linux déclare que c'est une option GNU, et comme l'option n'était pas disponible du tout sur un des mes shells sous OpenBSD, je m'en suis tenu à ce que j'avais écrit et je ne suis pas allé voir si le LS d'AIX proposait la même option. J'aurais dû.

                  • [^] # Re: caractères bizare dans le nom de fichier ?

                    Posté par . Évalué à 1.

                    J'aurais dû.

                    Oui carrément. Si tu aides pas jusqu'au bout ça sert à rien de participer aux forums ! ;)

                    • [^] # Re: caractères bizare dans le nom de fichier ?

                      Posté par . Évalué à 7.

                      Bon, puisqu'on est vendredi :

                      — Même dans ce fil, reconnais que mon commentaire initial reste beaucoup plus utile que les tiens ;
                      — Ça fait 13 ans maintenant que je participe à ce forum et je pense modestement avoir rendu service à un certain nombre de personnes ;
                      — Quitte à poster pour ne rien dire, essaie au moins de relire le fil avant de poster, ça m'évitera d'avoir à me répéter et d'augmenter le niveau de bruit.

                      Allez zou ! →[].

                  • [^] # Re: caractères bizare dans le nom de fichier ?

                    Posté par (page perso) . Évalué à 2.

                    Pour ma part, n’ayant que le manuel GNU/Linux directement à disposition, j’utilise la documentation de FreeBSD quand je veux vérifier qu’une commande, une option ou une fonction est disponible sur d’autres systèmes. Cette page permet de consulter non seulement les pages de manuel de FreeBSD (évidemment), mais aussi celles de Net- et OpenBSD, de plusieurs distributions GNU/Linux, et quelques autres systèmes comme HP-UX ou SunOS.

                    En l’occurence, sur ce thread ça n’aurait certes pas aidé, vu que les pages d’AIX ne sont pas disponibles… mais je trouve que c’est un lien utile à avoir sous la main.

  • # Les guillemets c'est bien utile

    Posté par (page perso) . Évalué à 1.

    Est-ce que tu as pensé à entourer le nom du fichier de guillemets ? Ainsi le terminal protège les caractères spéciaux et les espaces avant d'envoyer le nom du fichier à la commande (sinon, cp croit qu'il y a deux fichiers si il y a un espace).

    cp "mon fichier avec des espaces" "ma destination"
    
    

    S'il y a vraiment des caractères spéciaux il faut utiliser les guillemets simples qui empêche l'interprétation des $ comme des variables par exemple.

    cp 'mon $fichier qui n'a pas de variables' 'ma $destination'
    
    

    J'espère que ça marchera ;)

  • # Jeu de caractère

    Posté par . Évalué à 2.

    Bonjour,

    j'ai déjà eu ce type de soucis avec des fichiers créés avec un nom dans un jeu de caractère alors que le système de fichier est dans un autre (dans mon cas UTF-8 pour le fs mais un nom en chinois). Pour corriger ce genre de problèmes, il y a l'utilitaire convmv qui permet convertir les noms de fichier d'un jeu de caractère vers un autre. Il faut connaître le jeu de caractère du nom, par contre.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.