网站自动远程备份,恢复实用方法

前言

不论是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

rsync和crontab综合应用

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数据库控制台,如
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

Little yu