Les liens symboliques font-ils réellement une différence dans l'utilisation du disque?

J'ai lu dans tant de sites Web que, sous Linux, les liens symboliques (liens mous, liens symboliques) sont comme des pointeurs qui referencent un autre file, qui peut être situé n'importe où (comme les raccourcis Windows). Cependant, quand je vérifie l'utilisation du disque d'un dossier dans lequel il y a des liens symboliques, il y a un décalage entre ce que mon gestionnaire de files dit et ce que rapporte le duo. Cependant, si je tape du -L ( -L, --dereference; dereference all symbolic links de la page man), la sortie de du -L et la taille que mon gestionnaire de files rapporte sont les mêmes .

Ma question est la suivante : si j'ai un lien vers un gros file, par exemple, ma partition séparée, ai-je des problèmes?

Exemple :

Mon dossier /var/tmp est maintenant vide. Créons un file:

 $ cat /some/file.txt > file.txt $ du -ac 164 ./file.txt 168 . 168 total 

Et mon gestionnaire de files (Thunar, dans ce cas) rapporte

Taille: 1 élément, soit 163,0 Ko

D'accord. Maintenant, créons un très gros file dans /tmp et un lien symbolique:

 $ 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 

Tout va bien pour le moment. Mais si j'ouvre mon gestionnaire de files:

Taille: 2 éléments, soit 570,3 Ko

Et enfin:

 $ du -acL 164 ./file.txt 408 ./heavy.txt 576 . 576 total 

Si la partition dans laquelle se trouve /var/tmp est de 1 GiB, et que je crée un lien dans un file de 1 GiB, mon disque dur va-t-il mourir? Je sais que le du produira 168 et Thunar 1 GiB, mais je ne sais pas ce qui est juste.

Les liens symboliques prennent bien sûr la place, mais seulement la place nécessaire pour stocker le nom et la cible plus quelques octets pour d'autres métadonnées. L'espace occupé par un lien symbolique ne dépend pas de l'espace occupé par la cible (après tout, la cible n'a même pas besoin d'exister).

Plain du signale l'espace occupé par une arborescence de directorys sur le disque. du -L signale l'espace qui serait pris par une arborescence de directorys si tous les liens symboliques étaient remplacés par leur cible. Le premier est généralement l'information utile; Par exemple, c'est l'espace que vous récupérez si vous avez supprimé l'arborescence, et c'est (approximativement) l'espace dont vous avez besoin pour sauvegarder l'arborescence.

du sur un tree de directorys montre (généralement) un peu plus que le total des tailles de file. Cela est dû à deux choses. D'abord, du count également des directorys, qui prennent une petite place pour stocker les noms de files et les métadonnées. Deuxièmement, du count l'espace disque pris par un file, qui peut être différent de la taille du file: l'effet le plus fréquent est que les files occupent un integer de blocs (4kB sur une installation Linux typique), donc un file de 1 octet peut montrer que 4kB dans la sortie du du; mais la compression (telle que la forme primitive fournie par les files sparse sur à peu près tous les filesystems unix) peut rendre la taille du file plus grande que son utilisation sur le disque.

A partir des numbers que vous donnez, il apparaît que Thunar indique la sum des tailles des files dans l'arborescence, en suivant les liens symboliques . C'est en train de le dire de manière subtile – il prétend que la taille totale est de 570,3 Ko, et non que l'utilisation du disque est de 570,3 Ko. Ce qui ne ressort pas du tout de l'interface user ou de la documentation, c'est que Thunar suit des liens symboliques lors du calcul de la taille.

Lequel est "juste" est une question subjective. du count l'utilisation du disque. Thunar indique la taille totale en suivant les liens symboliques. La création d'un lien symbolique a un impact négligeable sur l'utilisation du disque, mais par définition, elle modifie les liens de taille totale suivant les liens symboliques rapportés par Thunar.

Je pense que par défaut, votre gestionnaire de files essaie d'get la taille des files sur lesquels les liens logiciels pointent, alors que du vous donne la taille du directory et les liens logiciels eux-mêmes, mais pas les files qu'ils pointent.

Clarifier,

 `du` -> size of directory + size of all the softlinks `du -L` -> size of directory + size of all the files that the softlinks are pointing to. 

Je ne sais pas si c'est ce que vous demandiez, mais si c'est le cas, je pense que cela pourrait être la réponse à votre question.