前言
不论是Wordpress还是其他方式建立网站,网站数据备份至关重要,一旦机器崩溃毁了数据,网站的恢复性几乎为零。所以今天分享网站自我备份与恢复的方法。这里主要应用到rsync和crontab命令,命令参数繁多,感兴趣可以google一下。
自动备份
公钥准备
1.首先在建立网站的vps下,生成公钥,命令如下:
1 |
ssh-keygen |
此时会在.ssh目录下生成id_rsa.pub的文件。
2,将生成的id_rsa.pub存放至备份vps的.ssh文件夹中,使用以下命令保存为公钥文件。如果备份的vps没有.ssh文件夹,可以新建,命令如:mkdir .ssh
1 |
cat id_rsa.pub >> authorized_keys |
rsync和crontab综合应用
1,在/root下新建文件,将以下突亮的几个关键部位修改成自己的配置信息。并保存为webbackup.sh。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
DATE=$(date +%Y%m%d) BLOG_DIR='/home/wwwroot/default' BLOG_NAME='www.yugogogo.tk' MYSQL_USER='你的用户名' MYSQL_PASS='你的密码' DB='wordpress' BACKUP_DIR='/root/backup' BACKUP_IP_DEST='备份vps的ip' BACKUP_DIR_DEST='/root/backup' if [ ! -d ${BACKUP_DIR} ]; then mkdir ${BACKUP_DIR} fi cd ${BACKUP_DIR} mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${DB} > ${DB}_${DATE}.sql echo "SQL size: $(wc -c ${DB}_${DATE}.sql | awk '{print $1}')" zip -r ${BLOG_NAME}_${DATE}.zip ${BLOG_DIR} > /dev/null echo "WWW size: $(wc -c ${BLOG_NAME}_${DATE}.zip | awk '{print $1}')" zip ${BLOG_NAME}_${DATE}_ALL.zip ${BLOG_NAME}_${DATE}.zip ${DB}_${DATE}.sql > /dev/null rsync -avP ${BLOG_NAME}_${DATE}_ALL.zip root@${BACKUP_IP_DEST}:${BACKUP_DIR_DEST} rm -rf ${DB}_${DATE}.sql ${BLOG_NAME}_${DATE}.zip ${BLOG_NAME}_${DATE}_ALL.zip echo ${BLOG_NAME}_${DATE}_DONE |
上述脚本功能主要完成网站主目录和mysql数据导出,然后汇总打包成zip文件并发送到指定的备份vps的/root/backup。因为部分系统权限不足问题,可以在备份vps的根目录新建backup文件夹。命令如:mkdir backup
3,使用crontab完成自动定时执行上述备份脚本。输入以下命令
1 2 3 4 5 6 |
#使用crontab -e添加crontab任务 crontab -e # 每天0点00分执行/root/webbackup.sh脚本,执行的日志保存在/root/webbackup.log中 00 0 * * * /root/webbackup.sh >> /root/webbackup.log 2>&1 # 每7天一次,0点00分执行/root/webbackup.sh脚本,执行的日志保存在/root/webbackup.log中 00 0 */7 * * /root/webbackup.sh >> /root/webbackup.log 2>&1 |
恢复方法
将备份的压缩文件拷贝到恢复的vps中,输入命令进行解压(注意:文件名修改为自己的文件名)unzip www.yugogogo.tk_20201202_ALL.zip
,即可得到数据库文件.sql和博客文件.zip两个文件。
首先进行数据库文件导入。
mysql数据恢复
1 2 3 4 5 |
#进入mysql数据库控制台,如 mysql -u root -p use 数据库名称; #然后使用source命令,后面参数为脚本文件所在路径 source d:/wordpress.sql; |
网站文件恢复
1 2 3 4 |
#将博客压缩包解压 unzip wordpress.zip cd home/wwwroot/ mv default /home/wwwroot/ |
刷新站点即可恢复网站数据加载。
问题集锦
如果出现bash: rsync: command not found。说明建站或备份vps没有安装此项命令,没有的需要安装。yum install -y rsync