咨询热线:4006-75-4006
售前:9:00-23:30 备案:9:00-18:00 技术:7*24h
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