¿Los enlaces simbólicos realmente hacen una diferencia en el uso del disco?

He leído en tantos sitios web que, en Linux, los enlaces simbólicos (enlaces suaves, enlaces simbólicos) son como indicadores que hacen reference a otro file, que puede estar ubicado en cualquier lugar (como los accesos directos de Windows). Sin embargo, cuando compruebo el uso del disco de una carpeta en la que hay enlaces simbólicos, hay una discrepancia entre lo que dice mi administrador de files y lo que du informes. Sin embargo, si -L, --dereference; dereference all symbolic links du -L ( -L, --dereference; dereference all symbolic links de la página man), la salida de du -L y el tamaño que informa mi administrador de files son los mismos .

Mi pregunta es : si tengo un enlace suave a un file grande en, por ejemplo, mi partición de home separada, ¿tendré algún problema?

Ejemplo :

Mi carpeta /var/tmp ahora está vacía. Vamos a crear un file:

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

Y mi administrador de files (Thunar, en este caso) informa

Tamaño: 1 artículo, totalizando 163.0 kB

Todo bien. Ahora, creemos un file realmente grande en /tmp y un enlace simbólico a él:

 $ 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 

Todo está bien por ahora. Pero si abro mi administrador de files:

Tamaño: 2 artículos, un total de 570.3 kB

Y finalmente:

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

Si la partición en la que se encuentra /var/tmp es 1 GiB grande y creo un enlace en ella en un file 1 GiB, ¿se va a morir mi disco duro? Sé que du emitirá 168 y Thunar 1 GiB, pero no sé cuál es el correcto.

Los enlaces simbólicos toman espacio, por supuesto, pero solo el espacio que se necesita para almacenar el nombre y el objective, más unos pocos bytes para otros metadatos. El espacio tomado por un enlace simbólico no depende del espacio tomado por el objective (después de todo, el objective ni siquiera se requiere que exista).

Plain du informa el espacio tomado por un tree de directorys en el disco. du -L informa el espacio que tomaría un tree de directorys si todos los enlaces simbólicos fueran reemplazados por su objective. El primero suele ser la información útil; por ejemplo, es el espacio que recuperarías si borras el tree, y es (aproximadamente) el espacio que necesitas para hacer una copy de security del tree.

du en un tree de directory muestra (generalmente) un poco más que el total de los tamaños de file. Eso se debe a dos cosas. En primer lugar, du también count los directorys, que ocupan un poco de espacio para almacenar nombres de files y metadatos. Segundo, du count el espacio en disco que toma un file, que puede ser diferente del tamaño del file: el efecto más común es que los files ocupan un número integer de bloques (4kB en una installation Linux típica), por lo que un file de 1 byte puede mostrar como 4kB en du output; pero la compression (como la forma primitiva proporcionada por los files dispersos en casi todos los filesystems Unix) puede hacer que el tamaño del file sea más grande que el uso del disco.

A partir de los numbers que das, parece que Thunar informa la sum de los tamaños de los files en el tree del directory, siguiendo los enlaces simbólicos . De hecho, lo está diciendo de una manera sutil: afirma que el tamaño total es de 570.3 kB, no que el uso del disco es de 570.3 kB. Lo que no es del todo evidente por la interfaz de usuario o la documentation es que Thunar sigue los enlaces simbólicos al calcular el tamaño.

Cuál es "correcto" es un asunto subjetivo. du informa el uso del disco. Thunar informa el tamaño total siguiendo los enlaces simbólicos. Crear un enlace simbólico tiene un impacto insignificante en el uso del disco, pero por definición sí cambia el total de tamaño siguiendo los enlaces simbólicos que informa Thunar.

Creo que de forma pnetworkingeterminada su administrador de files está tratando de get el tamaño de los files a los que apuntan los enlaces suaves, mientras que du le da el tamaño del directory y los enlaces suaves, pero no los files a los que apuntan.

Para aclarar,

 `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. 

No estoy seguro de si esto es lo que estaba preguntando, pero si es así, entonces creo que esta podría ser la respuesta a su pregunta.