¿Por qué la cantidad de archivos hace una diferencia?
Aparentemente, se está centrando únicamente en el aspecto "copiar los datos" de "copiar un archivo". Un archivo es más que solo los datos; Es una entidad en un sistema de archivos . Un archivo tiene un nombre y atributos y permisos. Toda esta información adicional sobre el archivo debe duplicarse junto con los datos cuando se "copia el archivo". Hay una cantidad significativa de E / S de disco para realizar esta sobrecarga del sistema de archivos.
El procedimiento para copiar un (1) archivo en un sistema de archivos genérico sería algo como:
- Encuentra el archivo fuente en el sistema de archivos. (una)
- Lea desde el disco la entrada del directorio para el archivo fuente.
- Verifique los permisos de lectura.
- Encuentre el archivo de destino en el sistema de archivos. (si)
- Verifique los permisos de escritura en el directorio de destino.
- Expanda el directorio si es necesario para acomodar el nuevo archivo. (C)
- Actualice el directorio en el disco. (c1)
- Encuentre bloques libres, asígnelos y actualice la tabla nuevamente. (re)
- Lea los datos del archivo y cópielos en el archivo de destino (es decir, copie el "archivo").
- Actualice la entrada del directorio para el nuevo archivo con (tamaño y hora). (mi)
- Actualice el tiempo de acceso de la entrada del directorio de origen. (F)
(a) Como mínimo, esto significa buscar en el directorio actual. O la ruta puede comenzar en la raíz del sistema de archivos, y deben atravesarse varios niveles de directorios.
(b) Como mínimo, esto significa buscar en el directorio actual. O la ruta puede comenzar en la raíz del sistema de archivos, y deben atravesarse varios niveles de directorios. Si el archivo de destino ya existe, determine cómo debe proceder o abortar la copia. Si el archivo de destino no existe, entonces se debe crear una nueva entrada de directorio, y tal vez esto implique expandir el directorio (es decir, sobrecarga de asignación de bloque de archivo (también conocido como clúster) ).
(c) Si el directorio tiene que expandirse, asigne un nuevo bloque encontrando un bloque libre, modifique la tabla de asignación con la nueva asignación y luego escriba los bloques en el disco. Dado que la mayoría de los sistemas de archivos mantienen múltiples copias de la tabla de asignación, eso significa múltiples escrituras en el disco.
(c1) Una vez que se encuentra el directorio de destino, lea el bloque de directorio del disco, modifíquelo con la nueva entrada de directorio para el archivo copiado y luego escriba el bloque en el disco.
(d) Para copiar el archivo, asigne bloques buscando bloques libres, modifique la tabla de asignación con las nuevas asignaciones y luego escriba los bloques en el disco. Dado que la mayoría de los sistemas de archivos mantienen múltiples copias de la tabla de asignación, eso significa múltiples escrituras en el disco. Para mantener la integridad de los datos, el sistema de archivos no puede intentar fusionar (retrasar y fusionar) las operaciones de escritura en disco para directorios y tablas de asignación, sino más bien realizar las operaciones de escritura inmediatamente a medida que los nuevos archivos se crean y se asignan en bloque.
(e) Una vez que la copia de datos se haya completado, actualice la nueva entrada del directorio para el archivo copiado con la longitud de archivo y las marcas de tiempo adecuadas, y luego escriba el bloque de directorio en el disco.
(f) Actualice la entrada del directorio de origen con una nueva marca de tiempo de "acceso" y luego escriba el bloqueo del directorio en el disco.
Entonces, en lugar de solo un archivo, su pregunta es si hacer todo esto por mil archivos podría agregarse al tiempo que lleva copiar solo la porción de datos de los archivos. Si copia solo un archivo de 24 MB, tendrá algo para comparar con su tiempo de copia de mil archivos.
Cuando se realiza una copia de seguridad de un sistema de archivos, rara vez se emplea la copia de archivos individuales a otro sistema de archivos en un disco o partición porque, como ha descubierto, es un proceso bastante lento. Un método más rápido es crear y escribir un único archivo que contenga las entradas del directorio de origen y el contenido del archivo en un formato de archivo especial; los programas de respaldo y el comando * nix 'tar' pueden generar un archivo de este tipo. (Tenga en cuenta que 'tar' solo maneja archivos de almacenamiento y no usa compresión como archivo + utilidades de compresión.) El método más rápido de copia de seguridad es escribir en un dispositivo de bloque (en lugar de un sistema de archivos en un dispositivo), para que el sistema de archivos de origen sea ignorado (tratado como más datos) y se puede realizar una copia de imagen bloque por bloque del dispositivo fuente.