利用脚本对mysql数据库和网站目录进行备份
某台服务器,上有mysql数据库和网站目录若干,需要对分别进行备份,假定网站目录对应的数据库名称是相同的,则实现方法如下:
#!/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 的备份文件。
如果在运行过程出现如下提示:
Warning: Using a password on the command line interface can be insecure.
解决方法如下:
修改my.cnf配置文件,在里面注明mysqldump调用的用户名及密码。
[mysqldump] user=dbBackupUser password=dbBackupUserPassword
然后在 mysqldump 命令中去掉 -u -p 的内容就可以了。