rdiff-backup ужасно медленный при добавлении новых файлов в резервную копию

rdiff-backup ужасно медленный при добавлении новых файлов в резервную копию

Для резервного копирования данных я использую rdiff-backup(2.0.5) на Ubuntu 20.10. Объем данных составляет всего 127 ГБ, но 80 тыс. Файлов / 17 тыс. Папок (в основном репозитории исходного кода, фотографии).

Проблема, которую я обнаружил, заключается в том, что rdiff-backup, похоже, ужасно медленный при добавлении новых файлов. Я написал скрипт bash, чтобы продемонстрировать это (см. ниже).

Скрипт делает следующее:

  • Создать 1000 пустых файлов
  • Сделайте первоначальное резервное копирование
  • Сгенерировать еще 1000 пустых файлов
  • Сделайте еще одну резервную копию

В то время как первоначальное резервное копирование занимает примерно 1 секунду, второе занимает 7 секунд (подробные результаты ниже). Это звучит не так уж много, но с моими реальными данными я получаю несколько часов для очень немногих новых файлов.

Меня озадачивает то, что только "реальное" время, похоже, взрывается. Застревает ли rdiff-backup с другими процессами?

Я запускаю пример на внутреннем SSD-диске ext4 SATA.

Сценарий:

#!/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/

Выход:

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

Связанный контент