Comenzaré con el ejemplo:
$ ls -l dir1
total 4
-rw-r--r-- 4 maythux maythux 1650 2008-01-10 16:33 file
lrwxrwxrwx 1 maythux maythux 7 2008-01-15 15:17 symfile -> file
symfile
es un enlace simbólico del archivo file
Además, como sé 1650
, sería el tamaño del archivo file
, pero ¿cuál es el número 7
que se encuentra debajo de la columna de tamaño?
EDITAR: Ejecutando du
:
$ du -sh symfile
0 symfile
Entonces, ¿cómo podrías probar que 7 es el tamaño del enlace simbólico?
ACTUALIZAR:
prueba esto
$ touch file
$ du -sh file
0 file
$ ls -l file
-rw-rw-r-- 1 maythux maythux 0 Jun 1 19:42 file
Tenga en cuenta que el tamaño también está aquí 0.
Ahora:
$ ln -s file sym
$ du -sh sym
0 sym
$ ls -l sym
lrwxrwxrwx 1 maythux maythux 4 Jun 1 19:44 sym -> file
Entonces, supongo que no es solo un tamaño
symbolic-link
ls
Maythux
fuente
fuente
7
depende del sistema de archivos (y posiblemente otros parámetros). Es 7 en ext4, pero podría ser 13 en btrfs y 3 en tmpfs.mkdir foo; ls -ld foo; for i in {1..1000}; do ln -s foo/bar foo/$i; done; ls -ld foo
.Respuestas:
Los enlaces simbólicos ocupan el espacio necesario para almacenar el nombre y el destino más unos pocos bytes para otros metadatos.
Entonces es el tamaño del enlace simbólico.
Con respecto al tamaño de
du -sh
:du
solo mira cuántos bloques están asignados, por lo que puede mostrar 0.stat
yls -l
es mejor mostrar el tamaño en ese sentido.fuente
du -sh symfile
da 0? -Es el tamaño del enlace simbólico en bytes.
Algunos sistemas de archivos tienen un área pequeña dentro de la entrada del directorio que se usa para el comienzo del archivo, lo que acelera significativamente el procesamiento de enlaces simbólicos y lecturas pequeñas (piensa
file
) a expensas de las entradas de directorio más grandes.Si todo el contenido del enlace simbólico encaja en la entrada del directorio, entonces no se asignan bloques de datos y el
du
tamaño se muestra como cero. Si el enlace simbólico no encaja, el espacio se asigna normalmente (por lo que termina con una asignación de bloque único), que puede ser optimizado por el sistema de archivos mediante la fusión de cola (pero no hay API paradu
saber sobre esto).El
ext4
sistema de archivos realiza esta optimización solo para enlaces simbólicos, los criterios se encuentran en la función ext4_inode_is_fast_symlink .fuente
Este es el tamaño del archivo de enlace simbólico en bytes.
El archivo Symlink es un archivo normal que almacena datos sobre dónde está el archivo al que apunta. En ext 4 es de 7 bytes.
fuente
du -sh symfile
da 0?