gpt4 book ai didi

crontab - mysqldump & gzip 命令使用 crontab 正确创建 MySQL 数据库的压缩文件

转载 作者:IT老高 更新时间:2023-10-28 12:53:46 27 4
gpt4 key购买 nike

我在使 crontab 工作时遇到问题。我想自动备份 MySQL 数据库。

设置:

  • Debian GNU/Linux 7.3 (wheezy)
  • MySQL 服务器版本:5.5.33-0+wheezy1(Debian)
  • directories user、backup 和 backup2 拥有 755 权限
  • MySQL db 和 Debian 账户的用户名相同

此命令在 shell 中起作用

mysqldump -u user -p[user_password] [database_name] | gzip > dumpfilename.sql.gz

当我使用 crontab -e 将它放在 crontab 中时

* * /usr/bin/mysqldump -u user -pupasswd mydatabase | gzip> /home/user/backup/mydatabase-backup-`date +\%m\%d_\%Y`.sql.gz >/dev/null 2>&1

/home/user/backup 目录中每分钟创建一个文件,但有 0 个字节。

但是,当我将此输出重定向到第二个目录 backup2 时,我注意到在其中创建了适当压缩的正确 mysqldumpfile。我无法弄清楚我所犯的错误是什么导致第一个目录中的 0 字节文件和第二个目录中的预期输出。

* * /usr/bin/mysqldump -u user -pupasswd my-database | gzip> /home/user/backup/mydatabase-backup-`date +\%m\%d_\%Y`.sql.gz >/home/user/backup2/mydatabase-backup-`date +\%m\%d_\%Y`.sql.gz 2>&1

非常感谢您的解释。

谢谢

最佳答案

首先执行 mysqldump 命令并使用管道重定向生成的输出。管道将标准输出作为标准输入发送到 gzip 命令。在 filename.gz 之后,是输出重定向运算符 (>),它将继续重定向数据,直到最后一个文件名,即数据将保存的位置。

例如,这个命令会转储数据库并通过gzip运行它,数据最终会落在three.gz中

mysqldump -u user -pupasswd my-database | gzip > one.gz > two.gz > three.gz

$> ls -l
-rw-r--r-- 1 uname grp 0 Mar 9 00:37 one.gz
-rw-r--r-- 1 uname grp 1246 Mar 9 00:37 three.gz
-rw-r--r-- 1 uname grp 0 Mar 9 00:37 two.gz

我最初的答案是将数据库转储重定向到许多压缩文件(没有双重压缩)的示例。 (因为我扫描了问题并严重错过了 - 对此感到抱歉)

这是一个重新压缩文件的例子:

mysqldump -u user -pupasswd my-database | gzip -c > one.gz; gzip -c one.gz > two.gz; gzip -c two.gz > three.gz

$> ls -l
-rw-r--r-- 1 uname grp 1246 Mar 9 00:44 one.gz
-rw-r--r-- 1 uname grp 1306 Mar 9 00:44 three.gz
-rw-r--r-- 1 uname grp 1276 Mar 9 00:44 two.gz

这是一个很好的解释 I/O 重定向的资源:http://www.codecoffee.com/tipsforlinux/articles2/042.html

关于crontab - mysqldump & gzip 命令使用 crontab 正确创建 MySQL 数据库的压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22278217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com