Мы выполняем ежедневные резервные копии нашего сервера MySQL. Используя следующий сценарий:
[ ! -d "${DEST}" ] && mkdir -p "${DEST}"
FILE=${DEST}/mysql-live.${NOW}-$(date +"%T").tar.gz.bz2
# get around error
mysqldump --single-transaction -u $MUSER -h $MHOST -p$MPASS DB | bzip2 -k -v > $FILE
Теперь, когда я пытаюсь извлечь с tar xvjf, я получаю ошибку. Это разархивирует с bunzip2 в tar.gz файл, но когда я попытаюсь извлечь tar использования xvf, xzvf, gunzip, это показывает не архив gzip. Однако, если я попытаюсь переименовать его только к tar, то это покажет не архив tar.
Я немного смущен здесь, поскольку у меня заканчиваются опции, если у кого-либо есть какие-либо идеи. Это качалось бы. Это находится на CentOS.
Ваша команда
mysqldump --single-transaction -u $MUSER -h $MHOST -p$MPASS DB | bzip2 -k -v > $FILE
говорит дамп базы данных и конвейер вывода на bzip2, который должен записать stdout в $FILE.
Содержимое stdin будет сжато и записано, например, на a.tar.gz.bz2. Это не создает ни tar-архив, ни gzip-сжатый tar-архив (.tar.gz), а просто создает .bz2-сжатый tar-архив с запутанным именем.
Когда вы пытаетесь извлечь содержимое архива (по неизвестным причинам), вы пытаетесь использовать утилиту tar и неожиданно получаете сообщение об ошибке, вероятно, что-то вроде
tar -xvjf a.tar.gz.bz2
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors
Что верно, потому что файл не является bzip-сжатым gzip-сжатым tar-архивом. Скорее всего, вам нужно что-то вроде
bunzip a.tar.gz.bz2
Поскольку вы не генерируете ни tar-архив, ни сжатый gzip-архив, вам, вероятно, не следует делать .tar.gz частью имени файла, так как, как вы обнаружили, это просто приводит к путанице.