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


21

He leído en tantos sitios web que, en Linux, los enlaces simbólicos (enlaces blandos, enlaces simbólicos) son como punteros que hacen referencia a otro archivo, que puede estar ubicado en cualquier lugar (como accesos directos de Windows). Sin embargo, cuando verifico el uso del disco de una carpeta en la que hay enlaces simbólicos, hay una discrepancia entre lo que dice mi administrador de archivos y lo que duinforma. Sin embargo, si escribo du -L( -L, --dereference; dereference all symbolic linksdesde la página del manual), el resultado du -Ly el tamaño que informa mi administrador de archivos son los mismos .

Mi pregunta es : si tengo un enlace suave a un archivo grande en, por ejemplo, en mihomeparticiónseparada, ¿tendré algún problema?

Ejemplo :

Mi /var/tmpcarpeta ahora está completamente vacía. Vamos a crear un archivo:

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

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

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

Todo bien. Ahora, creemos un archivo realmente grande /tmpy 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 archivos:

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 /var/tmpse encuentra es de 1 GiB grande, y creo un enlace en él a un archivo de 1 GiB, ¿morirá mi disco duro? Sé que dugenerará 168 y Thunar 1 GiB, pero no sé cuál es el correcto.


¿Está seguro de que un programa no informa, por ejemplo, en Mib y otro en MB?
HandyGandy

No, no es un problema de unidades.
astrojuanlu

Respuestas:


34

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

Plain duinforma el espacio ocupado por un árbol de directorios en el disco. du -Linforma el espacio que ocuparía un árbol de directorios si todos los enlaces simbólicos fueran reemplazados por su destino. La primera suele ser la información útil; por ejemplo, es el espacio que recuperaría si eliminara el árbol, y es (aproximadamente) el espacio que necesita para hacer una copia de seguridad del árbol.

duen un árbol de directorios muestra (generalmente) un poco más que el total de los tamaños de archivo. Eso se debe a dos cosas. Primero, dutambién cuenta los directorios, que toman un poco de espacio para almacenar nombres de archivos y metadatos. En segundo lugar, ducuenta el espacio en disco que ocupa un archivo, que puede ser diferente del tamaño del archivo: el efecto más común es que los archivos ocupan un número entero de bloques (4kB en una instalación típica de Linux), por lo que un archivo de 1 byte puede mostrar como 4kB en du salida; pero la compresión (como la forma primitiva proporcionada por archivos dispersos en casi todos los sistemas de archivos Unix) puede hacer que el tamaño del archivo sea mayor que su uso en disco.

De los números que da, parece que Thunar informa la suma de los tamaños de los archivos en el árbol de directorios, siguiendo enlaces simbólicos . En realidad lo dice 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 se desprende de la interfaz de usuario o la documentación es que Thunar sigue enlaces simbólicos al calcular el tamaño.

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


He editado mi pregunta, así que creo que ahora está bastante clara, pero gracias por la respuesta.
astrojuanlu

@ Juanlu001: He actualizado mi respuesta en consecuencia. En resumen, dumuestra el uso del disco, mientras que Thunar muestra algo más.
Gilles 'SO- deja de ser malvado'

La diferencia es importante cuando crea copias de seguridad que resuelven enlaces simbólicos. Es posible que desee hacer eso si sabe que tiene varios enlaces simbólicos debajo de un árbol que resuelven ubicaciones fuera de un árbol, pero el resto de las cosas fuera de ese árbol no es importante para usted.
Mel

3

Creo que, por defecto, su administrador de archivos está tratando de obtener el tamaño de los archivos a los que apuntan los enlaces blandos, mientras que dule da el tamaño del directorio y los enlaces blandos, pero no los archivos 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 lo es, creo que esta podría ser la respuesta a su pregunta.


Lamento no haber respondido a mi pregunta: lo que dijiste ya lo descubrí. Acabo de editarlo.
astrojuanlu
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.