2024-10-06 16:36:12 +08:00
---
2024-10-06 16:52:59 +08:00
title : "Hugo自动化备份至阿里云OSS"
2024-10-06 16:36:12 +08:00
date : "2024-10-06T15:49:58+08:00"
slug : "20241006-hugo-backup-alioss"
draft : false
categories : []
tags : []
author : "小赵同学"
layout : "post"
status : "public"
categories : [ "生活" ]
tags : []
---
Hugo的整个构建流程需要搭配GitHub Action使用 ,但是GitHub网络在大陆访问并不是很好
大部分地区无法打开,国庆回家想把博客仓库拉下来,更新一篇文章,拉了几次都失败了
2024-10-06 16:52:59 +08:00
渐渐意识到了多端备份的重要性,在搜索引擎找了一圈基本上都是腾讯云Oss的教程,没有找到自己想要的
2024-10-06 16:36:12 +08:00
2024-10-06 16:52:59 +08:00
我比较喜欢使用阿里云Oss,于是打算自己写一个,期间也遇到点问题,不过还好有ChatGpt帮忙
2024-10-06 16:36:12 +08:00
试了下效果不错,分享出来并作备份
## 创建阿里云oss Bucket
登录阿里云控制台,搜索oss,创建一个新的Bucket,按照以下配置即可

操作完此步骤后,请记录你创建好的Bucket名称和Endpoint域名
## 创建阿里云 AccessKey
访问以下地址创建自己的AccesKey值,并做记录
https://ram.console.aliyun.com/profile/access-keys
## Github仓库配置
以上几个步骤所记录的值都是一些敏感的数据,暴露在GitHub仓库是非常危险的
我们将其保存为GitHub Action Secret,这样流水线在工作的时候会自动读取配置好的值

对于Bucket的访问你需要在仓库上配置以下四个数据:
2024-10-06 16:46:47 +08:00
`OSS_BUCKET` : Bucket的名称
2024-10-06 16:52:59 +08:00
2024-10-06 16:46:47 +08:00
`OSS_ENDPOINT` : 上面让保存的Endpoint值
2024-10-06 16:52:59 +08:00
2024-10-06 16:46:47 +08:00
`OSS_ACCESS_KEY_ID` : AccessKey的ID
2024-10-06 16:52:59 +08:00
2024-10-06 21:50:53 +08:00
`OSS_ACCESS_KEY_SECRET` : AccessKey的Secret
2024-10-06 16:36:12 +08:00
## GitHub Action创建文件
[Github Actions ](https://github.com/features/actions )是Github推出的自动化工作流工具,主要用来完成CI/CD
它的工作流是通过yaml文件定义的,放在仓库的.github/workflow目录下
这里我把文件命名为`aliyun-backup.yml` ,这里作一下配置文件说明
因为备份没必要提交一次commit备份一次,备份周期设置的每周日的凌晨0点自动备份
采用的是增量备份模式,只有文件修改或新增才上传,缩短了上传时间
```yaml
name : 备份到阿里云oss
on :
schedule :
- cron : "0 0 * * 0" # 每周日的00:00执行一次
workflow_dispatch : # 手动触发工作流
concurrency :
group : "pages"
cancel-in-progress : false
jobs :
publish :
runs-on : ubuntu-latest
steps :
- name : 下载代码
uses : actions/checkout@v4
with :
submodules : true
fetch-depth : 0
- name : 配置阿里云OSS
uses : manyuanrong/setup-ossutil@v3.0
with :
endpoint : ${{ secrets.OSS_ENDPOINT }}
access-key-id : ${{ secrets.OSS_ACCESS_KEY_ID }}
access-key-secret : ${{ secrets.OSS_ACCESS_KEY_SECRET }}
- name : 增量上传资源(排除 public 文件夹)
run : |
# 查找所有文件,排除 public 文件夹
find . -path ./public -prune -o -type f -print | xargs -I {} ossutil cp {} oss://${{ secrets.OSS_BUCKET }}/{} --update
```
2024-10-07 20:34:00 +08:00
This message is used to verify that this feed (feedId:55064361152458769) belongs to me (userId:58869090310803456). Join me in enjoying the next generation information browser https://follow.is.