Como corrigir o diretório com todos os pontos de interrogação como permissões

4

Estou usando o CentOS 7 e tentando listar o conteúdo de um diretório, mas não consigo. Quando tento listar o conteúdo, recebo a seguinte saída:

[entpnerd@myhost ~]$ ls -ali /data/sharedlogs/otherhost/
ls: cannot access /data/sharedlogs/otherhost/vcs: Not a directory
total 12
2361284 drwxr-xr-x 4 root root 4096 Sep 26 14:40 .
2359297 drwxr-xr-x 6 root root 4096 Apr 26 17:41 ..
2362573 drwxr-xr-x 2 root root 4096 Mar 22  2017 tkr
      ? d????????? ? ?    ?       ?            ? vcs

A saída informa que meu diretório, vcs , é "Não é um diretório", embora deva ser, já que é onde os arquivos foram registrados anteriormente. Além disso, os bits de permissão de arquivo agora são todos pontos de interrogação, assim como o proprietário e (inexplicavelmente) o ID do inode.

Como posso fazer com que o sistema de arquivos reconheça meu diretório como um diretório novamente?

Depois de tentar tudo o que descrevi abaixo, o único caminho a seguir que vejo é garantir que o disco seja submetido a backup e executar fsck (como sugerido por este fórum ) ou possivelmente apenas formatando a montagem inteira . Espero encontrar uma solução mais simples e menos drástica.

Algumas coisas que tentei:

  1. sudo : tentei executar sudo ls , mas nenhuma diferença na saída.
  2. rm : tentei remover vcs para recuperá-lo, mas sem sorte. Eu tentei isso com sudo e sem, mas sem sorte também. Curiosamente, quando tento sudo rm declara Is a directory . Eu também tentei rm com as opções -r e -d , sem sorte também. A saída que recebo das tentativas de comando rm é:

    [entpnerd@myhost ~]$ rm /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ sudo rm /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Is a directory
    [entpnerd@myhost ~]$ sudo rm -r /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Is a directory
    [entpnerd@myhost ~]$ rm -r /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ rm -rd /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ sudo rm -rd /data/sharedlogs/otherhost/vcs
    rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Is a directory
    
  3. inode ID: Eu tentei remover pelo inode (como sugerido por esta resposta a uma pergunta semelhante ), mas eu também não teve sorte com isso, porque, como você pode ver na saída do comando ls acima, o diretório vcs não possui ID de inode.
  4. Caracteres não ASCII: na postagem " Como excluir o diretório Undeletable ", o diretório não tinha Caracteres ASCII. Este também não é o caso, como eu vi do xxd output:

    [entpnerd@myhost ~]$ ls -l /data/sharedlogs/otherhost/ | xxd
    ls: cannot access /data/sharedlogs/otherhost/vcs: Not a directory
    0000000: 746f 7461 6c20 340a 6472 7778 722d 7872  total 4.drwxr-xr
    ...
    0000040: 3f3f 3f3f 3f20 3f20 3f20 2020 203f 2020  ????? ? ?    ?  
    0000050: 2020 2020 203f 2020 2020 2020 2020 2020       ?          
    0000060: 2020 3f20 7663 730a                        ? vcs.
    
  5. lsattr : conforme sugerido pela pergunta semelhante, " Por que não posso excluir este arquivo como root? ", tentei usar o comando lsattr , mas sem sorte:

    [entpnerd@myhost ~]$ lsattr /data/sharedlogs/otherhost/
    -------------e-- /data/sharedlogs/otherhost/tkr
    /data/sharedlogs/otherhost/vcs: Not a directory
    [entpnerd@myhost ~]$ lsattr /data/sharedlogs/otherhost/vcs
    lsattr: Not a directory while trying to stat /data/sharedlogs/otherhost/vcs
    [entpnerd@myhost ~]$ sudo lsattr /data/sharedlogs/otherhost/vcs
    [sudo] password for entpnerd: 
    lsattr: Not a directory while trying to stat /data/sharedlogs/otherhost/vcs
    
  6. Definindo os bits executáveis para o diretório: De acordo com a pergunta semelhante, " Pontos de interrogação que aparecem em ls do diretório. Erros de E / S também a> ", tentei definir os bits executáveis para o diretório, mas também não tive sorte com isso.

    [entpnerd@myhost ~]$ sudo chmod -R g+x /data/sharedlogs/otherhost/vcs
    [sudo] password for entpnerd: 
    chmod: cannot access ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ sudo chmod -R u+x /data/sharedlogs/otherhost/vcs
    chmod: cannot access ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    [entpnerd@myhost ~]$ sudo chmod -R a+x /data/sharedlogs/otherhost/vcs
    chmod: cannot access ‘/data/sharedlogs/otherhost/vcs’: Not a directory
    

Qualquer ajuda seria muito apreciada.

    
por entpnerd 13.10.2017 / 07:56

3 respostas

2

Isso pode ser um problema com o serviço de montagem (por exemplo, Samba). Tente reiniciar o serviço Samba no host remoto:

sudo service smb restart
    
por 17.10.2017 / 21:57
2

Eu tive esse problema ao executar montagens de ligação no Docker. Eu reiniciei o daemon do Docker e o arquivo foi removido corretamente.

edit: usei o WSL (Ubuntu 16.04) no Windows 10.

    
por 21.09.2018 / 07:26
0

Tem o mesmo problema:

# ll /tmp/mtp
ls: cannot access /tmp/mtp: Input/output error
root@lenov01 ~ # ll /tmp
ls: cannot access /tmp/mtp: Input/output error
total 68
     ? d?????????  ? ?      ?          ?            ? mtp/
     2 drwxr-xr-x 25 root   root    4096 Nov 11 05:15 ../
393218 drwx------  2 root   root    4096 Nov 11 05:16 pulse-PKdhtXMmr18n/
393222 -r--r--r--  1 root   root      11 Nov 11 05:16 .X0-lock

O diretório / tmp / mtp foi criado para acessar o armazenamento de dispositivos Android:

# jmtpfs /tmp/mtp

Eu poderia me livrar desse diretório com:

# fusermount -u /tmp/mtp
    
por 11.11.2018 / 22:43