8

我试图在 Linux Ubuntu Server 12.04 (CronJob) 中设置计划任务,以便在午夜执行我所有 MySQL 数据库的每日备份。

我已经安装了已知的Webmin(一个很好的用于管理 Web 服务器的 Web 界面)。

所以我的问题是:无论何时执行备份,文件都会被覆盖!

也就是说:前天的备份丢失了,只保存了“昨天”的备份!

我尝试过设置动态文件路径,例如:

/var/www/mysqlbackups/%d-%m-%y

但我没有成功:(

有谁能够帮助我。

非常感谢你们。

4

5 回答 5

16

MySQL 数据库服务器 > 模块配置 > 在“是否使用 strftime 替换备份目标?”上选择是

它对我有用!:)

于 2014-01-21T10:13:48.393 回答
11

您可以使用动态路径,但必须在模块配置中启用它之前:

System > Filesystem Backup > Module Config > Do strftime substitution of backup destinations? > Yes

(如果您不确定占位符,只需单击配置中的文本“Do strftime replacement of backup destinations?”,帮助将显示给您。)

于 2013-01-11T22:30:29.017 回答
8

我有同样的问题并像这样解决:

服务器中选择MySQL 数据库服务器。转到模块配置(左上角),然后选择Do strftime 替换备份目标?

我使用 db_%d-%m-%Y.sql 格式进行备份。(db_13-03-2013.sql)

于 2013-03-13T18:37:13.297 回答
2

我制作了一个 shell 脚本(不适用于 webmin)。把它放在 /etc/cron.daily 中。

脚本会备份数据库(将其存储为 .gz),然后通过 ssh 将其上传到另一台服务器。对于授权。我设置了 ssh 密钥,所以不需要密码。备份文件具有唯一的名称,因此您不会覆盖备份文件。

这是在脚本中创建文件名的方法:

now=`date  +%Y%m%d_%H%M`
dst_path=/var/local/backups
filename="$dst_path/$database.$now.sql.gz"

然后你应该编写一个小脚本来删除所有早于 x 天的备份文件。

#!/bin/sh

#
# Creates a backup of a MySQL databases and uses ssh (sFTP) to send if  to another server
# This script shouldbe called from the crontab

PATH=/usr/sbin:/usr/bin:/sbin:/bin

# MySQL user and password
mysql_cmd=/opt/bitnami/mysql/bin/mysqldump
mysql_usr=user_name
mysql_pass=password

# destination ssh
dst_user=user_name
dst_hostname=192.168.1.1

# Database to backup
database=test

# create timestamp
now=`date  +%Y%m%d_%H%M`

# where we store the files
dst_path=/var/local/backups

# backup filename
filename="$dst_path/$database.$now.sql.gz"
dst_filename="$database.$now.sql.gz"

# run backup
$mysql_cmd -u $mysql_usr --password=$mysql_pass  $database | gzip > $filename

# upload to sever (ssh)
scp $filename $dst_user@$dst_hostname:
于 2012-08-15T07:55:58.387 回答
0

您可以通过以下方式进行

Webmin > MySQL 数据库服务器 > 选择数据库 > 备份数据库 > 可以使用的其他备份选项中的文件路径 > 备份后运行的命令 Enter ======> mv 文件路径/文件名文件路径/文件名date +"%Y%m%d%H%M%S"_ .sql

于 2019-09-25T11:13:05.730 回答