Pular para conteúdo

SFTP_DELETE - Apagar Arquivo no Servidor SFTP

O que é este Node?

O SFTP_DELETE é o node responsável por remover arquivos de servidor SFTP via SSH. Equivalente ao FTP_DELETE, mas com operação auditada via logs SSH.

Por que este Node existe?

Gerenciar ciclo de vida de arquivos sensíveis requer segurança e auditoria. O SFTP_DELETE existe para:

  1. Limpeza Segura: Remover arquivos processados via comando SSH auditado
  2. Rastreabilidade: Logs SSH registram quem apagou o quê e quando
  3. Compliance: Implementar políticas de retenção (ex: apagar após 90 dias)
  4. Gerenciar Espaço: Limpar arquivos antigos de servidores remotos

Como funciona internamente?

Quando o SFTP_DELETE é executado, o sistema:

  1. Conecta via SSH: Túnel criptografado
  2. Valida Caminho: Confirma path do arquivo
  3. Executa Remoção: Comando SFTP delete via SSH
  4. Registra em Log SSH: Servidor SSH loga operação
  5. Confirma: Retorna sucesso ou erro
  6. Se falhar: Erro (sem permissão, arquivo não existe)
  7. Se sucesso: Arquivo removido e operação auditada

Código interno (sftp-executor.service.ts - não implementado ainda):

private async deleteFile(sftp: SFTP, remotePath: string): Promise<any> {
  await sftp.delete(remotePath);

  return {
    success: true,
    deletedPath: remotePath,
    deletedAt: new Date().toISOString(),
    protocol: 'sftp',
    audited: true
  };
}

Quando você DEVE usar este Node?

Use SFTP_DELETE sempre que precisar de remover arquivos com auditoria:

Casos de uso

  1. Pós-Processamento Bancário: "Apagar arquivo de retorno após importar pagamentos"
  2. Limpeza LGPD: "Remover dados pessoais após período de retenção legal"
  3. Gerenciar Fila: "Apagar XML após processar nota fiscal"

Quando NÃO usar SFTP_DELETE

  • Arquivos Importantes: Sempre faça backup antes de apagar
  • Sem Certeza: Se não confirmou processamento, não apague
  • Auditoria: Se precisa manter histórico, use SFTP_RENAME para arquivar

Parâmetros

Campo Tipo Obrigatório Descrição
host string Sim Servidor SFTP
port number Não Porta SSH (padrão: 22)
username string Sim Usuário SSH
password string Condicional Senha
privateKey string Condicional Chave SSH
operation string Sim Deve ser "delete"
remoteFilePathDelete string Sim Arquivo a remover
outputVariable string Não Variável resultado

Exemplo 1: Download e Delete Seguro

Objetivo: Baixar arquivo bancário e então removê-lo do servidor

JSON para Importar

{
  "name": "SFTP Download e Delete",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "sftp_download",
      "type": "sftp",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Baixar Retorno",
        "parameters": {
          "host": "sftp.banco.com.br",
          "username": "empresa",
          "password": "pass",
          "operation": "download",
          "remoteFilePathDownload": "/retornos/ret_2025-01-15.txt",
          "localFilePathDownload": "/tmp/retorno.txt"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Processando",
        "parameters": {
          "message": "⚙️ Processando retorno bancário..."
        }
      }
    },
    {
      "id": "sftp_delete",
      "type": "sftp",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Apagar do Servidor",
        "parameters": {
          "host": "sftp.banco.com.br",
          "username": "empresa",
          "password": "pass",
          "operation": "delete",
          "remoteFilePathDelete": "/retornos/ret_2025-01-15.txt"
        }
      }
    },
    {
      "id": "message_2",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Finalizar",
        "parameters": {
          "message": "✅ Retorno processado e arquivo removido do servidor!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "sftp_download" },
    { "source": "sftp_download", "target": "message_1" },
    { "source": "message_1", "target": "sftp_delete" },
    { "source": "sftp_delete", "target": "message_2" },
    { "source": "message_2", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: ⚙️ Processando retorno bancário...
Sistema: ✅ Retorno processado e arquivo removido do servidor!

Resposta do Node

{
  "success": true,
  "data": {
    "sftp_result": {
      "success": true,
      "deletedPath": "/retornos/ret_2025-01-15.txt",
      "deletedAt": "2025-01-15T10:45:00.000Z",
      "protocol": "sftp",
      "audited": true
    }
  }
}

Boas Práticas

SIM:

  • Sempre baixe antes de apagar (download + delete)
  • Verifique sucesso do download antes de deletar
  • Mantenha log local dos arquivos apagados

NÃO:

  • Não apague sem backup
  • Não delete sem confirmar processamento
  • Não ignore erros de delete

Dicas

💡 Dica 1: SFTP_DELETE é IRREVERSÍVEL. Arquivo apagado não pode ser recuperado.

💡 Dica 2: Sequência segura: SFTP_DOWNLOAD → validar → SFTP_DELETE.

💡 Dica 3: Logs SSH do servidor registram quem apagou e quando (auditoria).

Próximos Nodes

SFTP_DOWNLOAD - Baixar antes de apagar → SFTP_LIST - Listar para apagar em lote → CONDITION - Verificar sucesso antes de delete