我试图在Linux Ubuntu Server 12.04(CronJob)中设置一个计划任务,以便在午夜执行我所有MySQL数据库的每日备份。
我已经安装了已知的Webmin(一个很好的Web界面来管理Web服务器)。
所以我的问题是:每当执行备份时,文件都会被覆盖!
这意味着:前天的备份很少,只保存“昨天”备份!
我尝试过像设置动态文件路径之类的东西:
/ var / www / mysqlbackups /%d-%m-%y
但我没有成功:(
任何人都可以帮助我。
非常感谢你们。
答案 0 :(得分:12)
MySQL数据库服务器>模块配置>选择“对备份目的地进行strftime替换吗?”
对我有用! :)
答案 1 :(得分:11)
您可以使用动态路径,但必须在模块配置中启用它:
System > Filesystem Backup > Module Config > Do strftime substitution of backup destinations? > Yes
(如果您不确定占位符,只需点击配置中的“替换备份目标的strftime?”文本,帮助就会显示。)
答案 2 :(得分:6)
我遇到了同样的问题并且这样解决了:
从服务器选择 MySQL数据库服务器。 转到模块配置(左上角),然后选择对备份目标进行strftime替换?为是。
我使用db_%d-%m-%Y.sql格式进行备份。 (db_13-03-2013.sql)
答案 3 :(得分:2)
我制作了一个shell脚本(不适用于webmin)。把它放在/etc/cron.daily。
脚本对数据库进行备份(将其存储为.gz),然后通过ssh将其上载到另一台服务器。对于auth。我设置了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:
答案 4 :(得分:0)
您可以按照以下方式进行操作
Webmin> MySQL数据库服务器>选择数据库>备份数据库>文件路径
在其他备份选项中,可以使用>命令在备份后运行
输入======> mv文件路径/文件名文件路径/文件名_ date +"%Y%m%d%H%M%S"
。sql