Como configurar a limpeza automática de gravações no BigBlueButton
O armazenamento de gravações pode crescer rapidamente em um servidor BigBlueButton com alta demanda, mas "limpeza" pode significar duas coisas muito diferentes: remover os dados brutos da fonte após a publicação de uma gravação ou excluir a própria gravação publicada após um período de retenção. Escolher a opção errada pode desperdiçar espaço em disco ou remover conteúdo antes do esperado pelos usuários.
Este guia se concentra no BigBlueButton 3.0, que a documentação oficial lista como a versão de produção atual em outubro de 2026. A documentação do BigBlueButton 4.0 está disponível, mas ainda está marcada como em desenvolvimento. Para sistemas de produção, confirme a versão instalada bbb-conf --checkantes de copiar as configurações de retenção da documentação de outra versão. Consulte a documentação oficial de instalação do BigBlueButton .
Escolha a política de limpeza antes de alterar qualquer coisa.
Não existe um período de retenção único que se adapte a todas as situações. Uma universidade pode precisar de acesso à reprodução durante um semestre inteiro, enquanto um servidor de treinamento interno pode precisar de gravações apenas por 30 dias. A distinção útil é entre os dados brutos da gravação e os arquivos de reprodução publicados .
Opção de limpeza
O que isso economiza
Principal compensação
Melhor ajuste
Excluir dados brutos após a publicação.
Matérias-primas e materiais de processamento
Você perde a capacidade de reconstruir uma gravação a partir dos dados brutos originais depois que ela for removida.
Servidores que desejam manter a reprodução publicada, mas controlar o crescimento do disco.
Apagar gravações completas após N dias
Dados de gravação publicados e associados
A gravação não está mais disponível para os usuários.
Políticas de retenção claras, como 30, 60 ou 90 dias.
Exclusão controlada pelo aplicativo
Depende da integração.
Mais flexibilidade nas políticas, mas também maior lógica de aplicação e complexidade operacional.
Sistemas multi-inquilinos ou fluxos de trabalho LMS com regras de retenção por curso
O guia oficial de personalização do BigBlueButton afirma que os dados brutos são retidos para que os administradores possam reconstruir uma gravação caso o processamento falhe, adicionar outro formato de gravação ou recuperar dados de uma exclusão acidental. Esse benefício tem um custo de armazenamento. A mesma documentação afirma que o BigBlueButton remove os dados brutos das gravações publicadas após 14 dias por padrão. Consulte a seção " Personalização do Servidor" na documentação oficial do BigBlueButton .
Antes de escolher um período de retenção, verifique o uso atual do disco e as gravações recentes. O ponto de partida importante é avaliar a rapidez com que o diretório /var/bigbluebutton está crescendo e quais gravações os usuários ainda precisam.
Opção 1: manter as gravações publicadas, mas remover os dados brutos.
Se o seu principal problema for o consumo de espaço em disco, mas os usuários ainda precisarem dos links de reprodução, comece com a configuração integrada de retenção de dados brutos. O script de manutenção diária do BigBlueButton está localizado em /etc/cron.daily/bigbluebutton. O padrão documentado é:
published_days=14
O script também chama a função de limpeza de gravações brutas para gravações publicadas. Aumentar esse valor published_daysproporciona uma janela de recuperação maior para reconstruções; diminuí-lo reduz o uso de armazenamento mais rapidamente. Um valor como 30 dias pode ser razoável quando os administradores precisam rotineiramente de tempo para descobrir defeitos nas gravações, enquanto um período mais curto é mais apropriado quando o armazenamento é limitado e a saída publicada é verificada rotineiramente logo após as reuniões.
Não confunda isso com uma política de retenção completa. Alterar essa política published_daysnão significa que a gravação publicada em si desaparecerá após esse número de dias. Ela controla por quanto tempo os dados brutos permanecem disponíveis após a publicação.
O arquivo de manutenção diária integrado contém a configuração published_days usada para dados brutos de gravações publicadas.
Opção 2: excluir gravações completas com mais de uma idade predefinida.
Se o seu requisito for "as gravações devem desaparecer após 30 dias", a BigBlueButton documenta um script de limpeza diária separado. O exemplo oficial cria um arquivo /etc/cron.daily/bbb-recording-cleanup, verifica a idade dos arquivos de status publicados e dos dados brutos de gravação e remove bbb-record --deleteas gravações mais antigas que a idade máxima configurada.
Antes de habilitar a exclusão, inspecione o conjunto de candidatos. Para uma política de 30 dias, este comando somente leitura ajuda você a ver quais arquivos de status de apresentação publicados são mais antigos que o limite:
Este não é um comando de teste do BigBlueButton; é simplesmente uma verificação segura do sistema de arquivos. Use-o para detectar erros de política antes que uma tarefa automatizada comece a excluir dados.
Analise as gravações recentes e suas datas antes de implementar uma política de retenção total.
Crie o script de limpeza.
Criar /etc/cron.daily/bbb-recording-cleanup. A implementação a seguir segue a abordagem de caminhos e exclusão descrita no guia de personalização oficial do BigBlueButton, mantendo o valor de retenção e o arquivo de log fáceis de encontrar:
#!/bin/bash
set -u
MAXAGE=30
LOGFILE=/var/log/bigbluebutton/bbb-recording-cleanup.log
NOW=$(date +%s)
shopt -s nullglob
for donefile in /var/bigbluebutton/recording/status/published/*-presentation.done; do
MTIME=$(stat -c %Y "$donefile")
AGE=$(( (NOW - MTIME) / 86400 ))
if [ "$AGE" -gt "$MAXAGE" ]; then
MEETING_ID=$(basename "$donefile")
MEETING_ID=${MEETING_ID%-presentation.done}
echo "$(date --rfc-3339=seconds) deleting $MEETING_ID age=${AGE}d" >> "$LOGFILE"
bbb-record --delete "$MEETING_ID" >> "$LOGFILE" 2>&1
fi
done
for eventsfile in /var/bigbluebutton/recording/raw/*/events.xml; do
MTIME=$(stat -c %Y "$eventsfile")
AGE=$(( (NOW - MTIME) / 86400 ))
if [ "$AGE" -gt "$MAXAGE" ]; then
MEETING_ID=${eventsfile%/events.xml}
MEETING_ID=${MEETING_ID##*/}
echo "$(date --rfc-3339=seconds) deleting raw $MEETING_ID age=${AGE}d" >> "$LOGFILE"
bbb-record --delete "$MEETING_ID" >> "$LOGFILE" 2>&1
fi
done
Defina MAXAGEo período de retenção de acordo com sua política, e não com um número baixo arbitrário. Por exemplo, 30 dias resultam em um espaço de armazenamento menor, mas em um período de recuperação e acesso mais curto do que 90 dias. Se as gravações fizerem parte de um requisito formal de retenção, confirme a política com o proprietário dos dados antes de habilitar a exclusão.
Um script de limpeza pode identificar gravações antigas publicadas por idade e passar seus IDs de reunião internos para bbb-record --delete.A lógica de limpeza deve operar com base no status de gravação e nos caminhos dos dados brutos do BigBlueButton, em vez de excluir diretórios aleatórios por nome.
Torne o script diário executável.
sudo chmod +x /etc/cron.daily/bbb-recording-cleanup
sudo ls -l /etc/cron.daily/bbb-recording-cleanup
O nome do arquivo não possui extensão intencionalmente. O mecanismo de tarefas diárias do Ubuntu geralmente usa ` run-parts./`, cujas regras de nomenclatura podem fazer com que alguns nomes com pontos sejam ignorados. Manter o nome documentado bbb-recording-cleanupevita essa fonte desnecessária de confusão.
A vantagem /etc/cron.dailyé a simplicidade em detrimento da precisão no momento exato. Se você precisa de uma limpeza em um horário específico de baixo tráfego, uma entrada cron de root ou um timer do systemd podem fornecer um agendamento mais preciso, mas isso se torna uma personalização do seu sistema operacional, em vez do padrão documentado pelo BigBlueButton. Monitore e teste separadamente.
Execute a limpeza manualmente uma vez antes de confiar na automação.
Após analisar os arquivos candidatos, execute o script uma vez a partir do terminal:
O BigBlueButton descreve bbb-record --delete <internal-meeting-id>o comando que remove os dados de uma reunião e sua gravação. A documentação de gravação também alerta que esse comando pode apagar uma reunião em andamento. Portanto, uma política de retenção sensata utiliza um limite de idade suficientemente grande para que uma reunião ativa nunca se enquadre nesse critério, e exclui apenas os IDs encontrados em gravações antigas. Consulte a documentação oficial de Gravação e Reprodução .
Execute a tarefa de limpeza manualmente uma vez e inspecione o registro gerado antes de confiar na execução diária automatizada.Um registro de limpeza útil documenta quais IDs de reuniões internas foram excluídas e quando a tarefa foi concluída.
Verifique se a limpeza está funcionando conforme o esperado.
A verificação deve abranger tanto as gravações visíveis ao usuário quanto o uso do disco. Comece com os comandos de gravação do próprio BigBlueButton:
bbb-record --list-recentExibe as dez gravações mais recentes. bbb-record --checkVerifica a configuração e as permissões de gravação no BigBlueButton 2.5 e versões posteriores. Nenhum dos comandos substitui o monitoramento de armazenamento, portanto, meça também a árvore de gravações:
df -h /var/bigbluebutton
sudo du -sh /var/bigbluebutton/recording /var/bigbluebutton/published
Não espere que o uso do disco diminua exatamente pelo tamanho de reprodução mostrado aos usuários. Mídia bruta, arquivos em processamento, arquivos de apresentação publicados, registros e dados temporários são armazenados separadamente, e o tempo de limpeza pode variar entre as categorias.
Após a limpeza, utilize os comandos de listagem do bbb-record para confirmar se as gravações esperadas ainda estão disponíveis.
Como escolher um período de retenção
Um valor de retenção útil depende de três restrições: expectativas do usuário, necessidades de recuperação e armazenamento disponível. Um período de retenção curto reduz a pressão sobre o armazenamento, mas dá aos administradores menos tempo para descobrir defeitos de processamento ou reconstruir gravações. Um período de retenção longo aumenta a flexibilidade de recuperação, mas exige mais espaço em disco e pode entrar em conflito com os requisitos de minimização de dados.
Mantenha a reprodução, minimize o armazenamento bruto: ajuste published_dayse deixe as gravações publicadas intactas.
Imponha um tempo limite de reprodução rígido: use um script de limpeza diária separado com um procedimento claramente documentado MAXAGE.
Precisa de regras por curso ou por cliente: implemente as decisões de retenção na camada LMS ou de aplicação e utilize a API do BigBlueButton de forma criteriosa, em vez de impor uma idade única para todas as gravações em todo o servidor.
Necessidade de flexibilidade na reconstrução: manter os dados brutos por mais tempo do que o mínimo exigido e garantir que a capacidade de backup seja compatível com essa escolha.
Erros comuns a evitar
O primeiro erro comum é assumir que o published_daysrecurso exclui gravações publicadas. Ele controla apenas os dados brutos associados às gravações publicadas. O segundo erro é usar rm -rfos diretórios de gravação do BigBlueButton como mecanismo principal de retenção. Isso ignora o conhecimento dos IDs das reuniões pela ferramenta de gravação e pode resultar em estados inconsistentes.
Outro erro comum é definir um período de retenção muito longo antes de medir o crescimento real. Capture dados por pelo menos alguns dias due df, em seguida, selecione um período que deixe margem suficiente para semanas excepcionalmente movimentadas. Os próprios requisitos de produção do BigBlueButton exigem um armazenamento substancial de gravações, o que nos lembra que a limpeza deve ser planejada como gerenciamento de capacidade, e não como uma reação emergencial quando o sistema de arquivos está quase cheio.
Lista de verificação final
Confirme a versão do BigBlueButton instalada com bbb-conf --check.
Decida se você precisa apenas da limpeza dos dados brutos ou da expiração completa das gravações.
Meça o uso atual do espaço de armazenamento antes de selecionar um período de retenção.
Analise as gravações antigas candidatas antes de habilitar a exclusão.
Crie o script de limpeza diária e torne-o executável.
Execute o programa manualmente uma vez e inspecione o registro.
Verifique novamente bbb-record --list-recento bbb-record --checkuso de disco.
Documente a política de retenção para que os usuários saibam por quanto tempo a reprodução permanecerá disponível.
Para a maioria das instalações do BigBlueButton 3.0 em servidor único, a configuração com menor necessidade de manutenção consiste em deixar que a tarefa diária integrada remova os dados brutos das gravações publicadas após um período de recuperação e, em seguida, adicionar o bbb-recording-cleanupscript diário documentado somente quando também for necessário que as gravações publicadas expirem. Isso separa duas decisões de armazenamento diferentes e torna a compensação explícita, em vez de tratar todos os arquivos de gravação antigos da mesma maneira.