Backup Automático de Mapas no Satisfactory Dedicated Server VPS

9 min de leitura Infraestrutura para Jogos
Backup Automático de Mapas no Satisfactory Dedicated Server VPS

Automação de Backups para Satisfactory Dedicated Server em VPS Linux

A administração de um servidor de jogo VPS exige atenção rigorosa à integridade dos dados. No caso do Satisfactory, a perda de progresso pode ser devastadora para a comunidade, pois os mapas são gerados proceduralmente e o tempo investido na construção da fábrica é único. Embora a plataforma Steam ofereça backups automáticos nativos, eles podem falhar devido a erros de sincronização, corrupção de arquivos ou indisponibilidade temporária do serviço. Para garantir a máxima disponibilidade e segurança, sysadmins devem implementar uma camada adicional de proteção local, automatizada e versionada.

Este tutorial detalha como configurar um sistema robusto de backup mapas linux para o Satisfactory Dedicated Server. Utilizaremos ferramentas padrão da indústria Linux, como systemd timers, rsync e scripts em Bash, criando uma solução leve que não compromete a performance do seu satisfactory dedicated server vps.

1. Preparação do Ambiente no VPS

Antes de criar os scripts de automação, é essencial preparar o ambiente de armazenamento e garantir as permissões adequadas. A maioria dos administradores roda o Satisfactory Dedicated Server através do SteamCMD. O primeiro passo é identificar exatamente onde os dados do jogo estão sendo armazenados.

Por padrão, ao instalar um servidor dedicado via SteamCMD, a estrutura de diretórios segue este padrão:

/home/steam/satisfactory-server/SatisfactoryDedicated/Binaries/Win64/
/home/steam/satisfactory-server/SatisfactoryServer/Saved/SaveGames/

O caminho crítico para o backup é a pasta Saved/SaveGames, onde os arquivos de mapa (.sav) residem. Para este tutorial, assumiremos que o servidor está sendo executado pelo usuário steam e que você tem acesso root ou sudo ao seu servidor jogo vps.

Criando o diretório de backup seguro

Nunca realize backups no mesmo diretório dos arquivos ativos. Crie uma estrutura isolada para evitar corrupção em caso de falha de disco durante a escrita.

sudo mkdir -p /var/backups/satisfactory/{daily,weekly}

Agora, conceda permissões adequadas ao script que criaremos. Embora o backup possa ser executado como root para garantir leitura dos arquivos do jogo, é uma boa prática de administração servidor games isolar as permissões.

sudo chown -R root:steam /var/backups/satisfactory
sudo chmod 750 /var/backups/satisfactory

2. Desenvolvimento do Script de Backup

A ferramenta padrão para sincronização incremental e eficiente em ambientes Linux é o rsync. Ele permite copiar apenas as diferenças, economizando largura de banda e tempo de CPU, crucial para manter a latência baixa no seu vps linux jogos.

Criando o script principal

Crie um arquivo chamado satisfactory_backup.sh no diretório /usr/local/bin/. Este caminho garante que o script esteja na variável de ambiente PATH do sistema.

sudo nano /usr/local/bin/satisfactory_backup.sh

Insira o seguinte conteúdo no script. Este código realiza uma cópia segura, verifica a integridade e rotaciona os backups antigos.

#!/bin/bash

# Configurações do Backup
BACKUP_BASE_DIR="/var/backups/satisfactory"
SOURCE_DIR="/home/steam/satisfactory-server/SatisfactoryServer/Saved/SaveGames"
DATE=$(date +%Y%m%d-%H%M%S)
DAILY_DIR="${BACKUP_BASE_DIR}/daily/${DATE}"

# Garante que o diretório de destino existe
mkdir -p "${DAILY_DIR}"

# Executa o rsync com flags para eficiência e segurança
# -a: archive mode (preserva permissões, timestamps, etc.)
# -v: verbose (log detalhado)
# --delete: remove arquivos na origem que não existem no destino (opcional, use com cautela)
# --exclude: ignora logs temporários ou arquivos de cache se houver
rsync -av --delete "${SOURCE_DIR}/" "${DAILY_DIR}/" >> /var/log/satisfactory_backup.log 2>&1

# Verifica o status do rsync
if [ $? -eq 0 ]; then
    echo "$(date): Backup diário realizado com sucesso em ${DAILY_DIR}" >> /var/log/satisfactory_backup.log
    
    # Rotação: Mantém apenas os últimos 7 backups diários
    # Remove backups mais antigos que 7 dias no diretório daily
    find "${BACKUP_BASE_DIR}/daily" -type d -mtime +7 -exec rm -rf {} \;
    
    # Cria um link simbólico para o backup mais recente (útil para restauração rápida)
    ln -sfn "${DAILY_DIR}" "${BACKUP_BASE_DIR}/latest"
else
    echo "$(date): ERRO no backup diário. Verifique /var/log/satisfactory_backup.log" >> /var/log/satisfactory_backup.log
fi

Torne o script executável:

sudo chmod +x /usr/local/bin/satisfactory_backup.sh

3. Automatização com Systemd Timers

A utilização de cron é comum, mas os systemd timers oferecem logs mais robustos, dependências gerenciadas e melhor integração com o sistema operacional moderno. Esta abordagem é recomendada para qualquer profissional de linux sysadmin.

Criando a Unit do Serviço

Crie um arquivo de serviço que define a tarefa em si:

sudo nano /etc/systemd/system/satisfactory-backup.service

Adicione o seguinte conteúdo:

[Unit]
Description=Satisfactory Dedicated Server Map Backup
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/satisfactory_backup.sh
User=root
Group=steam

# Segurança: Restringe acesso ao sistema de arquivos se necessário
PrivateTmp=true

Criando a Unit do Timer

O timer define quando o serviço será acionado. Vamos configurá-lo para rodar diariamente à 1:00 da manhã, horário em que a atividade no servidor costuma ser menor.

sudo nano /etc/systemd/system/satisfactory-backup.timer

Insira o conteúdo:

[Unit]
Description=Run Satisfactory Backup Daily at 1:00 AM

[Timer]
OnCalendar=*-*-* 01:00:00
# Randomiza o início em até 5 minutos para evitar picos de I/O simultâneos se houver outros jobs
RandomizedDelaySec=300
# Garante que, se o servidor estiver desligado no horário agendado, o backup seja feito na próxima inicialização
Persistent=true

[Install]
WantedBy=timers.target

Ativando e Verificando

Agora, recarregue o daemon do systemd, ative o timer e inicie a verificação:

sudo systemctl daemon-reload
sudo systemctl enable --now satisfactory-backup.timer
sudo systemctl status satisfactory-backup.timer

Para testar imediatamente sem esperar pelo agendamento, você pode forçar a execução do serviço:

sudo systemctl start satisfactory-backup.service

Verifique se houve erros no log do sistema ou no log específico criado pelo script:

sudo journalctl -u satisfactory-backup.service --no-pager -n 20
cat /var/log/satisfactory_backup.log

4. Estratégia de Retenção e Armazenamento Externo

Ter backups locais é fundamental para recuperação rápida (ex: reverter uma construção acidental), mas não protege contra falhas catastróficas do disco ou ransomware. Para um game server management profissional, a regra 3-2-1 deve ser aplicada: 3 cópias dos dados, em 2 mídias diferentes, com 1 fora do local.

Para VPS de baixo custo, uma solução prática é enviar os backups mais antigos para um armazenamento S3 compatível (como MinIO, Wasabi ou AWS S3) usando a ferramenta rclone.

Integrando Rclone no Script

Se você deseja estender o script anterior para incluir upload para nuvem, instale o rclone e configure-o conforme a documentação oficial do provedor escolhido. Em seguida, adicione esta linha ao final do seu script satisfactory_backup.sh:

# Envio para nuvem (apenas se backup diário for maior que 1 dia)
if [ "$(find ${DAILY_DIR} -mtime -1)" ]; then
    rclone sync "${DAILY_DIR}" remote:satisfactory-backups/daily/ --progress
fi

Este comando garante que apenas backups novos sejam transferidos, mantendo a sincronia com o diretório local.

5. Teste de Restauração e Validação

A automação sem testes é uma promessa vazia. Um sysadmin experiente sabe que um backup só existe se puder ser restaurado. Periodicamente (recomendamos mensalmente), execute o processo manual de restauração em um ambiente isolado ou em uma pasta temporária para verificar a integridade dos arquivos .sav.

O processo manual de teste seria:

  1. Crie uma cópia de segurança da pasta atual de SaveGames (caso precise reverter).
  2. Limpe o diretório de SaveGames ativo.
  3. Copie os arquivos do backup mais recente para a pasta ativa.
  4. Inicie o servidor e verifique se o mapa carrega corretamente e se as construções estão intactas.

Isso valida não apenas a cópia dos dados, mas também a compatibilidade das versões do jogo. Updates frequentes do Satisfactory podem alterar formatos de save; garantir que o backup funcione após um patch é vital.

6. Monitoramento e Alertas

Para manter a proatividade, configure alertas caso o script falhe. Se você utiliza ferramentas como Prometheus/Grafana ou Zabbix, pode monitorar o log de erros. Caso contrário, um simples script de verificação via email pode ser adicionado ao final do processo.

Exemplo básico de alerta por email se o backup falhar:

if [ $? -ne 0 ]; then
    echo "Falha no backup do Satisfactory em $(hostname)" | mail -s "ALERTA Backup Satisfactory" [email protected]
fi

Isso garante que você, como administrador, seja notificado imediatamente para intervir antes que a janela de recuperação se feche.

Conclusão

A implementação deste fluxo de trabalho transforma a gestão do seu satisfactory dedicated server vps de uma tarefa reativa para uma operação proativa. Ao combinar rsync para eficiência, systemd timers para robustez e estratégias de retenção claras, você protege o investimento da sua comunidade de jogadores.

Lembre-se: a melhor solução de backup é aquela que está configurada, testada e esquecida, funcionando silenciosamente nos bastidores do seu vps linux jogos. Mantenha seus scripts atualizados conforme as mudanças na estrutura de diretórios da Valve/Coffee Stain Studios e continue monitorando logs para garantir a saúde contínua do seu servidor.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000