从零开始搭建属于自己的博客系列教程六 -- 博客系统备份

从零开始搭建属于自己的博客系列教程六 -- 博客系统备份

1. 写在最前面

折腾了整整一个五一,总算是完成了自己的博客系统。为了给想要搭建自己的博客,但是又和我一样是技术小白的人铺点路,所以准备开个博客搭建的系列教程,避免后来人像我一样走了一大堆弯路。

先贴上自己的博客网站:https://www.ravenxrz.ink

系列教程目录:

2. 备份你的博客

很明显,个人搭建的博客万一down掉了可不像简书、csdn这种网站有人维护,所以我们需要自己定时来备份自己的博客。

注意,备份云盘是google drive

2.1 安装gdrive

打开XShell,执行以下代码。

wget -O /usr/bin/gdrive "https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download"
chmod +x /usr/bin/gdrive
gdrive about

之后,将命令行给出的url复制到浏览器中,打开。(google drive,你懂需要什么的)

授权后,会给出token,复制粘贴到XShell中。即可

2.2 备份脚本

参考了https://www.moerats.com/archives/296/,所给的脚本。我们要知道,备份的东西主要有两个,一个是文章的数据库,这个很小,但是需要经常备份。另一个是整个网站的设置,插件、主题等等,这个很大,却不需要经常改动。所需我将脚本改为了两个,分别设置定期备份时间。

执行命令

mkdir /home/wwwbackups
cd /home/wwwbackups

vi googledrive-website.sh 输入以下内容

#!/bin/sh
##-----------------------Database Access--------------------------##
DB_NAME="typecho"
DB_USER="root"
DB_PASSWORD=""
##-----------------------Folder Web or Folder you want to backup--------------------------##
# NameOfFolder=("default") # If you have multiple folders you need to back up
NameOfFolder="default"
SourceOfFolder="/home/wwwroot/"
BackupLocation="/home/wwwbackups"
date=$(date +"%Y-%m-%d")
##That mean, you will Backup the folder /home/wwwroot/yourdomain.com and will save into Folder /backups
## ----------------------LOG FILE---------------------------------##
LOG_FILE=backups.log
## ----------------------run code-------------------------------##

# Create Backup Floder
if [ ! -d $BackupLocation ]; then
mkdir -p $BackupLocation
fi

# Delete All backed files
find $BackupLocation/*.zip -mtime +10 -exec rm {} \;

# Name of the Backup File
for fd in $NameOfFolder; do
file=$fd-$date.zip

# Zip the Folder you will want to Backup
echo "Starting to zip the folder and files"
cd $SourceOfFolder
zip -r $BackupLocation/$file $fd
sleep 5s

##Process Upload Files to Google Drive
gdrive upload --delete $BackupLocation/$file

# Check upload success or not and mail to user
if test $? = 0
then
echo "Your Data Successfully Uploaded to the Google Drive!"
echo -e "Your Data Successfully created and uploaded to the Google Drive!" | mail -s "Your VPS Backup from $date" zhang.xingrui@foxmail.com
else
echo "Error in Your Data Upload to Google Drive" > $LOG_FILE
fi
done

再建立 vi googledrive-mysql.sh

#!/bin/sh
##-----------------------Database Access--------------------------##
DB_NAME="typecho"
DB_USER="root"
DB_PASSWORD=""
##-----------------------Folder Web or Folder you want to backup--------------------------##
# NameOfFolder=("default") # If you have multiple folders you need to back up
NameOfFolder="default"
SourceOfFolder="/home/wwwroot/"
BackupLocation="/home/wwwbackups"
date=$(date +"%Y-%m-%d")
##That mean, you will Backup the folder /home/wwwroot/yourdomain.com and will save into Folder /backups

## ----------------------LOG FILE---------------------------------##
LOG_FILE=backups.log

if [ ! -d $BackupLocation ]; then
mkdir -p $BackupLocation
fi
find $BackupLocation/*.zip -mtime +10 -exec rm {} \;
for fd in $NameOfFolder; do
# Name of the Backup File
file=$fd-$date.zip

# Tackle databases
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BackupLocation/$date-$DB_NAME.sql
sleep 5s

##Process Upload Databases file to Google Drive
gdrive upload --delete $BackupLocation/$date-$DB_NAME.sql
if test $? = 0
then
echo "Your Data Successfully Uploaded to the Google Drive!"
echo -e "Your Data Successfully created and uploaded to the Google Drive!" | mail -s "Your VPS Backup from $date" zhang.xingrui@foxmail.com
else
echo "Error in Your Data Upload to Google Drive" > $LOG_FILE
fi
done

最后给两个文件执行权限:

chmod +x googledrive-mysql.sh
chmod +x googledrive-website.sh

现在你可以通过bash googledrive-mysql.sh bash googledrive-website.sh来测试。

2.3 设置自动备份

这里要使用到crontab来进行备份设置,执行以下命令

vi /etc/crontab

添加如下两行

  0  2  *  *  * root  bash /home/wwwbackups/googledrive-mysql.sh        # 每天凌晨2点备份数据库文件
  0  2  *  *  1 root bash /home/wwwbackups/googledrive-website.sh        # 每个星期1凌晨2点备份整个网站文件

最后重启crond服务即可,可能并不需要重启:

service crond restart

3. 恢复备份

有时候需要更换主机,那么就需要重新搭建一下博客系统。具体步骤如下:

  1. 本系列教程一,购买vps,安装 lnmp不用安装typecho
  2. 安装本篇教程所说的gdrive,并授权。
  3. 通过gdrive,下载两个备份文件,一个是数据库sql,一个是整个网站文件。
  4. 将网站文件解压并放置到/home/wwwroot/目录下,尝试在浏览器中打开http://youip,查看是否已恢复相关主题和插件。如果遇到404情况,请参考本系列教程一的FAQ小结
  5. 执行以下命令,恢复数据库。

    mysql -u数据库用户名 -p数据库密码 数据库名(一般为typecho) < 第3步中下载的sql文件路径

注意,执行上述步骤后,所有设置都会还原,包括你的博客系统的登陆密码。

6.再次打开http://youip,查看是否已经恢复相关设置。
7.域名更换,打开你购买域名的控制面板,更改解析目标。

额外恢复问题:

  1. 去掉index后缀?参考本系列教程四
  2. CommentToMail插件失效?重新配置STMP密码,参考本系列教程四
  3. 重建博客系统备份?参考本篇教程第2小结。

参考

Gdrive:Linux下谷歌网盘同步工具、自动备份VPS文件到Google Drive

Last modification:August 17th, 2019 at 09:15 am
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment