EnEnlaces físicos y unionesEn el artículo de MSDN se puede leer lo siguiente:
Un vínculo físico es la representación del sistema de archivos de un archivo mediante el cual más de una ruta hace referencia a un único archivo en el mismo volumen. Para crear un vínculo físico, utilice la función CreateHardLink. Cualquier cambio en ese archivo es visible instantáneamente para las aplicaciones que acceden a él a través de los enlaces físicos que hacen referencia a él. Sin embargo, el tamaño de la entrada del directorio y la información de atributos se actualizan sólo para el enlace a través del cual se realizó el cambio. Tenga en cuenta que los atributos del archivo se reflejan en cada vínculo físico a ese archivo y los cambios en los atributos de ese archivo se propagan a todos los vínculos físicos. Por ejemplo, si restablece el atributo READONLY en un vínculo físico para eliminar ese vínculo físico en particular, y hay varios vínculos físicos al archivo real, entonces necesitará restablecer el bit READONLY en el archivo desde uno de los vínculos físicos restantes para devuelva el archivo y todos los enlaces físicos restantes al estado READONLY.
¿Alguien puede entender el párrafo anterior?
¿No es la declaraciónLos atributos del archivo se reflejan en cada enlace físico a ese archivo.equivalente a la declaraciónLos cambios en los atributos de ese archivo se propagan a todos los enlaces físicos.?
CómorestablecerEl bit de SÓLO LECTURA puedetraer el archivo y todos los enlaces duros restantes al estado READONLY?
EDITAR
Después de leer la excelente respuesta de JdeBP a esta pregunta, todavía tengo dudas.
Entiendo que hay una copia parcial de la $STANDARD_INFORMATION
entrada de MFT para cada enlace físico que apunta a esta entrada que, según la respuestani siquiera se mantiene actualizado a menos que se cambie el nombre, se cree o se destruya un enlace físico. ¿Qué sucede cuando uno lee los atributos de un enlace físico? Supongo que la copia de este enlace físico $STANDARD_INFORMATION
se ignora, ya que es posible que no refleje el estado actual y los atributos se leen directamente desde la entrada de MFT $STANDARD_INFORMATION
. Además, durante este proceso no se actualiza ninguna información ya que no se trata de ninguna de las operaciones que usted enumeró. ¿Es tan?
Si uno desactiva el bit R para permitir la eliminación de un enlace físico al archivo, entonces (suponiendo que ese no fuera el último enlace) debe volver a activar el bit R, de cualquier forma, para que el archivo de solo lectura nuevamente.
Ahora, no entiendo elsuponiendo que ese no fuera el último enlaceparte. No veo cómo el hecho de que el enlace sea el último hace alguna diferencia aquí. Todavía hay un archivo (la entrada de MFT) y se pueden cambiar sus atributos directamente (no a través de ningún enlace). ¿O es que si hay un archivo hay un enlace, lo que significa que no hay correspondencia uno a uno entre las entradas y los archivos de MFT?
Respuesta1
Como grawity
se dice, el segundo "reinicio" es una mala redacción o un error total.
¿No es la declaraciónLos atributos del archivo se reflejan en cada enlace físico a ese archivo.equivalente a la declaraciónLos cambios en los atributos de ese archivo se propagan a todos los enlaces físicos.?
No. El artículo establece algo que quizás sea demasiado detallado en la implementación para sus lectores objetivo. En NTFS, cada entrada en el MFT puede tener cero o más$FILE_NAME
atributos. Estos registran el directorio principal y el nombre dentro de ese directorio para cada enlace físico al archivo. Pero ellostambiénregistrar banderas de atributos de archivos,a pesar deesas banderas se registran en el $STANDARD_INFORMATION
atributo único de la entrada MFT. Las reglas son un poco complejas, pero en pocas palabras $STANDARD_INFORMATION
es lo que importa y la $FILE_NAME
información ni siquiera se mantiene actualizada a menos que se cambie el nombre, se cree o se destruya un enlace físico, lo que requiere tocar los $FILE_NAME
atributos, y también lo es el punto donde el vínculo actual Los indicadores de atributos se pueden propagar a los $FILE_NAME
atributos.
Un desarrollador probablemente explicó los sangrientos detalles de NTFS al autor técnico que escribió el artículo de MSDN. Pero en realidad no tienen ninguna relevancia para un usuario final o incluso para un programador de aplicaciones. Estos son detalles internos de cómo funciona NTFS. Desde la perspectiva de Win32, un archivo/directorio tiene exactamenteunoconjunto de indicadores de atributos, y actualizarlo es actualizarlo, como sea que se haga. Si uno desactiva el R
bit para permitir la eliminación de un enlace físico al archivo, entonces (suponiendo que ese no fuera el último enlace) debe R
volver a activar el bit, de cualquier forma, para que el archivo se pueda leer. sólo que otra vez.