У нас есть набор серверов, для которых мы выполняем резервное копирование с помощью Duplicity. Мы пытаемся создать некоторые функции для наших сотрудников, чтобы они могли выбирать файл и просматривать доступные версии для восстановления. Duplicity хранит свои метаданные в файлах tar, например:
16M Mar 6 07:20 duplicity-new-signatures.20140305T070733Z.to.20140306T070755Z.sigtar.gz
17M Mar 5 07:17 duplicity-new-signatures.20140304T070728Z.to.20140305T070733Z.sigtar.gz
74M Mar 4 08:02 duplicity-full-signatures.20140304T070728Z.sigtar.gz
13M Mar 3 09:11 duplicity-new-signatures.20140302T070743Z.to.20140303T070723Z.sigtar.gz
14M Mar 2 07:18 duplicity-new-signatures.20140301T070921Z.to.20140302T070743Z.sigtar.gz
18M Mar 1 07:22 duplicity-new-signatures.20140228T071001Z.to.20140301T070921Z.sigtar.gz
16M Feb 28 07:23 duplicity-new-signatures.20140227T071151Z.to.20140228T071001Z.sigtar.gz
15M Feb 27 07:27 duplicity-new-signatures.20140226T070820Z.to.20140227T071151Z.sigtar.gz
13M Feb 26 07:20 duplicity-new-signatures.20140225T071049Z.to.20140226T070820Z.sigtar.gz
14M Feb 25 07:28 duplicity-new-signatures.20140224T070941Z.to.20140225T071049Z.sigtar.gz
92M Feb 24 08:14 duplicity-full-signatures.20140224T070941Z.sigtar.gz
.sigtar.gz
tar-архив, содержащий подписи всех измененных файлов. Подписи хранятся в виде файлов, имена которых идентичны тем, на которые они ссылаются.duplicity-full
файлы содержат подпись для каждого файла в набореduplicity-new
файлы содержат только подписи для файлов, которые были изменены с момента последнего полного или инкрементного резервного копирования.По сути, мне нужно:
for file in `ls /root/.cache/duplicity/hashid/*.sigtar.gz`; do
tar -tzvf $file signature/path/to/specified/file.name
done
Проблема в том, что даже на сервере, который содержит только 1/20 объема данных, который, как мы ожидаем, должен иметь «полностью загруженный» сервер, перечисление «полного» может занять более 10 секунд. Я с содроганием думаю о том, сколько времени может занять этот процесс, когда эти машины заполнятся.
Есть ли способ ускорить получение через tar?
Или, если кто-то знает, как лучше анализировать метаданные Duplicity, я определенно хотел бы знать.
Можно ускорить получение через tar с помощью --seek
вариант:
-n, --seek
archive is seekable
Однако тот факт, что tarball сжат, означает, что он недоступен для поиска. http://duplicity.nongnu.org/new_format.html признает это ограничение.