【n8n教程】:n8n CLI 命令行工具
在日常的工作流自动化中,我们经常需要快速地启动工作流、导出备份或批量管理配置。虽然 n8n 编辑器提供了友好的图形界面,但 n8n 命令行界面(CLI) 提供了更强大、更灵活的管理方式。无论你是想通过命令行执行工作流,还是需要进行批量导出导入操作,n8n CLI 都能帮助你事半功倍。
本教程将带你快速上手 n8n CLI,从基础概念到实战操作,让你成为命令行工作流管理的高手。
第一部分:什么是 n8n CLI?
CLI 的核心价值
n8n CLI 是一个强大的命令行工具,允许你:
- 启动和管理工作流 无需打开 Web 界面
- 批量导出导入 工作流和凭据,方便备份和迁移
- 自动化管理 用户、许可证和系统设置
- 集成到脚本 中,实现更复杂的自动化流程

支持的环境
n8n CLI 可在以下两种环境中使用:
1. npm 安装
如果你通过 npm 安装了 n8n,命令可直接使用:
bash
n8n <command>
2. Docker 容器
如果你使用 Docker 运行 n8n,需要这样执行命令:
bash
docker exec -u node -it <n8n-container-name> n8n <command>
例如:
bash
docker exec -u node -it n8n_container n8n workflow:list
第二部分:关键 CLI 命令详解
1. 工作流执行命令
启动单个工作流
执行保存的工作流,通过其 ID 指定:
bash
n8n execute --id <WORKFLOW_ID>
实例:
bash
n8n execute --id NGgtX67xWcwx2a3I
应用场景:
- 定时执行脚本中的工作流
- 集成到 CI/CD 流程中
- 在服务器启动时自动运行特定工作流
2. 工作流状态管理
激活工作流
bash
n8n update:workflow --id=<ID> --active=true
停用工作流
bash
n8n update:workflow --id=<ID> --active=false
批量管理工作流状态
停用所有工作流:
bash
n8n update:workflow --all --active=false
激活所有工作流:
bash
n8n update:workflow --all --active=true
重要提示:这些命令需要重启 n8n 才能生效!
应用场景:
- 系统维护期间停用所有工作流
- 批量部署新版本工作流前的准备
- 故障排查时快速关闭自动化流程
3. 工作流导出命令
导出所有工作流
bash
n8n export:workflow --all
输出到标准输出(终端显示)。
导出特定工作流
bash
n8n export:workflow --id=<ID> --output=workflow.json
导出所有工作流到特定目录
bash
n8n export:workflow --all --output=backups/latest/file.json
使用备份标志导出(推荐用于备份)
bash
n8n export:workflow --backup --output=backups/latest/
此命令会:
- 自动启用
--all --pretty --separate - 每个工作流保存为单独文件
- 易于版本控制和对比
命令标志说明:
| 标志 | 说明 |
|---|---|
--all |
导出所有工作流 |
--id |
导出指定 ID 的工作流 |
--output |
指定输出文件或目录 |
--pretty |
格式化输出,更易阅读 |
--separate |
每个工作流单独保存为文件 |
--backup |
备份模式,相当于 --all --pretty --separate |
4. 凭据导出命令
导出所有凭据
bash
n8n export:credentials --all
导出特定凭据
bash
n8n export:credentials --id=<ID> --output=creds.json
导出为纯文本格式(用于迁移)
bash
n8n export:credentials --all --decrypted --output=creds_plain.json
⚠️ 安全警告:导出的纯文本文件包含敏感信息,请妥善保管!
5. 工作流和凭据导入命令
导入单个工作流
bash
n8n import:workflow --input=workflow.json
导入多个工作流(从目录)
bash
n8n import:workflow --separate --input=backups/latest/
导入凭据
bash
n8n import:credentials --input=credentials.json
导入到特定项目
bash
n8n import:workflow --input=workflow.json --projectId=<PROJECT_ID>
重要说明:
- 导出时 n8n 会记录工作流和凭据的 ID
- 如果导入同 ID 的对象,会覆盖现有的
- 为了避免覆盖,可在导入前删除或修改 JSON 中的 ID
6. 实体导出(完整数据库备份)
导出整个数据库的所有实体(包括工作流历史):
bash
n8n export:entities --outputDir=./db_backup
包含执行历史的大型备份:
bash
n8n export:entities --outputDir=./db_backup --includeExecutionHistoryDataTables
然后可以导入到其他数据库:
bash
n8n import:entities --inputDir=./db_backup
应用场景:
- SQLite 迁移到 PostgreSQL
- 完整的系统备份和恢复
- 多个 n8n 实例之间的数据迁移
7. 用户管理命令
重置用户管理系统
bash
n8n user-management:reset
此命令会移除所有用户账户,恢复到初始状态。
应用场景:
- 忘记管理员密码且未设置邮件恢复
- 清除所有用户进行全新部署
禁用用户的 MFA(多因素认证)
bash
n8n mfa:disable --email=user@example.com
用户可重新登录后重新设置 MFA。
重置 LDAP 设置
bash
n8n ldap:reset
8. 许可证管理命令
清除许可证
bash
n8n license:clear
重置 n8n 为默认功能。
查看许可证信息
bash
n8n license:info
显示当前许可证状态和信息。
9. 安全审计命令
检测 n8n 实例中的常见安全问题:
bash
n8n audit
此命令会扫描并报告:
- 不安全的配置
- 潜在的漏洞
- 建议的安全改进
第三部分:实战案例 - 工作流备份和恢复系统
现在让我们通过一个完整的案例,学习如何使用 CLI 命令构建一个自动备份系统。
场景
你需要:
- 定期备份所有工作流
- 备份所有凭据
- 能够快速恢复

实现步骤
第一步:创建备份脚本
创建一个 backup.sh 文件:
bash
#!/bin/bash
# 设置备份目录
BACKUP_DIR="./n8n_backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_PATH="$BACKUP_DIR/backup_$TIMESTAMP"
# 创建备份目录
mkdir -p "$BACKUP_PATH"
echo "开始备份 n8n 工作流和凭据..."
# 导出所有工作流
echo "导出工作流..."
n8n export:workflow --backup --output="$BACKUP_PATH/workflows/"
# 导出所有凭据
echo "导出凭据..."
n8n export:credentials --all --output="$BACKUP_PATH/credentials.json"
# 创建备份清单
echo "备份时间: $TIMESTAMP" > "$BACKUP_PATH/backup_info.txt"
echo "工作流数: $(ls -1 $BACKUP_PATH/workflows/ | wc -l)" >> "$BACKUP_PATH/backup_info.txt"
echo "备份完成!位置: $BACKUP_PATH"
第二步:设置定时备份
使用 crontab 设置每天凌晨 2 点执行备份:
bash
crontab -e
添加以下行:
bash
0 2 * * * /path/to/backup.sh
第三步:恢复备份
当需要恢复时,执行:
bash
# 恢复工作流
n8n import:workflow --separate --input="./n8n_backups/backup_20240101_020000/workflows/"
# 恢复凭据
n8n import:credentials --input="./n8n_backups/backup_20240101_020000/credentials.json"
第四部分:可执行工作流示例
下面是一个完整的可执行工作流示例,结合 CLI 命令的实际应用。这个工作流会:
- 按计划运行
- 执行一个主要的数据处理工作流
- 导出执行结果
- 发送通知
完整工作流 JSON
json
{
"name": "CLI Workflow Manager",
"nodes": [
{
"parameters": {
"interval": 1,
"unit": "days"
},
"id": "Schedule Trigger",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"command": "n8n execute --id YOUR_WORKFLOW_ID"
},
"id": "Execute Command",
"name": "Execute Command",
"type": "n8n-nodes-base.executeCommand",
"typeVersion": 1,
"position": [450, 300]
},
{
"parameters": {
"method": "POST",
"url": "https://your-webhook-url.com",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "status",
"value": "workflow_executed"
},
{
"name": "timestamp",
"value": "={{ $now }}"
}
]
}
},
"id": "HTTP Request",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [650, 300]
}
],
"connections": {
"Schedule Trigger": {
"main": [
[
{
"node": "Execute Command",
"type": "main",
"index": 0
}
]
]
},
"Execute Command": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {}
}
如何使用此工作流
-
在 n8n 中导入:
- 打开 n8n 编辑器
- 点击右上角
···→Import from File - 选择包含上述 JSON 的文件
-
配置参数:
- 将
YOUR_WORKFLOW_ID替换为实际的工作流 ID - 将
https://your-webhook-url.com替换为你的 Webhook 地址
- 将
-
激活工作流:
- 点击右上角的
Active按钮 - 工作流现在会每天自动执行
- 点击右上角的
-
监控执行:
- 在工作流列表中查看执行记录
- 通过 Webhook 接收执行通知
第五部分:常见问题解答
Q1:导出的凭据包含敏感信息吗?
A :默认情况下,凭据被加密。只有添加 --decrypted 标志时才会以纯文本形式导出。纯文本导出应谨慎处理!
Q2:如果 ID 重复,导入会发生什么?
A :如果导入的工作流或凭据 ID 与现有的相同,新导入的会覆盖现有的。为避免这种情况,可在 JSON 文件中删除或修改 ID。
Q3:导出和导入支持不同的数据库类型吗?
A :是的!使用 export:entities 和 import:entities 命令,你可以在 SQLite、PostgreSQL 等不同数据库类型之间迁移。
Q4:如何在 Docker 中执行 CLI 命令?
A :使用 docker exec -u node -it <container-name> n8n <command>。例如:
bash
docker exec -u node -it my_n8n n8n export:workflow --all
Q5:能否通过 CLI 创建新的工作流?
A:CLI 主要用于管理和执行现有工作流。新工作流建议通过 Web 编辑器或工作流模板导入。
第六部分:最佳实践建议
1. 定期备份
bash
# 每周执行一次完整备份
0 0 * * 0 /path/to/backup.sh
2. 版本控制
使用 --separate 标志将每个工作流保存为单独文件,便于 Git 版本控制:
bash
n8n export:workflow --backup --output=workflows_backup/
git add workflows_backup/
git commit -m "Backup workflows"
3. 安全管理
- 定期运行安全审计
- 不要在公共环境中暴露凭据
- 使用加密的备份存储
4. 监控和告警
使用 CLI 在脚本中集成监控:
bash
if ! n8n execute --id WORKFLOW_ID; then
# 发送告警
curl -X POST https://alerts.example.com/error
fi
总结
通过 n8n CLI,你可以:
✅ 快速执行 工作流而无需打开编辑器
✅ 批量管理 工作流和凭据
✅ 自动化备份 关键数据
✅ 与脚本集成 实现更复杂的自动化
✅ 简化运维 工作流