Pular para conteúdo

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:

  1. Organizar por Data: Criar pastas /uploads/2025/01/15/ automaticamente
  2. Separar por Cliente: Criar pasta /clients/cliente_novo/ quando novo cliente é cadastrado
  3. Estruturar Workflows: Criar /incoming/, /processing/, /done/ para gerenciar pipeline
  4. Preparar Upload: Criar diretório antes de fazer upload de arquivos

Como funciona internamente?

Quando o FTP_MKDIR é executado, o sistema:

  1. Conecta ao FTP: Estabelece conexão com servidor
  2. Valida Caminho: Confirma que path foi fornecido
  3. Executa MKD: Envia comando MKD (make directory) ao servidor
  4. Cria Diretório: Servidor cria nova pasta no caminho especificado
  5. Registra Operação: Captura timestamp da criação
  6. Se falhar: Retorna erro (pasta já existe, sem permissão, path inválido)
  7. 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

  1. Estrutura Automática: "Criar pasta /backups/2025/01/ antes de fazer upload diário"
  2. Novo Cliente: "Criar diretório /clients/CLIENTE_123/ quando cliente é cadastrado"
  3. 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