mysqldump в tar.gz

mysqldump в tar.gz

Обычно после дампа базы данных MySQL с помощью mysqldumpкоманды я сразу же tar/gzip получающийся файл. Я ищу способ сделать это одной командой:

Итак, из этого следует:

mysqldump dbname -u root -p > dbname.sql
tar czvf dbname.sql.tgz dbname.sql
rm dbname.sql

Что-то вроде этого:

mysqldump dbname -u root -p > some wizardry > dbname.sql.tgz

Или даже лучше (поскольку я обычно копирую файл дампа на другой сервер):

mysqldump dbname -u root -p > send dbname.sql.tgz to user@host

Я использую bash на Debian.

решение1

mysqldump --opt <database> | gzip -c | ssh user@wherever 'cat > /tmp/yourfile.sql.gz'

В таком конвейере вы не сможете использовать tar, да он вам и не нужен, поскольку вы выводите только один файл. tar полезен только в том случае, если у вас несколько файлов.

решение2

Если вы запускаете это локально, просто используйте следующую команду для резервного копирования вашей базы данных и заархивируйте ее с помощью gzip:

mysqldump -u userName -p (passwordPrompt) yourDatabaseName | gzip -c > output.gz 

(Изменить: исправлен ключ -c)

решение3

Используйте именованный канал.

mkfifo mysql_pipe
gzip -9 -c < mysql_pipe > name_of_dump.gz &
mysqldump database > mysql_pipe 
rm mysql_pipe

Я пользуюсь им постоянно, он потрясающий.

http://en.wikipedia.org/wiki/Именованная_труба

решение4

Используйте pvи следите за скоростью!

mysqldump prod_db -h dbslave | pv | gzip -c > prod_2012_08_20.dump.tgz

Или, если вы знаете размер (3 ГБ), получите точную оценку:

mysqldump prod_db -h dbslave | pv -s 3g | gzip -c > prod_2012_08_20.dump.tgz

Связанный контент