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
Também como eu sei 1650
seria o tamanho do arquivo file
, mas qual é o número 7
que é colocado sob a coluna de tamanho?
Edição: Em execução du
:
$ du -sh symfile
0 symfile
Então, como você pode provar que 7 é o tamanho do link simbólico ?!
ATUALIZAR:
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
symbolic-link
ls
Maythux
fonte
fonte
7
depende do sistema de arquivos (e possivelmente outros parâmetros). É 7 no ext4, mas pode ser 13 no btrfs e 3 no tmpfs.mkdir foo; ls -ld foo; for i in {1..1000}; do ln -s foo/bar foo/$i; done; ls -ld foo
.Respostas:
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, podem mostrar 0.stat
els -l
são melhores para mostrar o tamanho nesse sentido.fonte
du -sh symfile
dá 0? -É o tamanho do link simbólico em bytes.
Alguns sistemas de arquivos têm uma pequena área dentro da entrada do diretório usada para o início do arquivo, que acelera significativamente o processamento de links simbólicos e pequenas leituras (pense
file
) às custas de entradas maiores no diretório.Se todo o conteúdo do link simbólico couber na entrada do diretório, nenhum bloco de dados é alocado e o
du
tamanho é mostrado como zero. Se o link simbólico não couber, o espaço é alocado normalmente (para que você acabe com uma alocação de bloco único), que pode ser otimizada pelo sistema de arquivos usando a mesclagem final (mas não há API paradu
saber sobre isso).O
ext4
sistema de arquivos executa essa otimização apenas para links simbólicos, os critérios são encontrados na função ext4_inode_is_fast_symlink .fonte
Esse é o tamanho do arquivo do link simbólico em bytes.
O arquivo Symlink é um arquivo normal que armazena dados sobre onde está o arquivo para o qual está apontando. No ext 4, são 7 bytes.
fonte
du -sh symfile
dá 0?