Actualmente estoy corriendo tar czf
para combinar archivos de respaldo. Los archivos están en un directorio específico.
Pero el número de archivos está creciendo. Usar tzr czf
toma demasiado tiempo (más de 20 minutos y contando).
Necesito combinar los archivos más rápidamente y de forma escalable.
He encontrado genisoimage
, readom
y mkisofs
. Pero no sé cuál es el más rápido y cuáles son las limitaciones para cada uno de ellos.
tar
introduzca una sobrecarga significativa, leer los archivos es la operación costosa aquí. Debe modificar la forma en que se almacenan sus archivos o utilizar un enfoque radicalmente diferente (copie el sistema de archivos en su conjunto). No podemos ayudarlo mucho sin saber cómo están organizados sus archivos.Respuestas:
Debe verificar si la mayor parte de su tiempo se gasta en la CPU o en E / S. De cualquier manera, hay formas de mejorarlo:
A: no comprimir
Usted no ha mencionado la "compresión" en su lista de requisitos por lo intente poner la "z" de la lista de argumentos:
tar cf
. Esto podría acelerar un poco las cosas.Existen otras técnicas para acelerar el proceso, como usar "-N" para omitir archivos de los que ya realizó una copia de seguridad.
B: copia de seguridad de toda la partición con dd
Alternativamente, si está haciendo una copia de seguridad de una partición completa, tome una copia de toda la imagen del disco. Esto ahorraría procesamiento y mucho tiempo de búsqueda de cabeza de disco.
tar
y cualquier otro programa que trabaje en un nivel superior tiene una sobrecarga de tener que leer y procesar entradas de directorio e inodos para encontrar dónde está el contenido del archivo y hacer más búsquedas de disco principal , leyendo cada archivo desde un lugar diferente del disco.Para hacer una copia de seguridad de los datos subyacentes mucho más rápido, use:
dd bs=16M if=/dev/sda1 of=/another/filesystem
(Esto supone que no está utilizando RAID, lo que puede cambiar un poco las cosas)
fuente
pigz
si existe en el sistema más de un procesador.Para repetir lo que otros han dicho: necesitamos saber más sobre los archivos que se están respaldando. Iré con algunas suposiciones aquí.
Agregar al archivo tar
Si los archivos solo se agregan a los directorios (es decir, no se elimina ningún archivo), asegúrese de agregar al archivo tar existente en lugar de volver a crearlo cada vez. Puede hacerlo especificando el nombre de archivo existente en su
tar
comando en lugar de uno nuevo (o eliminando el antiguo).Escribe en un disco diferente
Leer desde el mismo disco en el que está escribiendo puede estar matando el rendimiento. Intente escribir en un disco diferente para distribuir la carga de E / S. Si el archivo debe estar en el mismo disco que los archivos originales, muévalo después.
No comprimir
Solo repito lo que dijo @Yves. Si sus archivos de respaldo ya están comprimidos, no hay mucha necesidad de comprimir nuevamente. Simplemente desperdiciará ciclos de CPU.
fuente
Usando alquitrán con lz4 crompression como en
te ofrece lo mejor de ambos mundos (bastante buena compresión Y velocidad). Espere una relación de compresión de aproximadamente 3 incluso si sus datos contienen archivos binarios.
Lectura adicional: comparación de algoritmos de compresión Cómo tar con lz4
fuente
Me sorprende que nadie mencione volcado y restauración. Será mucho más rápido que dd si tiene espacio libre en el sistema de archivos.
Tenga en cuenta que, dependiendo del sistema de archivos en cuestión, puede necesitar diferentes herramientas:
Tenga en cuenta que algunos programas no tienen compresión incorporada (todos excepto volcado): canalice a stdout y use pigz según sea necesario. ;-)
fuente