我尝试了许多用于数据库备份的脚本,但我做不到。我想每小时备份一次我的数据库。
我将文件添加到“/etc/cron.hourly/”文件夹,将其 chmod 更改为 755,但它没有运行。至少我写了我的伪代码。
如果您能为此操作编写一个脚本并告诉我应该多做些什么,我会很高兴?将此脚本文件添加到 /etc/cron.hourly/
文件夹后。
- 获取当前日期并创建一个变量,
date=date(d_m_y_H_M_S)
- 为文件名创建一个变量,
filename="$date".gz
- 像这样获取我的数据库的转储
mysqldump --user=my_user --password=my_pass --default-character-set=utf8 my_database | gzip > "/var/www/vhosts/system/example.com/httpdocs/backups/$("filename")
- 删除文件夹
/var/www/vhosts/system/example.com/httpdocs/backups/
中所有超过8天的文件 - 到文件
"/var/www/vhosts/system/example.com/httpdocs/backup_log.txt"
,这个文本将被写入:Backup is created at $("date")
- 将文件所有者 (chown) 从 root 更改为“my_user”。因为我想从“my_user”FTP 帐户打开备份和日志文件。
- 我不想在每个 cron 之后收到一封电子邮件。
>/dev/null 2>&1
将被添加。
原文由 trante 发布,翻译遵循 CC BY-SA 4.0 许可协议
经过数小时的工作,我创建了一个如下所示的解决方案。我为其他可以受益的人复制粘贴。
首先创建一个脚本文件并赋予该文件可执行权限。
然后使用 Shift+Ins 将以下行复制到文件中
编辑:
如果你使用 InnoDB 并且备份花费太多时间,你可以添加“ single-transaction ”参数来防止锁定。所以 mysqldump 行将是这样的: