Unix: Por que o arquivo de link suave ainda aponta para o arquivo original quando o arquivo original é excluído?

0

Eu tenho o Windows 7 64-bit PC. Eu instalei o Cygwin versão 2.6.0 nele no diretório c: \ cygwin64.

Eu tenho um arquivo chamado file1 . Para isso, criei um arquivo de link simples denominado file1_soft1 .

O comando

ls -i -l me fornece esta saída:

total 2
3377699721198685 -rw-r--r-- 1 cChappati Domain Users 57 Jan 20 19:47 file1
37154696926542763 lrwxrwxrwx 1 cChappati Domain Users 5 Jan 21 10:36 file1_soft1 -> file1

Então eu apaguei o arquivo original usando o comando rm file1 com sucesso.

Agora, quando eu executo o comando ls -i -l , recebo esta saída:

total 1
37154696926542763 lrwxrwxrwx 1 cChappati Domain Users 5 Jan 21 10:36 file1_soft1 -> file1

Por que o arquivo file1_soft1 ainda está vinculado ao arquivo file1 quando o arquivo file1 não existe mais?

Eu esperava que o arquivo file1_soft1 também fosse excluído ou se tornasse um arquivo regular com um link para o arquivo file1 removido. Mas nada disso aconteceu.

Obrigado

    
por ChumboChappati 21.01.2017 / 16:56

2 respostas

3

Por que o arquivo file1_soft1 ainda está vinculado ao arquivo file1 quando o arquivo file1 não existe mais?

Os sistemas de arquivos do Windows não monitoram os links para ver se o arquivo vinculado foi excluído.

Isso adicionaria uma sobrecarga considerável:

  • Mantendo uma lista de todos os links

  • Verifica periodicamente a lista para ver se o arquivo vinculado foi excluído.

Windows:

  • Os comandos do Windows usados para criar links de software ( mklink e atalho ) pode criar links para destinos inexistentes .

Unix:

  • O comando Unix para criar links suaves ( ln -s) também pode criar links para inexistentes segmenta.

    $ ll
    total 0
    $ ln -s target dummy
    $ ll
    total 1
    lrwxrwxrwx 1 DavidPostill None 6 Jan 21 16:19 dummy -> target
    $ cat dummy
    cat: dummy: No such file or directory
    $
    

    Se você excluir um arquivo para o qual ainda existe um link simbólico, o rm será bem-sucedido, mas o link simbólico permanecerá e qualquer tentativa de referência retornará um erro 'arquivo não encontrado'.

Leitura Adicional

por 21.01.2017 / 17:20
4

Isso ocorre porque o link simples aponta para o caminho, não para o arquivo em si.

Sua suposição de que o link ainda está apontando para o arquivo original está errada. Está apontando para o caminho original.

Não importa o que há nesse caminho nem nada. Se você criar o novo arquivo file1 (ou talvez até mesmo um diretório com esse nome), o link apontará para ele.

    
por 21.01.2017 / 17:17