Esta pregunta creo que es lo suficientemente técnica para S/O, y probablemente también orientada a la programación para Android. Estoy intrigado sobre cómo se manejan los archivos en Android (o en Java o Linux, según corresponda), ya que hice algo con mi nuevo teléfono inteligente y tenía curiosidad por saber cómo sucedió.¿Por qué puedo mover con éxito un archivo en Linux mientras se está escribiendo?
Estaba transfiriendo un archivo de mi computadora portátil a mi teléfono Android, a través de Bluetooth. Vi el nuevo archivo en el explorador de archivos, supuse que se había transferido por completo, y lo moví de /sdcard/bluetooth
a /sdcard/torrents
. Después de hacerlo, me di cuenta de que, de hecho, seguía siendo transferido. Para mi sorpresa, se completó con éxito, se confirmó con un ícono de notificación en el teléfono y con una verificación manual de MD5 en ambos lados. En la mayoría de los sistemas, el movimiento del archivo habría causado un bloqueo.
¿Cuál es el motivo de esta transferencia exitosa? Soy consciente de que, en general, la ruta del archivo está separada de la ubicación del archivo en el sistema de archivos (en este caso, una tarjeta SD). Me imagino que la aplicación Bluetooth ha abierto un identificador para el archivo, y cuando hice el movimiento del archivo, se actualizó una tabla de 'archivos abiertos' con una nueva ruta. ¿Es esta característica generalmente cierta de cualquier sistema Linux? ¿Podría hacer un mv
en un archivo que se está escribiendo y esperar que la copia, en su nueva ubicación, sea correcta?
archivos ¿Por qué se mueven entre dos sistemas de archivos diferentes causan un accidente, para empezar? Los archivos en sí son kludges de datos binarios; el sistema de archivos solo representa cómo se almacena, representa y elimina esa acumulación de datos. – Makoto
No se esperaría que mover un archivo en sí mismo causara un bloqueo, pero usar 'mv' en un archivo _mientras todavía se está escribiendo en_ probablemente lo haría (ya que, en general, un sistema que escribe en un archivo debería poder suponer el archivo permanece en la misma ubicación desde la apertura de escritura hasta el cierre de escritura). Estoy tratando de entender si este último caso es válido para todos los sistemas Linux (o Java, o Android). ¡Puntos adicionales de explorador/brownie para cualquiera que pueda explicar por qué esto tiene éxito! – halfer