Есть бэкап базы разбитый на нескольков файлов. Названия файлов оканчиваются на sql.bz2.* (где вместо * - номера 00, 01, ..., 05). Пытался восстанавливать таким образом:
bzcat d:\Temp\PostgresqlBackupBase\BACKUP\life\filename.sql.bz2.* | psql dbname postgres > info.log
Bzcat утила из набора bzip. В интернетах когда смотрел примерно так все и должно работать.
Создал предварительно базу dbname. Запустил вышенаписанную комманду. Начинает все аккуратненько запихивать в базу(в pgAdmine глянул - все ок, таблица заполняется). Но в итоге считывает только файл с индексом 00, на последующих валиться с заявлением:
bzcat: Compressed file ends unexpectedly; perhaps it IS corrupted? *Possible* reason follows. bzcat: No error Input file = d:\Temp\PostgresqlBackupBase\BACKUP\filename.sql.bz2.00, output file = (stdout) It IS possible that the compressed file(s) have become corrupted. You can USE the -tvv OPTION TO test integrity of such files. You can USE the `bzip2recover' program to attempt to recover data from undamaged sections of corrupted files. bzcat: WARNING: some files have not been processed: bzcat: 6 specified on command line, 5 not processed yet.
Каким образом ресторить базу из нескольких bz2 архивов? То есть в правильности бэкапа нет сомнений, сомнения в методе восстановления и в частности в восстанавливающем индивидууме.
1. Как разбивали-то при
1. Как разбивали-то при архивации? Если split'ом, то там совсем другое должно быть:
cat файл1 файл2 файл N|bzcat |psql dbname postgres > info.log
2. Если же каждый bzip файл - это нормальный полный архив, то обратите внимание, что использование * означает перечисление всех файлов, но ничего не говорит об их очерёдности, так что настоятельно рекомендую указать файлы по порядку явно.
1. Скорее всего разбито
1. Скорее всего разбито split'ом или что там еще есть похожее. Что за cat такой, где взять, или с чем в комплекте идет? Я пытаюсь все это провернуть на XP - под нее есть этот cat?
2. Если же каждый bzip файл - это нормальный полный архив То есть полный архив? Хотя в любом случае я пробовал указывать имена файлов явно и по порядку - вышло то же самое.
Попробую посмотреть что там за cat. Как я понимаю cat соберет архивы вместе, bzcat разархивит и дальше скармливаем psql'ю.
1. cat это утилита UNIX
1. cat это утилита UNIX которая просто собирает кучу файлов и сливает их вместе на стандартный ввод. В Windows я думаю можно воспользоваться командой COPY или TYPE - читайте хелпы по ним - я в винде не работаю с PostgreSQL
2. Ну то есть, если каждый bzip файл может быть распакован bunzip'ом без ошибок - видимо не ваш случай.
У вас ведь что получается - вы даёте bzcat команду распаковать несколько самостоятельных архивов! Но в вашем случае, судя по всему, каждый файл - это не самостоятельный архив. а всего лишь его кусок. bzcat распакоывает кусок и видит, что это не целый архив о чём вам радостно сообщает!
Вообщем банально total'ом
Вообщем банально total'ом собрал и подал. Все ок. Спс за помощь.
Хм, восстановиться
Хм, восстановиться восстановилось, но! Должно было быть 3 таблицы, а в итоге есть только одна. Абсолютно хз почему. Я вообще не представляю что на сей раз не так сделал. Есть у какие-нибудь предположения на сей счет? Если нужна какая-то дополнительная инфа, то обязательно напишу.
Все ок уже.
Все ок уже.