介于已经出现好几次网站服务器故障导致网站丢失的情况,所以决定还是实施下网站的自动备份。
整体方案比较简单,服务器定时运行备份脚本,然后将网站的关键文件(对于typecho来说,应该就是usr目录、数据库,当然还是nginx的一些配置)上传至Github上。
记得将Git仓库设置为私有。
1. 备份脚本
#!/bin/bash
web_root="/var/www/html/"
blog_dir="${web_root}/usr/"
nginx_dir="/etc/nginx/sites-available/"
git_dir="/root/IoTShareBlog/"
blog_bak_dir="${git_dir}/blog"
nginx_bak_dir="${git_dir}/nginx"
# 1. copy files to git dir
mkdir -p ${blog_bak_dir}
mkdir -p ${nginx_bak_dir}
cp -ard ${blog_dir} ${blog_bak_dir}
cp -ard ${nginx_dir} ${nginx_bak_dir}
# 2. git commit & push
cd ${git_dir}
git add -A
git commit -m "feat: backup web server files"
git push -f
cd -2. 定时备份
考虑定时将网站数据备份到Github,这里使用Linux Crontab,详细说明参见Crontab说明。
这里选择每天晚上10点尝试备份一次,当然是否备份取决于是否发生了数据变更。
# m h dom mon dow command
00 22 * * * sh /usr/local/bin/backup_iotshare.sh > /var/log/iotshare_bak.log