Buena pregunta. Parece que actualmente no hay formas fáciles de saber de alto nivel.
Un problema es que un archivo solo puede compartir parte de los datos a través de Copiar en escritura. Esto se denomina extensión física, y algunas o todas las extensiones físicas pueden compartirse entre archivos CoW.
No hay nada análogo a lo inode
que, cuando se compara entre archivos, le diría que los archivos comparten las mismas extensiones físicas. (Editar: ver mi otra respuesta ).
La respuesta de bajo nivel es que puede preguntarle al kernel qué extensiones físicas se usan para el archivo que usa , que está documentado en . En principio, si todas las extensiones físicas son iguales, entonces el archivo debe compartir el mismo almacenamiento subyacente.FS_IOC_FIEMAP
ioctl
Documentation/filesystems/fiemap.txt
Pocas cosas implementan una forma de ver esta información en un nivel superior. Encontré un código de go aquí . Aparentemente filefrag
, se supone que la utilidad muestra las extensiones con -v. Además, btrfs-debug-tree
muestra esta información.
Sin embargo, sería cauteloso, ya que estas cosas pueden haber tenido poco uso en la naturaleza para este propósito, puede encontrar errores que le dan respuestas incorrectas, así que tenga cuidado de confiar en estos datos para decidir las operaciones que podrían causar corrupción de datos.
Algunas preguntas relacionadas:
btrfs-debug-tree
para enumerar las extensiones en un nombre de archivo dado?