
Escribí un pequeño script de copia de seguridad rsync para mi computadora recientemente reemplazada (HD interno a HD externo).
Cuando compré la nueva computadora, copié los archivos (antiguo disco duro interno al nuevo disco duro interno). Misma estructura de archivos, nombres de archivos, etc.
Me pregunto si puedo ejecutar el script de respaldo en la nueva computadora que ahora está conectada al antiguo disco duro externo.
El problema potencial que preveo gira en torno a si rsync vincula a archivos exactos o simplemente a nombres de archivos.
Recuerdo haber leído algo acerca de que los sistemas de archivos tienen identificadores específicos (un número de serie o algo así) "debajo del capó" para cada archivo y cambiar el nombre no cambia ese número.
Entonces, si rsync se vincula a ese número en lugar de solo a un nombre de archivo en una posición particular en la estructura del directorio, podría causar un desastre total en el disco duro externo al volver a copiar todo por duplicado o algún otro resultado extraño.
Es solo que rsync funciona usando enlaces físicos/soft, y no soy lo suficientemente experto en eso para conocer los detalles o sus implicaciones...
¡Cualquier ayuda apreciada!
MacOS Ventura 13.4.1, APFS (sistema de archivos)
Respuesta1
tl; dr
No hay nada de qué preocuparse. Haz uso de tu scriptrsync --dry-run --verbose …
y compruébalo por ti mismo. Si parece normal, sigue usando el script original (sin --dry-run
).
Números de inodo
Recuerdo haber leído algo acerca de que los sistemas de archivos tienen identificadores específicos (un número de serie o algo así) "debajo del capó" para cada archivo y cambiar el nombre no cambia ese número.
Inodonúmeros. Los sistemas de archivos nativos en Unix/Linux comúnmente usan el concepto (y macOS es Unix). Los sistemas de archivos que no usan inodos internamente aparecen como si los usaran, por lo que pueden manejarse de manera similar. Entonces sí, los archivos tienen números de serie, ls -i
los imprime.
Entonces, si rsync se vincula a ese número en lugar de solo a un nombre de archivo...
rsync
no se basa en números de inodo, utilizanombres de ruta(y los nombres de ruta consisten ennombres de archivos). Los números de inodo no están diseñados para significar nada fuera de su sistema de archivos. Y no me refiero a un tipo de sistema de archivos; Quiero decir que son internos a su instancia particular de un sistema de archivos, no conectados a números de inodo en otro sistema de archivos (incluso del mismo tipo).
Tiene razón en que si rsync
intenta basarse en números de inodo, podría causar estragos. No hace esto. hasta donde seno existe una interfaz estándar para acceder a archivos mediante números de inodo. Y usted (o rsync
) no puede solicitar un número determinado mientras crea un nuevo archivo. Para los sistemas de archivos que no usan inodos y solo aparecen como si los usaran, los números de inodos pueden generarse sobre la marcha y en muchos (¿todos?) casos no hay garantía de que exactamente los mismos números estén asociados con exactamente los mismos archivos después de desmontarlos. y monte dicho sistema de archivos nuevamente.
Todo esto significa que los programas no deberían preocuparse por los números de inodos, a menos que se suponga que deban lidiar con las entrañas de un sistema de archivos en sí. Los números de inodo son internos al sistema de archivos. A los programas les gusta cp
o rsync
deberían funcionar en un nivel diferente de abstracción y lo hacen. El diferente nivel de abstracción es el árbol de directorios con nombres de rutas.
Un escenario en el que los números de inodo "se filtran" y dichos programas los utilizan (de forma segura) es cuando un programa quiere detectar enlaces duros. Los archivos vinculados son dos o más nombres de rutas que conducen a un solo archivo (número de inodo). Los programas pueden comparar números de inodos y así saber qué nombres de ruta conducen al mismo archivo. Los enlaces duros funcionan sólo dentro de un único sistema de archivos; Los archivos que tienen números de inodo idénticos pero existen en diferentes sistemas de archivos no están relacionados, los programas lo tienen en cuenta.
Por ejemplo, rsync
puedes usar la opción --hard-links
/ -H
:
Esto le indica
rsync
que busque archivos vinculados en el origen y vincule los archivos correspondientes en el destino. Sin esta opción, los archivos vinculados en el origen se tratan como si fueran archivos separados.[…]
Tenga en cuenta que rsync solo puede detectar enlaces físicos entre archivos que están dentro del conjunto de transferencia. […]
rsync -H
intenta detectar enlaces duros en el origen y crear enlaces duros en el destino. Pero incluso entonces los números de inodo en el destino no tendrán nada que ver con los números de inodo en la fuente. Cuando rsync -H
observe que algunos nombres de ruta en el origen conducen al mismo número de inodo dentro del mismo sistema de archivos, intentará crear los nombres de ruta correspondientes en el destino para conducir aalgunonúmero de inodo único; en otras palabras, intentará crear archivos vinculados. Cuál será exactamente el número está fuera del alcance (y capacidades) de rsync
. La herramienta no necesita preocuparse por el número, ya que incluso la interfaz para crear enlaces físicos ( link(2)
) utiliza nombres de ruta, no números de inodo.
¿Puedo simplemente ejecutar el script de respaldo?
Copié los archivos (HD interno antiguo a HD interno nuevo). Misma estructura de archivos, nombres de archivos, etc. Me pregunto si puedo ejecutar el script de respaldo en la nueva computadora que ahora está conectada al antiguo disco duro externo.
Puede.Los números de inodo en la nueva fuente pueden ser (y lo más probable es que sean) totalmente diferentes a los números de inodo en la fuente anterior, pero esto no importa en absoluto. La estructura de directorios idéntica a la fuente es suficiente.
recuerda que hay--dry-run
/-n
.Para estar seguros, cree una copia de su script y utilícela rsync --dry-run --verbose …
más o menos; ejecútelo y analice el resultado. Sin embargo, los problemas que encontrará (si los hay) no tendrán nada que ver con los números de inodo.