随着博客运行的时间越来越长,每天整理技术笔记,发布文章。所用的时间和精力也越来越多。担心某天不管是因为误操作还是发生不可控的故障造成数据丢失。竹篮打水一场空,就不好了。于是就想讲数据每日自动备份一次,然后利用bypy上传到百度网盘。
#安装
pip3 install bypy
#授权,输入授权码
bypy info
bypy list #显示文件列表
bypy upload /data/db-backup/myblog_20220331.gz #上传特定文件
bypy upload #上传当前目录
#!/bin/bash
##备份数据库脚本
##email: 1940728253@qq.com
##xwzy1130
#MySQL配置信息
#HOST=127.0.0.1
HOST='/opt/app/mysql/mysql.sock'
USERNAME='root'
PASSWORD='xxxx@123'
#获取日期
DATE=`date +%Y%m%d`
#保存期限
DAYS=20
#备份文件存放位置
BACKUP_DIR='/data/db-backup'
#typecho目录
project='/opt/project/myblog'
#MySQL命令所在目录
MYSQL_DIR=/usr/bin/
#需要备份的数据库列表
#dbs=(myblog httpmonitor)
dbname='myblog'
#判断目录是否存在
if [ -d ${BACKUP_DIR} ];then
cd ${BACKUP_DIR}
else
mkdir -p ${BACKUP_DIR}
fi
#备份数据库
if [ -f ${dbname}_${DATE}.gz ]; then
echo "MySQL Database ${dbname}_${DATE}.gz already exists."
else
#${MYSQL_DIR}/mysqldump -u${USERNAME} -p${PASSWORD} -h${HOST} --default-character-set=utf8 --master-data=2 --single-transaction ${dbname} | /bin/gzip > ${BACKUP_DIR}/${dbname}_${DATE}.gz
${MYSQL_DIR}/mysqldump -u${USERNAME} -p${PASSWORD} -S${HOST} --default-character-set=utf8 --master-data=2 --single-transaction ${dbname} | /bin/gzip > ${BACKUP_DIR}/${dbname}_${DATE}.gz
fi
#制作压缩包
tar -zcvf ${BACKUP_DIR}/typecho_all_${DATE}.tgz ${project}/app/typecho ${BACKUP_DIR}/${dbname}_${DATE}.gz
#利用bypy同步到百度云盘
cd ${BACKUP_DIR} && /usr/local/bin/bypy upload ${BACKUP_DIR}/typecho_all_${DATE}.tgz
##删除旧备份文件
find ${BACKUP_DIR} -name "*.gz" -type f -mtime +22|tee -a ${BACKUP_DIR}/del.log | xargs rm -f 2>>${BACKUP_DIR}/err.log
exit 0
sh databack.sh
10 3 * * * flock -xn /tmp/databack.lock -c 'sh /opt/databack/databack.sh'
登录百度网盘,将备份文件下载下来。然后通过腾讯云购买一台全新的vps(竞价实例,按量计费),做完测试可以删除。将备份文件上传到新买的vps。
参考我的另一片文章: 从零开始-搭建Typecho+Joe主题的博客
# 解压
tar xvf typecho_all_20220401.tgz
# 数据导入
mv opt/project/myblog/app/typecho/ /opt/myblog/app/
gzip -d myblog_20220401.gz
mysql -umbguser -pmb@123 -h172.16.4.10 myblog < myblog_20220401
vim /opt/myblog/app/typecho/config.inc.php
$db->addServer(array (
'host' => '172.17.0.10',
'user' => 'mbguser',
'password' => 'mb@123',
'charset' => 'utf8',
'port' => '3306',
'database' => 'myblog',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);
绑定host,然后访问 https://itbunan.xyz 如果可以正常显示,说明没有问题。
本文共 362 个字数,平均阅读时长 ≈ 1分钟