rename content/post to content/posts
This commit is contained in:
1 parent
cda4dbb24b
commit
bcd4bc9282
866 files changed
+43
-25
No files matched your search
@@ -0,0 +1,109 @@
|
||||
---
|
||||
pid: 128
|
||||
title: Hugo自动化备份至阿里云OSS
|
||||
date: '2024-10-06T15:49:58+08:00'
|
||||
slug: 20241006
|
||||
draft: true
|
||||
author: 小赵同学
|
||||
layout: post
|
||||
status: hidden
|
||||
categories:
|
||||
- 生活
|
||||
tags: []
|
||||
ai_comment: >-
|
||||
国内GitHub访问确实是个痛点,增量备份到OSS是个实用方案。有个技术细节值得注意:find命令排除public目录的写法可能存在隐患,如果文件路径包含空格会中断处理。更稳妥的做法是用`find
|
||||
. -path ./public -prune -o -type f -print0 | xargs
|
||||
-0`配合null字符分隔。另外可以考虑在workflow里加个slack通知,确认备份完成状态。
|
||||
---
|
||||
|
||||
Hugo的整个构建流程需要搭配GitHub Action使用 ,但是GitHub网络在大陆访问并不是很好
|
||||
|
||||
大部分地区无法打开,国庆回家想把博客仓库拉下来,更新一篇文章,拉了几次都失败了
|
||||
|
||||
渐渐意识到了多端备份的重要性,在搜索引擎找了一圈基本上都是腾讯云Oss的教程,没有找到自己想要的
|
||||
|
||||
我比较喜欢使用阿里云Oss,于是打算自己写一个,期间也遇到点问题,不过还好有ChatGpt帮忙
|
||||
|
||||
试了下效果不错,分享出来并作备份
|
||||
|
||||
## 创建阿里云oss Bucket
|
||||
|
||||
登录阿里云控制台,搜索oss,创建一个新的Bucket,按照以下配置即可
|
||||
|
||||

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

|
||||
|
||||
对于Bucket的访问你需要在仓库上配置以下四个数据:
|
||||
|
||||
`OSS_BUCKET` : Bucket的名称
|
||||
|
||||
`OSS_ENDPOINT` : 上面让保存的Endpoint值
|
||||
|
||||
`OSS_ACCESS_KEY_ID` : AccessKey的ID
|
||||
|
||||
`OSS_ACCESS_KEY_SECRET` : AccessKey的Secret
|
||||
|
||||
## 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
|
||||
```
|
||||
|
||||
|
||||
Reference in new issue
Block a user