
Me pregunto si esto se considera seguro. Sé que los identificadores de archivos funcionan bien siempre que permanezca un enlace, y sé que el identificador es el inodo en lugar del nombre, pero no estoy seguro de cómo funciona en diferentes FS.
Por ejemplo, copiar desde un disco duro ext4 a una memoria USB NTFS o copiar desde una memoria FAT a una unidad ext4.
Simplemente estaba copiando un montón de archivos multimedia grandes y les cambié el nombre antes de realizar la copia. Las sumas de control coinciden. Me pregunto si siempre es seguro, ¿funcionará en la dirección opuesta? ¿Hay peculiaridades que debo conocer o razones para evitar hacerlo?
El SO/Distro es Ubuntu con el kernel Linux 5.0.0-15.
Respuesta1
No estoy seguro de cómo funciona en diferentes FS.
La operación de cambio de nombre en sí no funciona en diferentes sistemas de archivos; No hay diferencia entre escribir en un archivo desde, por ejemplo, un editor de texto y escribir en un archivo utilizando cp
un archivo fuente en otro sistema de archivos.
En Linux, la rename
llamada al sistema es transparente para otros enlaces al archivo, que incluyen otros enlaces físicos y descripciones (y descriptores) de archivos abiertos.La página de manual indica explícitamente
Abrir descriptores de archivos paraviejo caminotampoco se ven afectados.
(Estoy calificando con "en Linux" sólo porque no pude encontrar una referencia en POSIX; creo que esto es común en todos los sistemas operativos de estilo POSIX).
Entonces, cuando copia un archivo entre sistemas de archivos, cp
abre el origen para leer, el destino para escribir y comienza a copiar. Las operaciones de cambio de nombre no afectan los descriptores de archivos que está utilizando; puede cambiar el nombre del origen y/o del destino sin afectar cp
.
Otra forma de pensar en esto es que el nombre del archivo en el directorio que lo contiene es parte de la entrada de su directorio, que apunta a su inodo; Las descripciones de archivos abiertos son otros punteros al inodo, al igual que otros enlaces físicos. Cambiar el nombre del archivo no afecta a ningún otro puntero existente.
Las advertencias a tener en cuenta son que herramientas como mv
no se limitan a lo que rename
puede hacer la llamada al sistema; si mv
archiva en varios sistemas de archivos, rename
fallará (o mv
se dará cuenta de que la operación se realiza en varios sistemas de archivos y ni siquiera la intentará) y mv
luego recurrirá a copiar manualmente el contenido del archivo y eliminar el original. Esto no dará buenos resultados si el archivo al que se le cambia el nombre se cambia simultáneamente.