0% acharam este documento útil (0 voto)
2 visualizações2 páginas

Backup Automático para Servidor Minecraft

O documento é um script em Python para automatizar backups de um servidor Minecraft. Ele cria backups em formato zip do diretório do mundo do Minecraft em intervalos definidos, além de limpar backups antigos com base em uma política de retenção. O script também inclui configuração de logging para monitorar o processo de backup.

Enviado por

djedrzejczyk7
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações2 páginas

Backup Automático para Servidor Minecraft

O documento é um script em Python para automatizar backups de um servidor Minecraft. Ele cria backups em formato zip do diretório do mundo do Minecraft em intervalos definidos, além de limpar backups antigos com base em uma política de retenção. O script também inclui configuração de logging para monitorar o processo de backup.

Enviado por

djedrzejczyk7
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd

import os

import shutil
import datetime
import time
import sys
import logging

# --- CONFIGURAÇÕES ---


# Altere os caminhos conforme sua instalação
MINECRAFT_SERVER_WORLD_DIR = "/path/to/your/minecraft/server/world"
BACKUP_DESTINATION_DIR = "/path/to/your/backup/folder"
# Intervalo entre backups (segundos)
BACKUP_INTERVAL_SECONDS = 3600 # 1 hora
# Quantos dias manter backups antigos
DAYS_TO_KEEP_BACKUPS = 7
# ----------------------

# Configuração de logging em arquivo e console


[Link](
level=[Link],
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[
[Link]("minecraft_backup.log"),
[Link]([Link])
]
)

def create_backup(source_dir: str, backup_dir: str) -> bool:


"""
Cria um backup zip do diretório `source_dir` em `backup_dir`, retornando True
se bem-sucedido.
"""
if not [Link](source_dir):
[Link](f"Diretório de origem não encontrado: {source_dir}")
return False

[Link](backup_dir, exist_ok=True)
timestamp = [Link]().strftime("%Y%m%d_%H%M%S")
# Inclui nome da pasta de origem no nome do backup
world_name = [Link]([Link](source_dir))
backup_name = f"{world_name}_backup_{timestamp}"
backup_path = [Link](backup_dir, backup_name)

try:
shutil.make_archive(backup_path, 'zip', source_dir)
[Link](f"Backup criado: {backup_path}.zip")
return True
except Exception as e:
[Link](f"Erro ao criar backup: {e}")
return False

def clean_old_backups(backup_dir: str, days_to_keep: int) -> None:


"""
Remove arquivos .zip de backup com mais de `days_to_keep` dias em `backup_dir`.
"""
if not [Link](backup_dir):
[Link](f"Diretório de backup não encontrado: {backup_dir}")
return

cutoff = [Link]() - [Link](days=days_to_keep)


for fname in [Link](backup_dir):
fpath = [Link](backup_dir, fname)
if [Link](fpath) and [Link]("") and
[Link](".zip"):
try:
created = [Link]([Link](fpath))
if created < cutoff:
[Link](fpath)
[Link](f"Removido backup antigo: {fname}")
except Exception as e:
[Link](f"Erro ao remover {fname}: {e}")

def main():
# Validação das configurações iniciais
if not [Link](MINECRAFT_SERVER_WORLD_DIR):
[Link](f"Diretório do mundo inexistente:
{MINECRAFT_SERVER_WORLD_DIR}")
[Link](1)

if not [Link](BACKUP_DESTINATION_DIR):
[Link](f"Criando pasta de destino: {BACKUP_DESTINATION_DIR}")
try:
[Link](BACKUP_DESTINATION_DIR, exist_ok=True)
except Exception as e:
[Link](f"Falha ao criar destino: {e}")
[Link](1)

[Link]("--- Serviço de Backup Minecraft Iniciado ---")


[Link](f"Mundo: {MINECRAFT_SERVER_WORLD_DIR}")
[Link](f"Destino: {BACKUP_DESTINATION_DIR}")
[Link](f"Intervalo: {BACKUP_INTERVAL_SECONDS}s")
[Link](f"Retenção: {DAYS_TO_KEEP_BACKUPS} dias")

try:
while True:
[Link]("Iniciando ciclo de backup...")
if create_backup(MINECRAFT_SERVER_WORLD_DIR, BACKUP_DESTINATION_DIR):
clean_old_backups(BACKUP_DESTINATION_DIR, DAYS_TO_KEEP_BACKUPS)
else:
[Link]("Backup falhou neste ciclo.")

[Link](f"Próximo em {BACKUP_INTERVAL_SECONDS} segundos.")


[Link](BACKUP_INTERVAL_SECONDS)
except KeyboardInterrupt:
[Link]("Serviço de backup interrompido pelo usuário.")
except Exception as e:
[Link](f"Erro inesperado: {e}")
finally:
[Link]("Encerrando serviço de backup.")

if __name__ == "__main__":
main()

Você também pode gostar