Falando como autor do rsyslog, copytruncate é realmente uma escolha muito, muito, muito ruim. É inerentemente atrevido e usá-lo é quase uma garantia de que você perderá dados de log. Quanto mais frequentemente o arquivo for gravado, mais você perderá. E isso não é apenas parte da última linha, mas pode ser várias centenas, dependendo do momento exato e do estado do sistema no momento em que a rotação acontece.
Quando o arquivo é movido e um novo inode (arquivo) é criado, o rsyslog mantém o controle do arquivo anterior e conclui o processamento. Portanto, você não tem nenhuma perda neste caso. Garantido (exceto se você desmontar o sistema de arquivos ...).
Sobre "reopenOnTruncate": Eu pessoalmente vi o reopenOnTruncate sendo atrevido em outros aspectos também, especialmente no NFS e similares. Algum tempo atrás, removi totalmente essa funcionalidade, mas mais tarde fui convencido a incorporar funcionalidades semelhantes. Ele permanecerá "experimental" provavelmente para sempre, pois eu realmente sei que as pessoas enfrentam problemas em sistemas muito carregados. "copytruncate" simplesmente não é um modo decente para trabalhar com arquivos de log.
Atualmente, trabalho na refatoração de imfile (ETA 8.34 ou 8.35). A versão refatorada provavelmente poderá impedir o reenvio acidental devido à corrida da API, mas também não pode se proteger contra a perda de dados - porque isso é conceitualmente impossível.