Acionamento mais rápido de varredura anti-vírus em tempo real

2

Tenho o problema de, em cada backup do meu sistema de e-mail (Arquivo baseado em arquivo no Windows Server 2012 R2), ocorrerem erros durante o backup de arquivos de anexos de e-mail infectados por vírus. Isso é causado pela varredura em tempo real (no meu caso do TrendMicro OfficeScan) que não reconheceu os vírus no tempo de recebimento e os remove no tempo de acesso ao arquivo - o que causa erros de backup.

Minha pergunta é: Qual é a maneira mais rápida e eficiente de iniciar uma verificação antivírus em todos os arquivos em um diretório conhecido D:\mail\ com uma extensão de arquivo conhecida .$01 ?

Em minha pesquisa, não encontrei nenhuma maneira de um antivírus baseado em CLI manual para o TrendMicro Office Scan.

Minha ideia é simplesmente ler todos os arquivos para ativar a verificação em tempo real.

    
por Ludwig Behm 24.02.2016 / 12:06

1 resposta

1

Ok, eu entendi bem rápido. Mas não tenho certeza, se é tudo o que podemos conseguir.

Apenas listar os arquivos não acionou o av digitalização, por isso precisamos de uma olhada no interior. Mais específico: temos que abrir o arquivo.

Isso é o que eu criei: um script do PowerShell começando antes do backup, em execução no diretório de arquivos especificado.

$d=Get-ChildItem -Filter '*.$01' -Recurse;
% {try{$_.OpenRead().Close()}catch{}} -InputObject $d -ErrorAction SilentlyContinue

No meu exemplo de demonstração com 44 diretórios, 29.000 arquivos, 1488 deles *.$01 -files a inspecionar e 2 deles com vírus, esse script precisou apenas de 345ms. O que é muito legal para mim.

Outras reflexões:

  • parece que as alças de arquivo estão fechadas na saída do powershell resultando em milhares de alças de arquivo
    • como fechar a alça imediatamente após cada arquivo abrir / fechar?
  • removendo os limites de velocidade do powershell
  • otimizar o ForEach - o % já apresenta um desempenho melhor que ForEach-Object
  • movendo o código para c #
  • multi-threaded
por 25.02.2016 / 15:55