Configuração de Cron Job para Exportação de Backup do Mastodon
🔍 WiseChecker

Configuração de Cron Job para Exportação de Backup do Mastodon

Como administrador de um servidor Mastodon, você precisa de uma estratégia de backup confiável para proteger dados de usuários, arquivos de mídia e configurações. Exportações manuais consomem tempo e estão sujeitas a erros humanos, especialmente ao gerenciar uma instância em crescimento. Este artigo explica como configurar um cron job automatizado que executa uma exportação do Mastodon em um agendamento, criando backups regulares sem intervenção manual. Você aprenderá os comandos específicos, scripts e etapas de agendamento necessários para automatizar o processo de exportação em um servidor Linux.

Principais Conclusões: Backup Automatizado do Mastodon via Cron

  • tootctl media remove –days=30: Remove mídia em cache com mais de 30 dias para reduzir o uso de disco antes da exportação.
  • pg_dump mastodon_production: Exporta o banco de dados PostgreSQL para um arquivo SQL compactado para recuperação completa dos dados.
  • crontab -e com 0 3 : Agenda o script de backup para ser executado diariamente às 3:00 AM, horário local do servidor.

ADVERTISEMENT

O que o Cron Job de Exportação do Mastodon Faz e Por Que Você Precisa Dele

O cron job de exportação do Mastodon automatiza o processo de backup dos dados da sua instância, incluindo o banco de dados PostgreSQL, arquivos de mídia enviados pelos usuários armazenados no sistema de arquivos e arquivos de configuração como .env.production. Sem um backup automatizado, você corre o risco de perder todas as contas de usuários, postagens, seguidores, mídias e configurações do servidor se houver falha de hardware, corrupção de dados ou um incidente de segurança. Um cron job executa um script shell em intervalos definidos, geralmente diariamente, para criar arquivos compactados dos dados críticos e, opcionalmente, enviá-los para um local de armazenamento remoto, como um bucket S3 ou outro servidor.

Os componentes principais copiados por esse processo são:

  • Dump do banco de dados PostgreSQL: Contém todas as contas de usuários, postagens, relacionamentos e metadados.
  • Diretório de arquivos de mídia: Contém imagens, vídeos e emojis personalizados enviados pelos usuários, armazenados em /home/mastodon/live/public/system.
  • Arquivos de configuração: O arquivo .env.production e quaisquer arquivos personalizados do Nginx ou systemd.

Antes de configurar o cron job, você deve ter acesso SSH ao seu servidor Mastodon, privilégios sudo ou root e a capacidade de editar arquivos no diretório home do usuário mastodon. Você também precisa conhecer as credenciais do banco de dados, que estão armazenadas no arquivo .env.production. O script de backup será executado como o usuário mastodon para garantir permissões adequadas aos arquivos.

Passos para Criar e Agendar o Cron Job de Backup

Siga estes passos para criar um script de backup e agendá-lo com cron. Todos os comandos são executados no servidor Mastodon via SSH, salvo indicação contrária.

  1. Crie o diretório de backup
    Faça login no servidor Mastodon. Mude para o usuário mastodon com sudo -i -u mastodon. Crie um diretório para armazenar os scripts de backup e a saída: mkdir -p ~/backups. Esse diretório conterá tanto o script shell quanto os arquivos de backup compactados.
  2. Escreva o script shell de backup
    Crie um novo arquivo chamado ~/backups/mastodon-backup.sh usando um editor de texto como nano: nano ~/backups/mastodon-backup.sh. Cole o conteúdo do script a seguir, ajustando os caminhos e o nome do banco de dados conforme necessário para sua instância:
    #!/bin/bash
    
    # Variáveis
    BACKUP_DIR="/home/mastodon/backups"
    TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
    DB_NAME="mastodon_production"
    DB_USER="mastodon"
    MEDIA_DIR="/home/mastodon/live/public/system"
    
    # Cria o diretório de backup se não existir
    mkdir -p "$BACKUP_DIR"
    
    # Despeja o banco de dados PostgreSQL
    pg_dump -U "$DB_USER" -d "$DB_NAME" --format=custom --file="$BACKUP_DIR/mastodon_db_$TIMESTAMP.dump"
    
    # Compacta os arquivos de mídia
    tar -czf "$BACKUP_DIR/mastodon_media_$TIMESTAMP.tar.gz" -C "$MEDIA_DIR" .
    
    # Compacta os arquivos de configuração
    tar -czf "$BACKUP_DIR/mastodon_config_$TIMESTAMP.tar.gz" -C /home/mastodon/live .env.production
    
    # Remove backups mais antigos que 7 dias
    find "$BACKUP_DIR" -name "mastodon_" -type f -mtime +7 -delete
    
    echo "Backup concluído em $TIMESTAMP"
    

    Salve o arquivo e saia do nano.

  3. Torne o script executável
    Execute chmod +x ~/backups/mastodon-backup.sh para permitir que o script seja executado.
  4. Teste o script manualmente
    Execute bash ~/backups/mastodon-backup.sh para verificar se ele é executado sem erros. Verifique o diretório ~/backups para os arquivos gerados: ls -la ~/backups. Você deve ver três arquivos com timestamps em seus nomes.
  5. Abra a tabela cron para o usuário mastodon
    Ainda como usuário mastodon, execute crontab -e. Se solicitado, selecione seu editor de texto preferido (nano é recomendado).
  6. Adicione a entrada do cron job
    Adicione a seguinte linha ao final do arquivo crontab para executar o backup diariamente às 3:00 AM:
    0 3 /bin/bash /home/mastodon/backups/mastodon-backup.sh
    Salve o arquivo e saia. O daemon cron carregará automaticamente a nova programação.
  7. Verifique se o cron job está ativo
    Execute crontab -l para listar os cron jobs ativos. Você deve ver a linha que acabou de adicionar. Verifique os logs do sistema com grep CRON /var/log/syslog após o horário agendado para confirmar que o job foi executado com sucesso.

ADVERTISEMENT

Erros Comuns e Limitações ao Automatizar Backups

Script de backup falha com permissão negada ao banco de dados PostgreSQL

O usuário mastodon deve ter permissões adequadas no PostgreSQL para executar pg_dump. Por padrão, o usuário mastodon é criado como superusuário PostgreSQL durante a instalação. Se você alterou o usuário do banco de dados, atualize a variável DB_USER no script e garanta que esse usuário tenha acesso de leitura ao banco de dados. Teste o comando pg_dump -U mastodon -d mastodon_production --format=custom --file=/tmp/test.dump manualmente para verificar.

Cron job é executado, mas nenhum arquivo de backup aparece

Isso geralmente significa que o script encontrou um erro que não foi capturado na saída. Modifique a linha do cron job para redirecionar a saída para um arquivo de log para depuração. Altere a linha para:
0 3 /bin/bash /home/mastodon/backups/mastodon-backup.sh >> /home/mastodon/backups/cron.log 2>&1
Aguarde a próxima execução ou acione manualmente, depois verifique cron.log para mensagens de erro.

Backups consomem muito espaço em disco

O script inclui um comando de limpeza que exclui backups mais antigos que 7 dias. Ajuste o valor +7 para um número diferente de dias se precisar de retenção mais longa. Por exemplo, +14 mantém backups por duas semanas. Monitore o uso do disco com df -h para garantir que o diretório de backup não encha o sistema de arquivos.

Backup do diretório de mídia é muito grande

Os arquivos de mídia do Mastodon podem consumir gigabytes de espaço em disco. Antes de executar o script de backup, considere executar tootctl media remove --days=30 para excluir mídia em cache com mais de 30 dias. Este comando é seguro para executar antes do backup porque remove apenas mídia que foi armazenada em cache de instâncias remotas, não conteúdo enviado pelo usuário. Adicione este comando ao script de backup antes da linha de compactação de mídia para reduzir o tamanho do backup.

Exportação Manual vs Backup Automatizado por Cron

Item Exportação Manual Backup Automatizado por Cron
Frequência Sob demanda, muitas vezes esquecida Agendada, executa sem falhas
Consistência Sujeita a erro humano e etapas ignoradas Processo idêntico toda vez
Escopo dos dados Pode perder arquivos de configuração ou mídia Banco de dados completo, mídia e configuração
Velocidade de recuperação Requer localizar e restaurar arquivos manualmente Arquivos de backup organizados e prontos para restaurar
Gerenciamento de espaço em disco Sem limpeza automática Exclusão automática de backups antigos

Com o cron job sendo executado diariamente, sua instância Mastodon agora tem uma rotina de backup consistente e automatizada. Você pode estender o script para enviar os arquivos de backup para um servidor remoto ou armazenamento em nuvem usando rsync ou aws s3 cp. Para maior segurança, criptografe o dump do banco de dados com gpg antes de transferi-lo para fora do servidor. Teste um processo de restauração completo pelo menos uma vez, importando um backup em uma instância de teste para confirmar que os dados são recuperáveis.

ADVERTISEMENT