我想使用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
错误。
答案 0 :(得分:1)
这是我一起使用它们的方式:
mysqldump -u db_user -pdb_password db_name| pv | zip > backup.zip
如果有人感兴趣,这里是https://stackoverflow.com/a/50985546/3778130全自动备份脚本。
希望它可以帮助某人。
答案 1 :(得分:0)
快速man zip
表示您可以使用-O或--output-file指定输出名称。那应该是你。
答案 2 :(得分:0)
为了能够从pv
获得进展,它需要知道数据的完整大小。不幸的是,通过将其管道传输到mysqldump
,它没有那种数据。
我建议先转储数据,然后再转发并恢复。
pv mysqldump.sql | zip > ~/mysqldump.sql.zip
scp remotehost:/home/folder/mysqldump.sql ./
pv mysqldump.sql | mysql -u<dbuser> -p <dbname>