清茶书香

一杯清茶,一本书籍,一个下午。


  • 首页

  • 归档

  • 分类

  • 关于

  • 搜索
Redis JPA Solr SpringData SpringMVC localRepository local Mapper 事务 Mybatis JDBC AOP DI IOC 常用函数 触发器 存储过程 Promise Gateway SpringCloud vue-cli axios es6 webpack npm vue 个性化 zsh 终端 caffeine jvm缓存 guava cache validation Mapping MapStruct comment 小程序 建站 WeHalo config logback plugins database idea maven spring https http nginx password RabbitMQ 秒杀系统 Windows MySQL 数据备份 halo SpringBoot shell Linux ip Optional Stream Lambda k8s Docker 列编辑 vim MacOS 图片合成 Java 远程联调 nps 内网穿透

定时备份我的Halo全部数据

发表于 2020-11-03 | 分类于 工具 | 0 | 阅读次数 488

首先将需要备份的文件复制到一个新的目录里,然后压缩,以及调用oss上传脚本将其上传到oss中。

#!/bin/bash

workdir="tmp/.halo"
datetime="$(date +%Y%m%d%H%M%S)"
bakfile="halo-bak-$datetime.tar.gz"

if [ ! -d $workdir ]
then
	mkdir -p $workdir
else
	rm -rf "$workdir/*"
fi

cp "/root/.halo/application.yaml" "$workdir/application.yaml"
cp -r "/root/.halo/db/" "$workdir/db"
cp -r "/root/.halo/static/" "$workdir/static"
cp -r "/root/.halo/templates/" "$workdir/templates"

tar -zcf $bakfile $workdir
rm -rf $workdir

python upload.py "$bakfile" "$bakfile"

rm -rf $bakfile

我使用的是七牛云的oss,所以我就使用七牛提供的python的sdk上传文件了。

安装七牛的sdk

pip install qiniu

七牛上传demo

# -*- coding: utf-8 -*-
# flake8: noqa
import os
import sys
from qiniu import Auth, put_file, etag

# 需要填写你的 Access Key 和 Secret Key
access_key = '{AK}'
secret_key = '{SK}'


def upload(path, filename):
    # 构建鉴权对象
    q = Auth(access_key, secret_key)

    # 要上传的空间
    bucket_name = '{bucket}'

    # 上传后保存的文件名
    key = "{prefix}/" + filename

    # 生成上传 Token,可以指定过期时间等
    token = q.upload_token(bucket_name, key, 3600)

    # 要上传文件的本地路径
    localfile = path

    ret, info = put_file(token, key, localfile)
    assert ret['key'] == key
    assert ret['hash'] == etag(localfile)
    os.system("echo 'upload success! key is " + key + ".\n' > ~/backup.log")


if __name__ == "__main__":
    upload(path=sys.argv[1], filename=sys.argv[2])

bak-halo.sh与upload.py在同级目录中

添加到定时任务中

crontab -e
# 加入以下内容
0 0 * * * /root/bak-halo.sh

重启定时任务服务systemctl restart crond.service

这样就OK了,不用每天都手动备份数据了。

Bennett wechat
欢迎收藏我的微信小程序,方便查看更新的文章。
  • 本文作者: Bennett
  • 本文链接: https://hibennett.cn/archives/定时备份我的halo全部数据
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# Linux # shell # halo # 数据备份
获取本机IP脚本
秒杀系统设计
  • 文章目录
  • 站点概览
Bennett

Bennett

60 日志
28 分类
74 标签
RSS
Github E-mail Gitee QQ
Creative Commons
Links
  • MacWk
  • 知了
0%
© 2020 — 2023 hibennett.cn版权所有
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4

浙公网安备 33010802011246号

    |    浙ICP备2020040857号-1