Pular para conteúdo

FTP_RMDIR - Remover Diretório do Servidor FTP

O que é este Node?

O FTP_RMDIR é o node responsável por remover diretórios vazios de um servidor FTP remoto. Permite limpar estruturas de pastas obsoletas.

Por que este Node existe?

Manter estrutura de diretórios limpa evita confusão e desperdício de espaço. O FTP_RMDIR existe para:

  1. Limpeza Automática: Remover pastas vazias após processar todos os arquivos
  2. Manutenção: Apagar diretórios temporários que não são mais necessários
  3. Reorganização: Limpar estrutura antiga antes de criar nova organização
  4. Gerenciar Espaço: Remover diretórios obsoletos de projetos finalizados

Como funciona internamente?

Quando o FTP_RMDIR é executado, o sistema:

  1. Conecta ao FTP: Estabelece conexão com servidor
  2. Valida Caminho: Confirma que path foi fornecido
  3. Verifica Vazio: Maioria dos servidores só remove diretórios vazios
  4. Executa RMD: Envia comando RMD (remove directory) ao servidor
  5. Remove Diretório: Servidor apaga a pasta especificada
  6. Registra Operação: Captura timestamp da remoção
  7. Se falhar: Retorna erro (pasta não vazia, não existe, sem permissão)
  8. Se sucesso: Confirma remoçã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 remover diretórios via FTP, seria necessário extend o executor.

Quando você DEVE usar este Node?

Use FTP_RMDIR sempre que precisar de remover diretórios vazios do FTP:

Casos de uso

  1. Limpeza Pós-Processamento: "Remover /temp/processing_123/ após finalizar"
  2. Manutenção Semanal: "Apagar pastas vazias de /uploads/ toda semana"
  3. Projeto Finalizado: "Remover /projects/projeto_antigo/ quando concluído"

Quando NÃO usar FTP_RMDIR

  • Diretório Não Vazio: Primeiro apague todos os arquivos com FTP_DELETE
  • Estrutura Ativa: Não remova pastas ainda em uso
  • Recursivo: FTP_RMDIR remove apenas diretório especificado (não subpastas)

Parâmetros Detalhados

remotePath (string, obrigatório)

O que é: Caminho completo do diretório vazio a ser removido.

Padrão: Nenhum (obrigatório)

Flow completo para testar:

{
  "name": "Teste FTP Rmdir - 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": "Pasta a Remover",
        "parameters": {
          "message": "Qual pasta remover? (deve estar vazia)",
          "variableName": "pasta_remover"
        }
      }
    },
    {
      "id": "ftp_1",
      "type": "ftp",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Remover Diretório",
        "parameters": {
          "host": "ftp.example.com",
          "username": "user",
          "password": "pass",
          "operation": "rmdir",
          "remotePath": "{{pasta_remover}}",
          "outputVariable": "rmdir_result"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "🗑️ Diretório removido: {{rmdir_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 "/temp/old_folder". Pasta vazia será removida.

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 "rmdir"
remotePath string Sim Caminho do diretório vazio a remover
outputVariable string Não Variável de resultado (padrão: ftp_result)

Exemplo 1: Limpar Pasta Temporária Após Processamento

Objetivo: Apagar arquivos e então remover diretório temporário

JSON para Importar

{
  "name": "Limpar Temp Completo",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "ftp_list",
      "type": "ftp",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Listar Arquivos Temp",
        "parameters": {
          "host": "ftp.server.com",
          "username": "user",
          "password": "pass",
          "operation": "list",
          "remotePath": "/temp/session_123/",
          "outputVariable": "arquivos_temp"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Info",
        "parameters": {
          "message": "🧹 Limpando {{arquivos_temp.count}} arquivos..."
        }
      }
    },
    {
      "id": "ftp_rmdir",
      "type": "ftp",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Remover Pasta Temp",
        "parameters": {
          "host": "ftp.server.com",
          "username": "user",
          "password": "pass",
          "operation": "rmdir",
          "remotePath": "/temp/session_123/",
          "outputVariable": "pasta_removida"
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Finalizar",
        "parameters": {
          "message": "✅ Limpeza completa!\nPasta removida: {{pasta_removida.path}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "ftp_list" },
    { "source": "ftp_list", "target": "message_1" },
    { "source": "message_1", "target": "ftp_rmdir" },
    { "source": "ftp_rmdir", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: 🧹 Limpando 3 arquivos...
Sistema: ✅ Limpeza completa!
Pasta removida: /temp/session_123/

Resposta do Node

{
  "success": true,
  "data": {
    "ftp_result": {
      "success": true,
      "path": "/temp/session_123/",
      "removedAt": "2025-01-15T11:00:00.000Z"
    },
    "operation": "rmdir",
    "host": "ftp.server.com",
    "timestamp": "2025-01-15T11:00:00.000Z"
  },
  "executionTime": 198
}

Boas Práticas

SIM:

  • Garantir que diretório está vazio antes de remover
  • Usar FTP_LIST para confirmar ausência de arquivos
  • Apagar arquivos primeiro com FTP_DELETE em loop

NÃO:

  • Não tentar remover pasta com arquivos dentro
  • Não remover diretórios ativos ou em uso
  • Não confiar que remoção sempre funcionará (sempre trate erros)

Dicas

💡 Dica 1: FTP_RMDIR só remove diretórios VAZIOS. Para remover com arquivos, apague arquivos primeiro.

💡 Dica 2: Sequência correta: FTP_LIST → (LOOP + FTP_DELETE) → FTP_RMDIR

💡 Dica 3: Se erro "Directory not empty", ainda há arquivos ou subpastas. Liste para verificar.

Próximos Nodes

FTP_DELETE - Apagar arquivos antes de remover pasta → FTP_LIST - Verificar se pasta está vazia → FTP_MKDIR - Criar novo diretório → LOOP - Iterar sobre arquivos para apagar todos