Более быстрый сбор файлов из архива tar
У нас есть коллекция серверов, резервное копирование которых выполняется с помощью 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, я определенно хотел бы знать.
1 ответ
С помощью команды tar можно ускорить поиск --seek
опция:
-n, --seek
archive is seekable
Однако тот факт, что тарбол сжат, означает, что его нельзя искать. http://duplicity.nongnu.org/new_format.html признает это ограничение.