Я хотел бы вызвать mysqldump, чтобы создать несколько файлов резервных копий, а затем заархивировать их в один tar.gz.
Я следую этому руководству по части mysqldump: http://dev.mensfeld.pl/2013/04/backup-mysql-dump-all-your-mysql-databases-in-separate-files/ (в конце он вызывает mysqldump в цикле для каждой базы данных и создает по одному файлу за раз)
Я могу просто сохранить все файлы во временном каталоге, а затем поместить их в архив, однако, есть ли способ пропустить эту ненужную часть временного каталога? Я пытался узнать об именованных каналах, думая, что они могут быть тем, что мне нужно, однако толком их не понял.
Вы можете использовать -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 для целей извлечения (если вы отправили ему все файлы через канал, подумайте о том, как они могут извлекаться), но вам не нужно соберите их все вместе, а затем смолите.