PHP&SQL/

利用脚本对mysql数据库和网站目录进行备份

发布
更新
字数
421
阅读
1 分钟

某台服务器,上有mysql数据库和网站目录若干,需要对分别进行备份,假定网站目录对应的数据库名称是相同的,则实现方法如下:

bash
#!/bin/sh

# 需要备份的网站列表
list_backup="a.com b.com c.com test"

# 网站目录备份的目标目录
web_t_dir="/data/backup/web"
# 数据库备份的目标目录
db_t_dir="/data/backup/db"
# 要备份的网站目录源目录
web_s_dir="/data/webdir"

# 备份过程中需要数据库用户名和密码
db_backup_database_username="dbBackupUser"
db_backup_database_password="dbBackupUserPassword"

# 开始循环
for current_backup in ${list_backup};do

    # 备份mysql数据库
    db_s_filename=${db_t_dir}/db_${current_backup}_$(date +%Y%m%d%H%M%S)
    db_s_backup_filename=${db_s_filename}.bak
    db_s_tar_filename=${db_s_filename}.tar.gz

    # mysqldump出数据库
    /usr/local/bin/mysqldump --opt -u$db_backup_database_username -p$db_backup_database_password $backup_db >$s_backup_filename
    /usr/bin/tar -czvPf $s_tar_filename -C $db_t_dir $s_backup_filename
    # freebsd里面的tar中没有--remove-files这个参数,所以只能在tar完之后手动删除源文件
    rm $s_backup_filename

    # 备份网站目录
    web_t_filename=${web_t_dir}/web_${current_backup}_$(date +%Y%m%d%H%M%S).tar.gz
    web_s_dirname=${web_s_dir}/${current_backup}

    /usr/bin/tar -czvPf $web_t_filename $web_s_dirname

done

然后将这个脚本crontab执行。
使用了上面的脚本之后,将会在/data/backup的web和db两个目录中出现 web_a.com_201504112234.tar.gz 和 db_a.com_201504112234.tar.gz 的备份文件。

如果在运行过程出现如下提示:

bash
Warning: Using a password on the command line interface can be insecure.

解决方法如下:
修改my.cnf配置文件,在里面注明mysqldump调用的用户名及密码。

bash
[mysqldump]
user=dbBackupUser
password=dbBackupUserPassword

然后在 mysqldump 命令中去掉 -u -p 的内容就可以了。

评论

正在载入评论…

留下评论

人机验证
四位数字,看不清可点击图片刷新

评论经审核后显示。

回到顶部 ↑