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:
- Crie uma cópia de segurança da pasta atual de SaveGames (caso precise reverter).
- Limpe o diretório de SaveGames ativo.
- Copie os arquivos do backup mais recente para a pasta ativa.
- 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.