Skip to main content

Command Palette

Search for a command to run...

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

Published
•2 min read•View as Markdown
使用GithubAction推送仓库至任意网盘

前言:

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

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

准备:

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

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

准备好需要备份的仓库。

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

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

教程视频:哔哩哔哩_bilibili

开始:

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

image-20220309230601882

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

image-20220309230831786

打开 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 ← 点击。

image-20220309232516695

image-20220309232705904

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

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

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

image-20220309224714579

image-20220309224810932

点 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 是强制推送可以删

image-20220309225159141

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

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

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

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

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

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

image-20220309233721287

其实有一个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

More from this blog

使用GithubAction给任意网页截图

前言: 最近白嫖 Replit 的时候发现了一个能在 vercel 部署的网页截图程序:valetzx/websnap 可以将网页截图并展示 DEMO 以下截图是该程序为本页生成的实时渲染。但是这个程序有个非常不友好的BUG就是截图网页中有中文时,中文会被渲染成方框,简单来说就是( 缺 字 体 )可是 vercel 的环境非常封闭?比较难去添加字体给系统。 那为什么不用 iframe 标签呢?整个网页的渲染相比图片还是比较吃力的,我们完全可以把渲染交给服务器。并且网页截图能做更多东西,比如网页...

May 8, 20222 min read

在Replit中自建监控网站

前言: 废话不多说,这篇文章胶凝在replit上白嫖一个网站监控,并设置企业微信通知。 本次一键部署资源可以在我的仓库Star获取:valetzx starlist replit 准备: 注册 Replit,准备好教育仓库。 这里要用到nodejs监控,和Python企业微信通知 浏览仓库:louislam/uptime-kuma 监控主程序 浏览仓库:easychen/wecomchan 微信通知 开始: 转到仓库:在replit自建uptime-kuma监控 (github.com) 一键...

Apr 22, 20221 min read
在Replit中自建监控网站

在Replit中配置Nix环境

前言: 在Replit中白嫖 时,一定会遇到有不能一键部署的环境,那我们如何选择自己想要的环境呢?这里需要用到Replit环境中自带的 replit.nix 文件。Nix 是什么,我们要怎么使用,下面的文章会解答凝的疑问( 准备: 其实没什么好准备的,在Replit准备一个Bash环境(理论上任意环境都行),打开仓库后,点文件最右边三个点,点显示隐藏文件,然后仓库根文件夹中会多出 .replit replit.nix 两个文件。我们要使用 replit.nix 配置环境。 开始: 首先 Nix...

Apr 20, 20221 min read
在Replit中配置Nix环境

猪猪的博客备份

12 posts