FTP_MKDIR - Criar Diretório no Servidor FTP
O que é este Node?
O FTP_MKDIR é o node responsável por criar novos diretórios em um servidor FTP remoto. Permite organizar arquivos em estruturas de pastas hierárquicas.
Por que este Node existe?
Organizar arquivos em pastas é essencial para manutenção e eficiência. O FTP_MKDIR existe para:
- Organizar por Data: Criar pastas
/uploads/2025/01/15/automaticamente - Separar por Cliente: Criar pasta
/clients/cliente_novo/quando novo cliente é cadastrado - Estruturar Workflows: Criar
/incoming/,/processing/,/done/para gerenciar pipeline - Preparar Upload: Criar diretório antes de fazer upload de arquivos
Como funciona internamente?
Quando o FTP_MKDIR é executado, o sistema:
- Conecta ao FTP: Estabelece conexão com servidor
- Valida Caminho: Confirma que path foi fornecido
- Executa MKD: Envia comando MKD (make directory) ao servidor
- Cria Diretório: Servidor cria nova pasta no caminho especificado
- Registra Operação: Captura timestamp da criação
- Se falhar: Retorna erro (pasta já existe, sem permissão, path inválido)
- Se sucesso: Confirma criação com caminho e timestamp
Nota: Este node não existe no código atual do FTP executor. A implementação base suporta apenas: upload, download, list, delete, rename. Para criar diretórios via FTP, seria necessário extend o executor.
Quando você DEVE usar este Node?
Use FTP_MKDIR sempre que precisar de criar diretórios no servidor FTP:
Casos de uso
- Estrutura Automática: "Criar pasta /backups/2025/01/ antes de fazer upload diário"
- Novo Cliente: "Criar diretório /clients/CLIENTE_123/ quando cliente é cadastrado"
- Organizar Uploads: "Criar /uploads/imagens/ se não existir"
Quando NÃO usar FTP_MKDIR
- Pasta Já Existe: Verificar existência antes (comando pode falhar)
- Criação Recursiva: Se servidor não suporta, criar pasta por pasta (parent primeiro)
- SFTP: Use SFTP_MKDIR para servidores SFTP
Parâmetros Detalhados
remotePath (string, obrigatório)
O que é: Caminho completo do novo diretório a ser criado.
Padrão: Nenhum (obrigatório)
Flow completo para testar:
{
"name": "Teste FTP Mkdir - RemotePath",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Nome da Pasta",
"parameters": {
"message": "Nome do diretório a criar:",
"variableName": "nova_pasta"
}
}
},
{
"id": "ftp_1",
"type": "ftp",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Criar Diretório",
"parameters": {
"host": "ftp.example.com",
"username": "user",
"password": "pass",
"operation": "mkdir",
"remotePath": "/uploads/{{nova_pasta}}",
"outputVariable": "mkdir_result"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "✅ Diretório criado: {{mkdir_result.path}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "ftp_1" },
{ "source": "ftp_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite "2025-01-15". Pasta /uploads/2025-01-15/ será criada.
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| host | string | Sim | Endereço do servidor FTP |
| port | number | Não | Porta TCP (padrão: 21) |
| username | string | Sim | Nome de usuário |
| password | string | Sim | Senha |
| secure | boolean | Não | FTPS - SSL/TLS (padrão: false) |
| operation | string | Sim | Deve ser "mkdir" |
| remotePath | string | Sim | Caminho do diretório a criar |
| outputVariable | string | Não | Variável de resultado (padrão: ftp_result) |
Exemplo 1: Criar Estrutura de Pastas por Data
Objetivo: Criar automaticamente pasta do dia antes de fazer upload
JSON para Importar
{
"name": "Criar Pasta Diária",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Data de Hoje",
"parameters": {
"variableName": "hoje",
"value": "2025-01-15"
}
}
},
{
"id": "ftp_mkdir",
"type": "ftp",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Criar Pasta do Dia",
"parameters": {
"host": "ftp.backup.com",
"username": "backup",
"password": "pass123",
"operation": "mkdir",
"remotePath": "/backups/{{hoje}}",
"outputVariable": "pasta_criada"
}
}
},
{
"id": "ftp_upload",
"type": "ftp",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Upload Backup",
"parameters": {
"host": "ftp.backup.com",
"username": "backup",
"password": "pass123",
"operation": "upload",
"localFilePath": "/tmp/backup.sql",
"remoteFilePath": "/backups/{{hoje}}/database.sql"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Sucesso",
"parameters": {
"message": "✅ Backup salvo em: /backups/{{hoje}}/"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "ftp_mkdir" },
{ "source": "ftp_mkdir", "target": "ftp_upload" },
{ "source": "ftp_upload", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: ✅ Backup salvo em: /backups/2025-01-15/
Resposta do Node
{
"success": true,
"data": {
"ftp_result": {
"success": true,
"path": "/backups/2025-01-15",
"createdAt": "2025-01-15T10:00:00.000Z"
},
"operation": "mkdir",
"host": "ftp.backup.com",
"timestamp": "2025-01-15T10:00:00.000Z"
},
"executionTime": 234
}
Boas Práticas
✅ SIM:
- Criar diretório antes de fazer upload
- Usar estrutura hierárquica: /ano/mes/dia/
- Nomear pastas sem espaços (use underscore ou hífen)
❌ NÃO:
- Não criar pasta que já existe (verificar antes)
- Não usar caracteres especiais em nomes de pastas
Dicas
💡 Dica 1: Maioria dos servidores FTP não cria pastas recursivamente. Crie parent primeiro: /2025/ → /2025/01/ → /2025/01/15/
💡 Dica 2: Se erro "Directory already exists", use CONDITION para verificar antes de criar.
💡 Dica 3: Combine com FTP_UPLOAD na sequência para organizar arquivos em pastas estruturadas.
Próximos Nodes
→ FTP_UPLOAD - Fazer upload após criar diretório → FTP_RMDIR - Remover diretório vazio → FTP_LIST - Listar conteúdo do diretório criado