Передайте несколько файлов по каналу в один tar gz

Я хотел бы назвать mysqldump, чтобы создать несколько файлов резервных копий и затем заархивировать их в одном tar.gz.

Я следую этому учебному руководству на mysqldump части: http://dev.mensfeld.pl/2013/04/backup-mysql-dump-all-your-mysql-databases-in-separate-files/ (в конце, это называет mysqldump в цикле для каждой базы данных и создает один файл за один раз),

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

1
задан 5 November 2014 в 11:30
1 ответ

Вы можете использовать флаг -r для tar, чтобы добавить файл в существующий архив. Поскольку допустимо добавление в пустой или несуществующий архив, вы можете изменить зацикленную инструкцию, чтобы она выглядела примерно так:

$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db > "$BACKUP_DIR/mysql/$db"
tar rvf /path/to/tar.file "$BACKUP_DIR/mysql/$db" && rm "$BACKUP_DIR/mysql/$db"

Файл должен существовать временно, так как он должен иметь имя файла внутри индекса tar для целей извлечения ( если вы отправили ему все файлы по каналу, подумайте, как они могут извлечь) - но вам не нужно собирать их все вместе, а затем заморозить их все.

4
ответ дан 3 December 2019 в 17:43

Теги

Похожие вопросы