Linux下定时备份数据库和相关网站文件
2016-08-03 00:00
Linux下定时备份数据库和相关网站文件
2016-08-03
现象
网站图片信息和数据库信息,更新频率较快,需要定时对其备份。
原因
网站数据安全性需要保证;因各种原因数据丢失后可恢复到最近一的备份时间点。
解决方法
1、首先确定需要备份的数据库库名和需要备份的目录名称。
2、确定备份时间点和频率,以及备份文件存放目录和备份文件的文件名称。
3、编写备份脚本。(根据个人需求可将备份文件目录和备份数据库写为2个脚本或合并写为一个脚本)
4、将备份脚本添加到计划任务。
例:
要备份的数据库名为:photo
要备份的图片目录名为:/opt/lampp/htdocs/photo/upload
数据库备份文件保存目录:/opt/backup/db
备份文件名称:photo-当天日期.tar.gz
图片备份文件保存目录:/opt/backup/img
备份文件名称:upload-当天日期.tar.gz
备份脚本存放目录:/opt/backup.sh
任务每天23:59执行一
编写脚本backup.sh内容为:
#!/bin/sh
#mysql Info
SQL_host=localhost //数据库位置
SQL_User=root //连接数据库用户名
SQL_Passwd=*tpw56108* //数据库用户名密码
SQL_db=photo //备份数据库名称
backup_path=/opt/backup/db //数据库备份文件存放目录
file=$SQL_db-$(date +%Y%m%d).tar.gz //数据库备份文件命名规则
mysql_path=/opt/lampp/bin //指定mysql数据库的执行目录
#photo Info
photo_path=/opt/lampp/htdocs/photo //备份目录位置
photo_name=upload //备份目录名称
photo_back=/opt/backup/img //备份目录存放位置
photo_file=$photo_name-$(date +%Y%m%d).tar.gz //备份目录命名规则
cd $backup_path
#export database
$mysql_path/mysqldump -h $SQL_host -u$SQL_User -p$SQL_Passwd -B $SQL_db>$SQL_db.dump
sleep 5s
#file tar
tar -czf $backup_path/$file $SQL_db.dump
sleep 10s
rm -rf $backup_path/$SQL_db.dump
sleep 1s
cd $photo_path
tar zcvf $photo_back/$photo_file $photo_name/
脚本编写完成后,测试执行。确保脚本无误后,制定计划任务:
执行crontab –e
编写:
59 23 * * * /opt/backup.sh
保存
这样就制定了每天23:59分 执行/opt/backup.sh备份脚本的计划任务。
备注:
此备份数据库为mysql,其他数据库可以使用相应的备份命令,或使用tar打包工具直接将数据文件打包。(打包恢复时必须要求数据库版本相同)
脚本文件在windows平台编写,上传至linux环境时 需执行“# dos2unix文件名” 命令转换格式,否则无法执行。