Назад | Перейти на главную страницу

Как вручную извлечь резервный набор, созданный двуличием?

У меня есть набор файлов на моем веб-сервере, созданный программным обеспечением дублирования:

Резервная копия была сделана без шифрования.

У моего текущего хостера нет дублирования на своем сервере и он не хочет его устанавливать. Как я могу распаковать эти файлы с помощью удаленного доступа по SSH? Может быть, для этого есть какой-нибудь bash-скрипт?

На случай, если кто-то еще столкнется с этим (как и я), есть несколько достаточно подробных (и в основном правильно) шаги здесь.

Ключевые детали

Ключевой момент - распаковать все duplicity-full.*.difftar.gz файлы в одном месте, так что у вас останется только два snapshot/ и multivol_snapshot/ каталоги.

Если ваш файл находится в snapshot/ тогда все готово. В противном случае найдите каталог в multivol_snapshot/ по пути, где раньше находился ваш файл: вам нужно объединить все файлы в этом каталоге, чтобы воссоздать исходный файл. Файлы пронумерованы, и их можно объединить с помощью cat команда. В зависимости от размера оригинала деталей может быть много.

Проблема с оригинальной инструкцией

Указания, указанные выше, предлагают использовать cat * > rescued-file. К сожалению, этот простой подход не работает, если у вас более 9 частей. поскольку * расширяется в порядке словаря, а не в числовом порядке, 10 будет указан перед 2, и файл будет восстановлен в неправильном порядке.

Обходной путь

Один из простых способов - запомнить порядок словаря делает работают, когда числа одинаковой длины, и ? соответствует одному символу. Итак, если ваш самый большой файл имеет три цифр можно ввести вручную:

cat ? ?? ??? > rescued-file

Добавить или удалить ? шаблоны по мере необходимости, в зависимости от максимального номера файла.

Сценарий

Если у вас есть много файлов, которые нужно восстановить, и вы не хотите набирать их для всех, вы можете предпочесть такой сценарий. Он перечисляет содержащий каталог для каждого файла, удаляет дубликаты из списка, затем переходит в каждый каталог и создает content файл из фрагментов есть. (spacer просто сделать $1 работай.)

find multivol_snapshot/ -type f -printf '%h\0' | \
  sort -uz | \
  xargs -0 -n 1 sh -c 'cd "$1" ; cat $(ls | sort -n) > content' spacer

Теперь вам просто нужно добавить /content в конец любого имени файла, которое вы искали, и вы должны его найти.

Ограничения

Это не восстанавливает никакие из исходных разрешений или прав собственности на файл. Он также не имеет дело с инкрементным резервным копированием, но тогда связанные инструкции также зашли в тупик в этом вопросе - они просто предлагают использовать rdiff «сшить файлы вместе» и отослать читателя к man rdiff.

Как насчет того, чтобы скачать нужный архив и затем сделать вот так: duplicity scp: //uid@other.host//usr/backup Restored_dir (пример с официального сайта)

В вашем случае, я думаю, лучше использовать программу резервного копирования (или скрипт), которую можно просто извлечь. Вы можете увидеть backuppc, flaxbackup (я не знаю, будет ли он работать на вашем хосте или нет, если это vps (или vds), он будет, но если это просто общий хостинг, то не будет).

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