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

21

J'ai lu dans de nombreux sites Web que, sous Linux, les liens symboliques (liens logiciels, liens symboliques) sont comme des pointeurs qui font référence à un autre fichier, qui peut être situé n'importe où (comme les raccourcis Windows). Cependant, lorsque 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 dit mon gestionnaire de fichiers et quels durapports. Cependant, si je tape du -L-L, --dereference; dereference all symbolic linkspartir de la page de manuel), la sortie du -Let la taille signalées par mon gestionnaire de fichiers sont les mêmes .

Ma question est la suivante : si j'ai un lien logiciel vers un gros fichier, par exemple dans mahomepartitionséparée,aurai-je des problèmes?

Exemple :

Mon /var/tmpdossier est maintenant complètement vide. Créons un fichier:

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

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

Taille: 1 article, pour un total de 163,0 kB

D'accord. Maintenant, permet de créer un très gros fichier /tmpet un lien symbolique vers celui-ci:

$ 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 l'instant. Mais si j'ouvre mon gestionnaire de fichiers:

Taille: 2 articles, pour un total de 570,3 kB

Et enfin:

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

Si la partition dans laquelle elle /var/tmpse trouve a une taille de 1 Gio et que j'y crée un lien vers un fichier de 1 Gio, mon disque dur va-t-il mourir? Je sais que cela duproduira 168 et Thunar 1 Gio, mais je ne sais pas ce qui est juste.

astrojuanlu
la source
Êtes-vous sûr qu'un programme ne rapporte pas par exemple dans Mib, et un autre dans MB?
HandyGandy
Non, ce n'est pas un problème d'unités.
astrojuanlu

Réponses:

34

Les liens symboliques prennent de la place, bien sûr, mais juste 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 duindique l'espace occupé par une arborescence de répertoires sur le disque. du -Lsignale l'espace qui serait occupé par une arborescence de répertoires 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 supprimez l'arborescence, et c'est (approximativement) l'espace dont vous avez besoin pour sauvegarder l'arborescence.

dusur une arborescence de répertoires montre (généralement) un peu plus que le total des tailles de fichiers. Cela est dû à deux choses. Tout d'abord, ducompte également les répertoires, qui prennent un peu de place pour stocker les noms de fichiers et les métadonnées. Deuxièmement, ducompte l'espace disque occupé par un fichier, qui peut être différent de la taille du fichier: l'effet le plus courant est que les fichiers occupent un nombre entier de blocs (4 Ko sur une installation Linux typique), donc un fichier à 1 octet peut afficher comme 4 Ko dans la sortie du; mais la compression (telle que la forme primitive fournie par les fichiers épars sur à peu près tous les systèmes de fichiers unix) peut augmenter la taille du fichier par rapport à son utilisation du disque.

D'après les chiffres que vous donnez, il apparaît que Thunar rapporte la somme des tailles des fichiers dans l'arborescence des répertoires, en suivant les liens symboliques . Cela le dit en fait 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 utilisateur ou de la documentation, c'est que Thunar suit des liens symboliques lors du calcul de la taille.

Laquelle est «juste» est une question subjective. dusignale l'utilisation du disque. Thunar rapporte 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, change les liens symboliques de taille totale rapportés par Thunar.

Gilles 'SO- arrête d'être méchant'
la source
J'ai édité ma question donc je pense que c'est assez clair maintenant, mais merci pour la réponse.
astrojuanlu
@ Juanlu001: J'ai mis à jour ma réponse en conséquence. En bref, dumontre l'utilisation du disque, tandis que Thunar montre autre chose.
Gilles 'SO- arrête d'être méchant'
La différence est importante lorsque vous créez des sauvegardes qui résolvent les liens symboliques. Vous voudrez peut-être le faire si vous savez que plusieurs liens symboliques sous un arbre se résolvent vers des emplacements en dehors d'un arbre, mais le reste des choses en dehors de cet arbre n'est pas important pour vous.
Mel
3

Je pense que par défaut, votre gestionnaire de fichiers essaie d'obtenir la taille des fichiers vers lesquels pointent les liens logiciels, alors qu'il duvous donne la taille du répertoire et les liens logiciels eux-mêmes, mais pas les fichiers vers lesquels 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.

Geai
la source
Désolé de ne pas avoir répondu à ma question: ce que vous avez dit, je l'ai déjà compris. Je viens de le modifier.
astrojuanlu