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