rdiff-backup es terriblemente lento al agregar nuevos archivos a la copia de seguridad

rdiff-backup es terriblemente lento al agregar nuevos archivos a la copia de seguridad

Para hacer una copia de seguridad de mis datos utilizo rdiff-backup(2.0.5) en Ubuntu 20.10. La cantidad de datos es de sólo 127 GB, pero 80.000 archivos/17.000 carpetas (principalmente repositorios de código fuente, fotos).

El problema que descubrí es que rdiff-backup parece ser terriblemente lento al agregar archivos nuevos. Escribí un script bash para demostrarlo (ver más abajo).

Lo que hace el guión es:

  • Genera 1000 archivos vacíos
  • Hacer copia de seguridad inicial
  • Genera otros 1000 archivos vacíos
  • hacer otra copia de seguridad

Mientras que la copia de seguridad inicial tarda aproximadamente 1 segundo, la segunda tarda 7 segundos (resultados detallados a continuación). Esto no suena mucho, pero con mis datos de la vida real termino con varias horas para muy pocos archivos nuevos.

Lo que me desconcierta es que sólo el tiempo "real" parece explotar. ¿Se atasca rdiff-backup con otros procesos?

Ejecuto el ejemplo en un SSD SATA ext4 interno.

Guion:

#!/bin/bash
mkdir src
mkdir dest

files=1000

printf "Creating some dummy files.\n"
for (( i=1; i<=$files; i++ ))
do
    touch "src/$i.txt"
done

printf "First run."
time rdiff-backup src/ dest/
printf "\n"
sleep 1

printf "Second run, nothing changed."
time rdiff-backup src/ dest/
printf "\n"
sleep 1

printf "Creating some more dummy files.\n"
for (( i=$files+1; i<=$files*2; i++ ))
do
    touch "src/$i.txt"
done

printf "Third run, adding new files to backup."
time rdiff-backup src/ dest/
printf "\n"
sleep 1

printf "Forth run, nothing changed."
time rdiff-backup src/ dest/

Producción:

Creating some dummy files.
First run.
real    0m1,076s
user    0m0,869s
sys     0m0,157s

Second run, nothing changed.
real    0m0,511s
user    0m0,419s
sys     0m0,037s

Creating some more dummy files.
Third run, adding new files to backup.
real    0m7,460s       <--- 7 times longer!
user    0m1,374s
sys     0m0,310s

Forth run, nothing changed.
real    0m0,747s    
user    0m0,645s
sys     0m0,053s

información relacionada