咨询热线:4006-75-4006

售前:9:00-23:30    备案:9:00-18:00    技术:7*24h

linux环境下中小型网站备份网站源码数据和mysql数据库脚本

2016-11-30 19:58:35 9182次

1,网站源码备份脚本webbakup.sh

#!/bin/bash
# bakup website for 21yunwei
#author swh
time=`date +%Y%m%d`
[ ! -e /home/bakup/websitebak ] && mkdir -p /home/bakup/websitebak
cd /home/wwwroot/21yunwei/
tar zcf /home/bakup/websitebak/21yunwei$time.tar.gz ./*

说明:该脚本可以继续优化,当前只是备份一个站点。如果服务器上网站比较多,可以将站点名设置变量后分别以站点名+时间.tar.gz 方式备份,如下面脚本所示。另外如网站较大请根据实际情况设置备份策略,避免IO过高影响正常使用。这里不做过多说明,可以自己补充脚本。


站点目录下如有多个站点,可以参考这个脚本:

#!/bin/bash
# bakup website for all
#author swh
time=`date +%Y%m%d`
 [ ! -e /home/bakup/websitebak  ] && mkdir -p /home/bakup/websitebak
ls -l   /home/wwwroot | grep 4096 | awk '{ print  $9 }'  > sitename.txt
cat sitename.txt | while  read sitename
do
cd /home/wwwroot/$sitename
tar zcf  /home/bakup/websitebak/$sitename.$time.tar.gz   *
done

2,mysql备份脚本mysqlbakup.sh 。

#!/bin/bash
# backup mysql for 21yunwei
#author swh
[ ! -e /home/bakup/mysqlbak ] && mkdir -p /home/bakup/mysqlbak
time=`date +%Y%m%d`
mysqldump -uDBUsername -pDBPasswd DBname --skip-lock-tables >  /home/bakup/mysql/21yunwei$time.sql

说明:这里只是备份了一个数据库,如果是备份多个数据库请自行设置变量$databasename分别导出。 另外该脚本只适合一些小型网站,数据库较大的导出不适合,请设置自己单独的数据库备份策略。下边单独测试了脚本可以尝试如下两个方法(一个while循环一个for循环)分别导出备份并将sql文件以数据库名+日期.sql方式命名:

#!/bin/bash
# dump mysql  for all
#author  swh
 
[ ! -e /home/bakup/mysqlbak ]  &&  mkdir -p /home/bakup/mysqlbak
time=`date +%Y%m%d`
mysqlshow  -uroot  -pxxxxxx |  grep  -Ev "Data|info" | grep  -v + | awk '{print  $2}' > databasename.txt
while read sqlname
do
mysqldump  -uroot  -pxxxxxx  $databasename  --skip-lock-tables >  /home/bakup/mysqlbak/$databasename.$time.sql
done < databasename.txt
exit 0


#!/bin/bash
# dump mysql  for all
#author  swh
 
[ ! -e /home/bakup/mysqlbak ] &&  mkdir -p /home/bakup/mysqlbak
time=`date +%Y%m%d`
database=`mysqlshow  -uroot  -pxxxxxx |  grep  -Ev "Data|info" | grep  -v + | awk '{print  $2}'`
for bakmysqlname in $database
do          
mysqldump  -uroot  -pxxxx  $databasename  --skip-lock-tables > /home/bakup/mysqlbak/$bakmysqlname.$time.sql
done       
exit 0

3,设置任务计划crontab -e,指定每周三的凌晨一点备份数据库,三点进行网站备份。具体备份频率请根据自己实际情况来定。

0 1 * * 3  sh /home/shell/mysqlbackup.sh
0 3 * * 3  sh /home/shell/webbakup.sh

首页
最新活动
个人中心