Para responder à sua pergunta, primeiro você precisa entender os diferentes trade-offs de reload e copytruncate:
- reload : o arquivo de log antigo é renomeado e o processo de gravação nesse log é notificado (via sinal Unix) para recriar seu arquivo de log. Este é o método de overhead mais rápido / menor: as operações rename / move são muito rápidas e têm um tempo de execução constante. Além disso, é uma operação quase atômica: isso significa que (quase) nenhuma entrada de log será perdida durante a movimentação / recarga. Por outro lado, você precisa de um processo capaz de recarregar e reabrir seu arquivo de log. O Rsyslog é um processo desse tipo, portanto, a configuração padrão do logrotate usa o método de recarregamento. Usar este modo com o rsyslog é strongmente recomendado pelo rsyslog upstream.
- copytruncate : o arquivo de log antigo é copiado em um arquivo e, em seguida, é truncado para "excluir" linhas de log antigas. Enquanto a operação de truncagem é muito rápida, a cópia pode ser bastante longa (dependendo de quão grande é o seu logfile). Além disso, algumas entradas de log podem ser perdidas durante o tempo entre a operação de cópia (lembre-se, pode ser lento) e o truncamento. Por esses motivos, o copytruncate não é usado por padrão para serviços capazes de recarregar e recriar seus arquivos de log. Por outro lado, se um servidor não tiver capacidade de recarregar / recriar arquivos de log, o copytruncate é sua aposta mais segura. Em outras palavras, não requer nenhum suporte de nível de serviço. O projeto upstream do rsyslog recomenda strongmente contra o uso deste modo.