Eu tenho um servidor de e-mail do Kerio Connect que salva todos os seus e-mails em uma estrutura de pastas de spool de correio relativamente padrão como arquivos .eml brutos. Fui encarregado de realizar uma pesquisa de palavras-chave contra algumas das caixas de correio do usuário por palavras-chave e endereços de e-mail. Eu então preciso copiar os arquivos encontrados para outra pasta.
A estrutura das pastas será algo como:
mail
example.com
user1
INBOX
Sent Items
etc
user2
INBOX
etc
Surge a dificuldade de os e-mails, como arquivos .eml, serem nomeados em cada pasta com um número de série - portanto, se eu encontrar um e-mail na caixa de entrada de user1 chamado 00000123.eml e outro e-mail em seus Itens Enviados com o mesmo nome tem uma das palavras-chave nela, não quero que uma seja copiada por cima da outra.
Também preciso executar algumas das pesquisas de palavras-chave com insensibilidade a maiúsculas e minúsculas para que eu possa pesquisar por "palavra-chave" e fazer com que ela corresponda à palavra-chave e à palavra-chave e ao KEYWORD.
Acho que o comando a seguir fará o que eu quero, mas não tenho 100% de certeza e estou executando mais de ~ 100 GB de arquivos eml, portanto, quero ter certeza de que está tudo correto antes de sair para executar.
grep -i -r -l -e "[email protected]|[email protected]|keyword1|anotherkeyword|evenmore" /usr/local/kerio/mailserver/store/mail/example.com/user1/ | xargs -I{} rsync -Rv {} /Volumes/Data/Email\ Discovery/201706/user1/
Por minha conta, isso fará uma pesquisa sem distinção entre maiúsculas e minúsculas (-i) recursivamente (-r) imprimirá apenas nomes de arquivos (-l) e usará a regex (-e) e passará os resultados para rsync, que os copiará recursivamente para uma pasta de destino e (espero) manter a mesma estrutura de pastas.
Existe uma maneira mais eficiente de fazer isso?