mysqldump 一个压缩转储

Arc*_*ing 2 server mysql database zip

到目前为止,我已经以这种方式创建并压缩了 mysql 转储:

mysqldump -u root -p --all-databases > /var/www/html/db-$(date +\%F-\%T).sql
zip /var/www/html/db-$(date +\%F-\%T).zip /var/www/html/db-*.sql
rm /var/www/html/db-*.sql
Run Code Online (Sandbox Code Playgroud)

有没有办法直接从这mysqldump2 行中压缩并保存它?

Pie*_*ois 9

尝试这个:

mysqldump -u root -p --all-databases | zip /var/www/html/db-$(date +\%F-\%T).zip
Run Code Online (Sandbox Code Playgroud)

您将只有一个文件进入 zip 存档,其中-作为文件名。


Kaz*_*lfe 9

另外两个答案已经说明了以下解决方案(因此将其视为其他两个答案的扩展):

mysqldump -u root -p --all-databases | zip /var/www/html/db-$(date +\%F-\%T).zip -
Run Code Online (Sandbox Code Playgroud)

这很好,但这只适用于标准输入/标准输出。这意味着文件将存储-在存档内,并且只能正常提取到标准输入。这意味着要从 ZIP 中实际提取这些数据,您必须这样做:

unzip -p myZipFile.zip > myBackup.sql
Run Code Online (Sandbox Code Playgroud)

如果你想制作一个“普通”的 ZIP 文件(其中的东西有一个真实的名字),你将不得不做一些非常复杂的事情,或者只是做你已经在做的事情,这样就没有净收益。

由于 MySQL 本身是标准输入感知的,您可以使用以下命令直接从备份中恢复(作为示例):

unzip -p myDataBackup.zip | mysql -uroot -pMyInsecurePassword
Run Code Online (Sandbox Code Playgroud)