O que o “tamanho” de um symlink representa na saída ls?

10

Vou começar pelo exemplo:

$ ls -l dir1
total 4
-rw-r--r-- 4 maythux maythux 1650 2008-01-10 16:33 file
lrwxrwxrwx 1 maythux maythux  7 2008-01-15 15:17 symfile -> file

symfile é um link simbólico do arquivo file

Além disso, como eu sei, 1650 seria o tamanho do arquivo file , mas qual é o número 7 que é colocado na coluna de tamanho?

EDITAR: Executando du :

$ du -sh symfile
0   symfile

Então, como você pode provar que 7 é o tamanho do link simbólico?!

ATUALIZAÇÃO:

tente isso

$ touch file
$ du -sh file
0 file
$ ls -l file
-rw-rw-r-- 1 maythux maythux 0 Jun  1 19:42 file

observe que o tamanho também está aqui 0.

Agora:

$ ln -s file sym
$ du -sh sym
0 sym
$ ls -l sym
lrwxrwxrwx 1 maythux maythux 4 Jun  1 19:44 sym -> file

Então, suponho que não seja apenas um tamanho

    
por Maythux 01.06.2015 / 18:23

3 respostas

12

Os links simbólicos ocupam o espaço necessário para armazenar o nome e o destino, além de alguns bytes para outros metadados.

Portanto, é o tamanho do link simbólico.

Em relação ao tamanho de du -sh : du , apenas analisa quantos blocos estão alocados e, portanto, pode mostrar que 0. stat e ls -l são melhores em mostrar o tamanho em relação a isso.

    
por Rinzwind 01.06.2015 / 18:27
4

É o tamanho do symlink em bytes.

Alguns sistemas de arquivos têm uma pequena área dentro da entrada de diretório usada para o início do arquivo, o que acelera significativamente o processamento de links simbólicos e pequenas leituras (pense em file ) à custa de entradas de diretório maiores. p>

Se todo o conteúdo do link simbólico se encaixar na entrada de diretório, nenhum bloco de dados será alocado e o tamanho du será exibido como zero. Se o link simbólico não couber, o espaço é alocado normalmente (assim você acaba com uma alocação de bloco único), que pode ser otimizada pelo sistema de arquivos usando a mesclagem final (mas não há API para du para saber disso).

O sistema de arquivos ext4 executa esta otimização apenas para links simbólicos, os critérios são encontrados na função ext4_inode_is_fast_symlink .

    
por Simon Richter 01.06.2015 / 21:14
0

Este é o tamanho do arquivo de links simbólicos em bytes.

O arquivo Symlink é um arquivo normal que armazena dados a respeito de onde está o arquivo para o qual ele está apontando. No ext 4, são 7 bytes.

    
por Pilot6 01.06.2015 / 18:26