Eu li em muitos sites que, em Linux, links simbólicos (soft links, links simbólicos) são como ponteiros que fazem referência a outro arquivo, que pode ser localizado em qualquer lugar (como atalhos do Windows). No entanto, quando verifico o uso do disco de uma pasta na qual há links simbólicos, há uma incompatibilidade entre o que meu gerenciador de arquivos diz e o que du
informa. No entanto, se eu digitar du -L
( -L, --dereference; dereference all symbolic links
na página de manual), a saída du -L
e o tamanho relatados pelo meu gerenciador de arquivos são os mesmos .
Minha pergunta é : se eu tiver um link para um arquivo grande em, por exemplo, minhahome
partiçãoseparada, terei algum problema?
Exemplo :
Minha /var/tmp
pasta agora está vazia. Vamos criar um arquivo:
$ cat /some/file.txt > file.txt
$ du -ac
164 ./file.txt
168 .
168 total
E meu gerenciador de arquivos (Thunar, neste caso) relata
Tamanho: 1 item, totalizando 163.0 kB
Tudo certo. Agora, vamos criar um arquivo muito grande /tmp
e um link simbólico para ele:
$ cat /dir/really_big.txt > /tmp/heavy.txt
$ du -a | grep heavy.txt
408 ./heavy.txt
$ ln -s /tmp/heavy.txt heavy.txt
$ du -ac
164 ./file.txt
0 ./heavy.txt
168 .
168 total
Está tudo bem por enquanto. Mas se eu abrir meu gerenciador de arquivos:
Tamanho: 2 itens, totalizando 570,3 kB
E finalmente:
$ du -acL
164 ./file.txt
408 ./heavy.txt
576 .
576 total
Se a partição /var/tmp
localizada tiver 1 GiB de tamanho grande e eu criar um link para um arquivo de 1 GiB, ¿meu disco rígido morrerá? Eu sei que du
isso produzirá 168 e Thunar 1 GiB, mas não sei qual é o certo.
fonte
Respostas:
Os links simbólicos ocupam espaço, é claro, mas apenas o espaço necessário para armazenar o nome e o destino, além de alguns bytes para outros metadados. O espaço ocupado por um link simbólico não depende do espaço ocupado pelo destino (afinal, o destino nem precisa existir).
Simples
du
relata o espaço ocupado por uma árvore de diretórios no disco.du -L
relata o espaço que seria ocupado por uma árvore de diretórios se todos os links simbólicos fossem substituídos por seus destinos. O primeiro é geralmente a informação útil; por exemplo, é o espaço que você recuperaria se excluir a árvore e é (aproximadamente) o espaço necessário para fazer backup da árvore.du
em uma árvore de diretórios mostra (geralmente) um pouco mais do que o total dos tamanhos de arquivo. Isso é devido a duas coisas. Primeiro,du
também conta com diretórios, que exigem um pouco de espaço para armazenar nomes de arquivos e metadados. Segundo,du
conta o espaço em disco ocupado por um arquivo, que pode ser diferente do tamanho do arquivo: o efeito mais comum é que os arquivos ocupam um número inteiro de blocos (4kB em uma instalação típica do Linux), para que um arquivo de 1 byte possa mostra como 4kB na saída du; mas a compactação (como a forma primitiva fornecida por arquivos esparsos em praticamente todos os sistemas de arquivos unix) pode aumentar o tamanho do arquivo que o uso do disco.A partir dos números fornecidos, parece que Thunar relata a soma dos tamanhos dos arquivos na árvore de diretórios, seguindo os links simbólicos . Na verdade, está dizendo isso de uma maneira sutil - afirma que o tamanho total é de 570,3 kB, não que o uso do disco seja de 570,3 kB. O que não é aparente na interface do usuário ou na documentação é que Thunar segue links simbólicos ao calcular o tamanho.
Qual deles está "certo" é uma questão subjetiva.
du
relata o uso do disco. Thunar relata o tamanho total seguindo links simbólicos. Criar um link simbólico tem um impacto insignificante no uso do disco, mas, por definição, altera os links simbólicos de tamanho total após o relatório que Thunar relata.fonte
du
mostra o uso do disco, enquanto o Thunar mostra outra coisa.Eu acho que, por padrão, seu gerenciador de arquivos está tentando obter o tamanho dos arquivos que os links flexíveis estão apontando, enquanto
du
fornece o tamanho do diretório e dos links flexíveis, mas não dos arquivos para os quais eles apontam.Esclarecer,
Não tenho certeza se é isso que você estava perguntando, mas se for, acredito que essa poderia ser a resposta para sua pergunta.
fonte