【问题标题】:How to use mysqldump, pv, and zip command together?如何同时使用 mysqldump、pv 和 zip 命令?
【发布时间】:2016-08-20 02:12:39
【问题描述】:

我想使用 mysqldump 从远程 MySQL 服务器获取一个表,然后使用 zip 压缩这个下载的文件。下载时,我希望我可以使用pv查看进度。

我可以在一行命令中使用| 完成上述操作吗?

这些是我尝试过的:

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 错误。

【问题讨论】:

  • 我认为 zip 命令不可能。这个工作,mysqldump -uuser_name -ppassword -hremote_address --routines my_database my_table |光伏 | bzip2 -c > my_database_my_table.sql.bz2 当然。

标签: linux zip mysqldump progress


【解决方案1】:

这是我如何一起使用它们的:

mysqldump -u db_user -pdb_password db_name| pv | zip > backup.zip

如果有人感兴趣,这里是https://stackoverflow.com/a/50985546/3778130 全自动备份脚本。

希望它对以后的人有所帮助。

【讨论】:

    【解决方案2】:

    man zip 显示您可以使用 -O 或 --output-file 来指定输出名称。你应该这样做。

    【讨论】:

      【解决方案3】:

      为了能够从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>

      【讨论】:

        猜你喜欢
        • 2019-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-14
        • 1970-01-01
        • 2013-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多