使用GithubAction推送仓库至任意网盘

这篇教程介绍了如何利用Rclone和GitHub Actions将GitHub仓库备份到网盘,如阿里云。首先,下载Rclone和7Zip,配置Rclone连接网盘,然后将配置文件压缩并上传到GitHub仓库。接着,在仓库设置中添加Secrets存储压缩包密码。创建GitHub Actions workflow,解压配置文件,同步仓库到网盘。此外,还提供了定时运行和手动触发备份的选项。
摘要由CSDN通过智能技术生成
前言:

Github站队,虽然不影响我们使用,但是这里发一个备份方法,希望帮助到有这样想法的大家。

同时还有Github同步到Gitee,Gitlab的Action,后面会一起发(这个网上其实很多)。

准备:

下载 Rclone (用来生成 rclone.conf )

下载 7Zip (用来压缩 rclone.conf 并设置密码 )

准备好需要备份的仓库。

准备一个网盘,教程中使用 Alist 挂载阿里云。

其他网盘可以 百度 Rclone挂载 你想使用的网盘。

教程视频:哔哩哔哩_bilibili

开始:

首先打开 Rclone Gui 或 CMD ,新建网盘。

在弹出的CMD中按流程新建,并生成配置文件。生成后打开 rclone.conf

打开 rclone.conf 后内容大致为如下:

[aliyun]
type = webdav #网盘类别
url = #webdav路径
vendor = other #webdav供应商
user = admin #webdav用户
pass = #webdav密码 此密码在CMD中输入密码后自动生成
[e5]
type = onedrive
client_id = #客户端id
client_secret = #客户端机密
token = {"access_token":"xxx","expiry":"timexxx"}
drive_id = #自动生成
drive_type = business

rclone挂载各种各样盘可以百度 rclone挂载阿里云 rclone挂载onedrive 等。以上有任意一个可以挂载的即可。确认可以挂载后,将 rclone.conf 压缩为zip rclone.zip 并设置 密码 (保护网盘信息)。

设置Secrets 添加密码

打开需要备份的仓库,点仓库中的 Settings ,并找到 New repository secret ← 点击。

在弹出的界面中 Name 项框中填 PASSWD 全大写,Value 项框中填 刚刚设置的压缩包zip密码 填好点 Add secret 按钮。

上传 rclone.zip 至项目(需要备份的仓库)根目录

打开你需要备份的仓库,点击 Actions 选项,新建 Workflow

set up a workflow yourself

将以下代码粘贴至 main.yml (可改名.yml)

name: backup to onedrive #Action运行标题
​
on: #运行条件
  push: #推送到 master 时运行
    branches: 
      - master  #看自己仓库,有些是main
  schedule: #定时运行
    - cron: 0 22 1/2 * *
  watch: #点star时运行
    types: started
jobs:
  run-it:
    runs-on: ubuntu-latest
    name: zip
    steps:
​
      - name: Checkout codes
        uses: actions/checkout@v2
​
      - name: Install rclone #安装rclone
        run: curl https://rclone.org/install.sh | sudo bash
​
      - name: Unzip config #解压配置文件
        run: |
         mkdir -p ~/.config/rclone/
         unzip -P ${{ secrets.PASSWD }} rclone.zip -d ~/.config/rclone/
     
      - name: Run rclone #运行rclone
        run: |
          
          # 延迟函数 可以删
          delay()
          {
          random_time=$(($RANDOM % $1))
          echo "等待 ${random_time} 分钟后开始"
          for((i=1;i<=${random_time};i++));  
          do
          echo "倒计时 $[${random_time}-$i] 分钟"
          sleep 1m
          done
          }
          # 随机延迟0~2分钟后再进行操作,可自行设置时间 都能删
          delay 2 
​
          # 更改时区 可以删
          sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
          ls -a
          # 生成时间写入time.log ,将网盘目录写入lsf.log 可以删
          echo `date +"%Y-%m-%d %H:%M:%S"` begin > time.log 
          echo "列出文件(此处不展示)" #可以删
          rclone lsf e5:/ > "lsf.log"
          rclone mkdir e5:/github/xxx
          rclone sync ./ e5:/github/xxx
​
      - name: Zip config #打包配置文件
        run: zip -P ${{ secrets.PASSWD }} rclone.zip -j ~/.config/rclone/rclone.conf
​
      - name: Commit config #提交配置文件
        run: |
         git config --global user.email "550029691@qq.com"
         git config --global user.name "valetzx"
         git add .
         git commit -am "GitHub Actions Auto Rclone at $(date +'%Y-%m-%d %H:%M:%S')"
         git push --force # --force 是强制推送可以删

此处 e5 是rclone.conf中的[e5]盘名(rclone新建网盘时指定的名字)

rclone mkdir e5:/github/xxx 指在 e5 中新建 github/xxx 文件夹

rclone sync ./ e5:/github/xxx 指 同步 ./ 文件夹至 e5:/github/xxx

此处 ./ 是github根目录,更多命令可以百度,改完之后出问题就暂时不解决了。

如果需要备份多个仓库,以上几个步骤缺一不可(顺序不重要)

当然 rclone.zip 可以不用每次都生成,如果你想备份在同一个盘里的话。

其实有一个Action就能同步多个仓库的方法,但是不能实时(推送后同步,而且需要用Github服务器下载。有概率封号?这里放一下,建议别用。在更改时区后可以插入更多命令,比如git clone。想试可以自己试。

          # 更改时区
          sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
          git clone https://github.com/pigeonpig/pigeonpig.github.io.git #需要备份的仓库
          git clone https://github.com/pigeonpig/xxx #需要备份的仓库
          git clone https://github.com/pigeonpig/xxx #需要备份的仓库
          #最后也是用 sync 同步 但是 吃资源 不太 香,这个方法没试过,不想整。

视频教程直链Alist:202203092151.mp4 

本文章备份地址:Pigpigeon's blog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值