备份与恢复
备份自托管 n8n 实例,以便在数据丢失后恢复、回滚失败的更新,或迁移到新服务器。完整备份所需的内容多于单独使用 CLI 导出命令产生的文件。本页说明完整备份包含哪些内容、CLI 的 --backup 标志会导出什么,以及如何恢复各类备份。
完整备份包含哪些内容
自托管 n8n 实例的完整备份由两部分组成:
.n8n用户文件夹,默认为~/.n8n。其中的config文件保存凭据加密密钥。使用默认 SQLite 数据库时,该文件夹也包含数据库文件。如果二进制数据或执行数据采用filesystem存储模式,也包含这些数据。
可以通过 N8N_USER_FOLDER 环境变量更改文件夹位置:n8n 使用所设路径下的 .n8n 子文件夹。
- 如果使用 PostgreSQL 而非默认 SQLite,还需要备份外部数据库。请使用数据库自身的工具备份。
.n8n文件夹仍属于备份的一部分,因为数据库中的凭据由其中保存的密钥加密。
如果为二进制数据或执行数据配置了 S3、Azure Blob Storage 等外部存储,也请备份这些存储。如果二进制数据或执行数据存储在自定义文件系统路径,请将该位置纳入备份。如果通过 N8N_CUSTOM_EXTENSIONS 环境变量指定目录来加载自定义节点,也请备份这些目录,否则恢复后的实例会缺少工作流引用的节点。
使用默认 SQLite 数据库时,复制 .n8n 文件夹之前请先停止 n8n。在 n8n 写入数据库时复制数据库文件,可能生成不一致的备份。如果无法停止 n8n,请使用能为 SQLite 文件创建一致性快照的工具。
在 Docker 中运行 n8n 时,.n8n 文件夹位于 n8n_data 卷中,挂载到 /home/node/.n8n。Docker 持久化数据的更多信息,请参阅使用 Docker 安装。
恢复凭据需要加密密钥
n8n 将凭据以加密形式保存在数据库中。没有 config 文件中的加密密钥,或自定义的 N8N_ENCRYPTION_KEY,就无法解密恢复后的数据库或加密的凭据导出文件。更多信息请参阅设置自定义加密密钥。
n8n 建议在更新前进行完整备份。更新步骤请参阅更新 n8n。
使用 CLI 备份工作流和凭据
可以使用服务器 CLI,将工作流和凭据导出到 JSON 文件:
n8n export:workflow --backup --output=backups/workflows/
n8n export:credentials --backup --output=backups/credentials/
--backup 标志会设置 --all --pretty --separate,将每个工作流和凭据分别写入独立、便于阅读的 JSON 文件。
请为每条命令使用不同的输出目录。目前,如果输入目录还包含工作流文件,import:credentials --separate 就会失败。这是一个已知问题。
在 Docker 中运行 n8n 时,容器内的 backups/ 目录不会持久化,只有 .n8n 文件夹位于卷中。请绑定挂载主机目录来存放备份,或在重新创建容器前,将导出的文件复制到容器外。
CLI 备份不包含哪些内容
--backup 导出仅包含工作流和凭据,不包含:
- 用户及其角色。导入到全新实例后,n8n 会再次显示所有者设置页面,首个完成设置的人会成为所有者。
- 执行历史和日志。
- 变量。
- 实例设置,包括加密密钥。
因此,CLI 备份足以在实例间迁移工作流,但无法单独用于恢复完整实例。要恢复完整实例,请按完整备份包含哪些内容一节备份 .n8n 文件夹和外部数据库。
恢复
恢复工作流和凭据
导入 CLI 备份中的文件。全新实例应先完成所有者设置:导入命令需要已有用户,导入的凭据也需要所有者。如果实例包含多个用户或项目,请使用 --userId 或 --projectId 指定导入凭据的归属。
n8n import:workflow --separate --input=backups/workflows/
n8n import:credentials --separate --input=backups/credentials/
导出内容包含原工作流和凭据 ID。如果目标实例已存在相同 ID 的条目,它们会被覆盖。导入的工作流默认停用。导入后请在界面中激活,或传入 --activeState=fromJson 恢复各工作流导出时的活动状态,此选项仅适用于队列或多主实例模式。完整标志列表和注意事项请参阅使用命令行。
要恢复凭据,导入实例必须能够解密它们。有两种选择:
- 使用与导出实例相同的加密密钥。将
config文件恢复到.n8n文件夹,或设置相同的N8N_ENCRYPTION_KEY环境变量。 - 使用
--decrypted标志导出,以明文形式写入凭据。
敏感信息
--decrypted 导出包含明文形式的全部凭据数据。请像保护凭据本身一样妥善保存,并在恢复完成后删除。
恢复完整实例
要恢复完整实例:
- 停止 n8n。
- 将
.n8n文件夹恢复到原位置,并恢复通过N8N_CUSTOM_EXTENSIONS配置的所有自定义节点目录。 - 如果使用 PostgreSQL,请从备份恢复数据库。
- 恢复部署配置,包括数据库连接环境变量、使用自定义密钥时的
N8N_ENCRYPTION_KEY,以及外部存储设置。缺少这些配置,恢复后的实例将无法访问数据库或解密数据。 - 启动 n8n。
使用默认 SQLite 数据库时,.n8n 文件夹包含恢复实例所需的全部内容:保存用户、设置和执行数据的 SQLite 数据库文件、加密密钥,以及在文件系统存储模式下的二进制数据和执行数据。使用 PostgreSQL 时,.n8n 文件夹仍保存加密密钥,数据库备份保存其余内容。
相关内容
- 保持 n8n 运行:自托管 n8n 实例的运 行维护指南。
- 使用命令行:完整服务器 CLI 参考,包括所有导出和导入标志。
- 设置自定义加密密钥:如何显式提供
N8N_ENCRYPTION_KEY。 - 选择 n8n 的数据库:SQLite 和 PostgreSQL 配置。
- 更新 n8n:npm 和 Docker 安装的更新步骤。