首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过管道使用7z压缩mysql转储?

如何通过管道使用7z压缩mysql转储?
EN

Unix & Linux用户
提问于 2015-09-25 10:48:37
回答 3查看 12.1K关注 0票数 6

我一直试图使用管道操作符通过7z压缩mysqldump输出(我看到了问题,但它的答案是xz而不是7z)。这就是我迄今尝试过的:

代码语言:javascript
复制
mysqldump -u root -p Linux_Wiki | 7z > backup.sql.7z

以及:

代码语言:javascript
复制
mysqldump -u root -p Linux_Wiki | 7za > backup.sql.7z

以及:

代码语言:javascript
复制
mysqldump -u root -p Linux_Wiki | '7za a' > backup.sql.7z

以及:

代码语言:javascript
复制
mysqldump -u root -p Linux_Wiki | `7za a` > backup.sql.7z

所有四次尝试都失败了,但我确信我已经安装了p7zip,在最后一次尝试提供了这个输出之后:

代码语言:javascript
复制
Enter password: bash: 7-Zip: command not found
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2015-09-25 11:05:58

首先,将密码存储在用户主目录中名为.my.cnf的文件中,格式如下:

代码语言:javascript
复制
[mysqldump]
password=secret

然后,您必须使用没有mysqldump标志的-p来转储mysql数据库(它现在使用文件中的密码):

代码语言:javascript
复制
mysqldump -u root database | 7z a -si backup.sql.7z
  • a标志7z添加到存档中
  • -si意味着从标准输入(从匿名管道)读取。
票数 11
EN

Unix & Linux用户

发布于 2018-01-10 15:26:35

有些人可能不赞成这种做法,但您可以将密码放在命令行中,如下所示:

代码语言:javascript
复制
mysqldump -u root -pmyrootpassword database | 7z a -si backup.sql.7z

它必须立即放在-p参数之后。

票数 0
EN

Unix & Linux用户

发布于 2018-01-10 16:23:02

如果您想使用带有7zip算法的管道,应该考虑使用xz而不是7z。

xz使用与7z完全相同的算法,但它可以像gzip (或bzip2)一样使用。xz和7zip是由同一作者设计的。

代码语言:javascript
复制
mysqldump -u root -p Linux_Wiki | xz -9 > backup.sql.xz

7zip的GUI理解xz。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/232006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档