Si je vérifie la taille du fichier d'un lien symbolique stat()
, il signale une taille de fichier non nulle égale à la chaîne du chemin du lien. Mais lorsque j'utilise du
le lien, il indique une taille de zéro bloc.
Y a-t-il une explication simple à cela? Est-il correct d'interpréter les liens symboliques comme ne nécessitant pas d'espace disque? Où les informations sur les liens symboliques sont-elles stockées?
linux
filesystems
symbolic-link
disk-space
marshall.ward
la source
la source
Réponses:
Voir https://en.wikipedia.org/wiki/Symlink#Storage_of_symbolic_links . Les systèmes modernes utilisent ce qu'on appelle des "liens symboliques rapides". Aucun bloc n'est alloué pour le lien symbolique. Au lieu de cela, la référence au lien symbolique est stockée dans l'inode lui-même, où un fichier normal stocke les emplacements des blocs qui le composent.
du
ne regarde que le nombre de blocs alloués, et peut donc indiquer 0.stat
etls -l
est suffisamment intelligent pour indiquer la longueur du lien symbolique en fonction des données stockées dans l'inode.la source
du -B1 my_file
, il est toujours nul. N'active pas-b
leapparent-size
drapeau? Peut-être que je devrais demander où les données sont sauvegardées?