n8n 工作流定时备份方法|含子工作流调用方法指南

大模型向量数据库机器学习

周末在家里鼓捣 n8n 工作流,发现 n8n 大更新,可以直接在节点选择区域选择社区节点。

n8n 社区节点是收集应用商店里的 app,集成了来自全球各地的开发者提供的 n8n 平台和插件,可以连接各种官方来不及开发的平台和服务。

原来的社区节点安装非常麻烦,得到setting 区域,点开 community nodes,输入需要安装的社区节点名称,完成安装后,才能在工作流编排区域使用到。

picture.image

这次新的版本升级,官方给了社区节点平等的位置,直接在节点选择区域,直接使用社区节点。

例如下图的 AI Scraper ,右上角有一个打勾标识,代表着这是一个官方审核通过的社区节点。

picture.image

然而,这并不是我这次文章想要聊的内容。

因为我这次升级,没有做好原来 n8n 平台的工作流数据备份,我所有的工作流和认证信息,全丢了😭。

咋整?吸取教训,定时备份!

整体思路很简单,用魔法打败魔法,在 n8n 上创建定时备份的工作流,把 n8n 上左右的工作流和配置文件同步到个人 Github 上。

picture.image

一、方案思路

n8n 定时触发器:每天定时启动备份流程。 2. 2. 执行 Shell 脚本:用 n8n 的“Execute Command”节点,打包 .n8n 目录。

推送到 GitHub:用“Execute Command”节点执行 git 命令,把备份文件推送到你的 GitHub 仓库。

二、详细步骤

1. 准备工作

1.1 在 GitHub 上新建一个私有仓库(比如叫 n8n-backup)

GitHub地址:https://github.com/。没有账号的同学,可以注册一个。

picture.image

进入到首页后,点击左侧的绿色按钮 New,就可以进入到创建页面。

设置的时候,需要设定仓库名字、描述等信息。如果这个工作流数据是要保密的,记得勾选 Private。

picture.image

1.2 创建 GitHub 密钥

进入 setting 页面里的 DeveloperSetting 页面,选择 Fine-grained tokens,创建 token。

picture.image

接下来,设置 Token 名字和过期时间。因为这个是要长期有效的,所以可以选择永不过期。

picture.image

token 的权限需要严格控制,接下来,在 Repository access 区域选择 only select repositories,然后,输入我们创建的仓库名 n8n-backup。

picture.image

还要设置这个仓库的权限内容,配置流程和内容的读写权限。

picture.image

picture.image

picture.image

最后,把 token 复制下来。

picture.image

n8n工作流

这个工作流用的是社区大神贡献的节点。

地址如下:https://n8n.io/workflows/1534-back-up-your-n8n-workflows-to-github/?\_gl=1*1543un7*\_gcl\_au*MTcxNDU2OTcwMC4xNzUxMTczNzgz*\_ga*MTYyNzMxOTYyOS4xNzUxMTkyMDk0*\_ga\_0SC4FF2FH9*czE3NTExOTY2MzYkbzIkZzAkdDE3NTExOTY2MzYkajYwJGwwJGgw

但是,这里有一些节点不适合国内的宝宝使用,我针对国内的情况进行了改造。需要的宝宝可以后台留言 n8n工作流自动备份,分享给您。

picture.image

这个工作流有两个大的部分:

1-使用公共 API,通过 n8n 节点导出所有工作流数据。

2-遍历数据,检查 Github 中是否存在一个使用工作流名称的文件。一旦检查完毕,如果该文件存在,它将更新 Github 上的文件;如果不存在,则创建一个新文件;如果相同,则忽略该文件。

我们先看第一部分,主工作流(Main workflow loop)

  • 触发器(手动或定时)
  • n8n 节点(getAll: workflow):获取所有需要备份的 workflow 列表
  • Loop Over Items:循环处理每一个 workflow
  • Execute Workflow:调用子工作流(subworkflow),对每个 workflow 进行备份

picture.image

n8n 凭证创建

配置 n8n 节点,获取所有的工作流,需要先配置 APIKey。

创建 n8n api key。进入到 Setting 页面,选择n8n API。填入标签,n8n-backup。

picture.image

拷贝和记录 api key 值。

picture.image

确认配置,还剩最后一步。添加 BaseURL,官方给的 url 地址是:https://

.app.n8n.cloud/api/v1。

如果我们的 n8n 是通过 docker 安装到本地的。需要把地址改成:http://localhost:5678/api/v1。

picture.image

ok,调整完成后,看到上方的绿色Connection tested successfully 则代表配置成功!

picture.image

完成后,点击测试,可以看到右侧只有三条工作流。

picture.image

第二部分,判断工作流情况

这个部分是一个子工作流,可以看到,当前的子工作流中,有GitHub 标识。我们需要配置GitHub 信息。

  • 负责单个 workflow 的备份逻辑,包括:
  • 检查 GitHub 上是否已有备份
  • 判断内容是否有变化
  • 新建/更新/跳过文件

picture.image

填写Sub-workflow的 ID,这个很简单,在 sub-workflow 的页面 url 上,最后一串就是 ID。

picture.image

回到主工作流,

picture.image

点开配置,创建凭证这里,需要依次填入 User 账号(GitHub 账号)和 AccessToken。其中,AccessToken 就在我们前半部分介绍过了。

picture.image

看到绿色的连接成功提醒,代表配置成功。

picture.image

接下来,还需要配置 GitHub 信息,包含:

repo_owner - Github 所有者

repo_name - Github 仓库名称

repo_path - Github 仓库内的路径

picture.image

配置起来很简单,需要依次填入:

  • repo_owner:GitHub 用户名 或 组织名

例如:ncandyaoe

  • repo_name:GitHub 仓库名

例如:n8n-backup(在 GitHub 上创建的仓库的名字)

  • repo_path:你想在仓库里保存文件的路径

例如:backups/(表示存到仓库的 backups 文件夹下;如果放根目录就写 . 或留空)

picture.image

但是运行的时候遭遇报错

picture.image

仔细看一下报错信息:

  
Error code404  
Full message  
{ "message": "Not Found", "documentation\_url": "https://docs.github.com/rest", "status": "404" }

咨询了一下 AI,原因是因为我的GitHub 仓库还未完成初始化。仓库没有任何 commit(完全空仓库),GitHub API 不能直接创建文件。

需要先在 GitHub 网页端手动创建一个 README.md 或任意文件,完成一次 commit。

picture.image

简单一些,写一个 readme.md文档就好了。

picture.image

再试一下:

picture.image

到GitHub 再看一下,好的搞定了。

picture.image

测试一下修改是否能正常同步,我对其中两个工作流的细节做了调整,重新同步后发现,update 的时间变成了 now,这代表工作流变动也是能正常同步的。

picture.image

ok,今天的分享到这里,感兴趣的小伙伴们可以后台留言,分享 n8n 工作流给您。

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论