不论是Wordpress还是其他方式建立网站,网站数据备份至关重要,一旦机器崩溃毁了数据,网站的恢复性几乎为零。所以今天分享网站自我备份与恢复的方法。这里主要应用到rsync和crontab命令,命令参数繁多,感兴趣可以google一下。
1.首先在建立网站的vps下,生成公钥,命令如下:
ssh-keygen
此时会在.ssh目录下生成id_rsa.pub的文件。
2,将生成的id_rsa.pub存放至备份vps的.ssh文件夹中,使用以下命令保存为公钥文件。如果备份的vps没有.ssh文件夹,可以新建,命令如:mkdir .ssh
cat id_rsa.pub >> authorized_keys
1,在/root下新建文件,将以下突亮的几个关键部位修改成自己的配置信息。并保存为webbackup.sh。
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完成自动定时执行上述备份脚本。输入以下命令
#使用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数据库控制台,如 mysql -u root -p use 数据库名称; #然后使用source命令,后面参数为脚本文件所在路径 source d:/wordpress.sql;
#将博客压缩包解压 unzip wordpress.zip cd home/wwwroot/ mv default /home/wwwroot/
刷新站点即可恢复网站数据加载。
如果出现bash: rsync: command not found。说明建站或备份vps没有安装此项命令,没有的需要安装。yum install -y rsync