Poco a poco estoy llegando a un acuerdo con la magia negra detrás de la división del sistema APFS / volumen de datos. Hoy, sin embargo, he encontrado un artefacto que simplemente no entiendo: archivos que existen y no existen simultáneamente.
La cuestión es: en la secuencia siguiente, ¿por qué ls
y find
ver una vista fusionada a veces y otras no?
Por ejemplo, sabemos que /usr/share
contiene entradas tanto del volumen de sistema (inodos de alta numeración) como una del volumen de datos (inodos de baja numeración, concretamente snmp
):
# ls -li /usr/share
total 8
...
1152921500312798809 drwxr-xr-x 2 root wheel 64 Jan 1 2020 skel
4054997 drwxr-xr-x 28 root wheel 896 Jan 1 2020 snmp
1152921500312798811 drwxr-xr-x 6 root wheel 192 Jan 1 2020 tabset
...
Tiene sentido, por tanto, que al inspeccionar el volumen de Datos sólo se muestren las entradas de Datos:
# ls -li /System/Volumes/Data/usr/share
total 0
4054997 drwxr-xr-x 28 root wheel 896 Jan 1 2020 snmp
Como era de esperar, find
ve todos los archivos a través de /
y sólo los archivos de datos a través de /System/Volumes/Data
independientemente de -x
:
# find /usr/share | grep '^/usr/share/' | wc -l
14956
# find -x /usr/share | grep '^/usr/share/' | wc -l
14956
# find /System/Volumes/Data/usr/share | grep '^/System/Volumes/Data/usr/share/' | wc -l
179
# find -x /System/Volumes/Data/usr/share | grep '^/System/Volumes/Data/usr/share/' | wc -l
179
Sin embargo, aquí es donde las cosas se ponen extrañas. Si hago la misma búsqueda desde un nivel más arriba, de repente obtengo la vista combinada en ambos sentidos:
# find /usr | grep '^/usr/share/' | wc -l
14956
# find -x /usr | grep '^/usr/share/' | wc -l
14956
# find /System/Volumes/Data/usr | grep /System/Volumes/Data/usr/share/ | wc -l
14956
# find -x /System/Volumes/Data/usr | grep /System/Volumes/Data/usr/share/ | wc -l
14956
Puede ver el mismo comportamiento si compara las salidas de ls
:
# ls /usr/share
# ls /System/Volumes/Data/usr/share
# ls -R /System/Volumes/Data/usr
He estado escarbando en el código de find
y fts
sin embargo, y no veo ninguna trampilla para firmlinks.
Curiosamente, la versión Gnu de estas herramientas no ven la vista fusionada, por lo que es algo en la versión de Apple.
¿Qué me estoy perdiendo?