2016-04-26 12 views
0

Я хочу использовать mysqldump, чтобы получить таблицу с удаленного сервера MySQL, а затем сжать этот загруженный файл, используя zip. Во время загрузки мне хотелось бы просмотреть прогресс, используя pv.Как использовать команду mysqldump, pv и zip вместе?

Могу ли я сделать вышеуказанные вещи с помощью | в одной строке?

Это то, что я пробовал:

mysqldump -uuser_name -ppassword -hremote_address --routines my_database my_table | pv | zip > my_database_my_table.sql.zip 

Проблема с этой командой является то, что при выполнении unzip my_database_my_table.sql.zip, я получил - как имя выходного файла. Мне хотелось бы определить имя файла при выполнении команды zip.

Возможно ли установить имя завышенного файла?

mysqldump -uuser_name -ppassword -hremote_address --routines my_database my_table | pv | zip my_database_my_table.sql > my_database_my_table.sql.zip 

Эта команда дает мне ошибку mysqldump: Got errno 32 on write.

+0

Я думаю, что не представляется возможным с помощью команды молнии. Эта работа, mysqldump -uuser_name -ppassword -hremote_address -routines my_database my_table | pv | bzip2 -c> my_database_my_table.sql.bz2 уверен. – abkrim

ответ

0

Быстрый man zip показывает, что вы можете использовать -O или --output-file для указания имени выхода. Это должно сделать вас.

0

Для того, чтобы получить развитие в pv, ему необходимо знать полный размер данных. К сожалению, путем подачи его на mysqldump он не имеет таких данных.

Я бы рекомендовал сначала сбросить данные и перенести их и восстановить позже.

  1. Дамп его.
  2. pv mysqldump.sql | zip > ~/mysqldump.sql.zip
  3. scp remotehost:/home/folder/mysqldump.sql ./
  4. распаковать
  5. pv mysqldump.sql | mysql -u<dbuser> -p <dbname>