Basándome en el script de inicio (en init.d) de la página de la Wiki de Minecraft, he escrito mi propio script para realizar el backup.
En mi script hay que indicarle el directorio donde quieres que meta los backups (ha de existir), y después mediante cron se ejecuta periódicamente el script con la opción ‘backup’, guardando los dato del directorio world
de hoy, ayer, y antesdeayer.
Dado que minecraft realiza muchísimas escrituras en disco, he puesto el script para que se ejecute en un punto de montaje tmpfs (memoria RAM swappeable). Para ello, hay que añadir a /etc/fstab la siguiente línea:
tmpfs /home/minecraft tmpfs rw,size=200m,uid=minecraft,gid=minecraft 0 0
De este modo, en /home/minecraft-ondisk se guarda la copia en disco físico. Al iniciar el servidor (/etc/init.d/minecraft start), se copia el contenido de disco a /home/minecraft (memoria RAM). Al apagar el servidor (/etc/init.d/minecraft stop), se copia de ram a disco. También se realizan copias a disco cuando se hacen copias de seguridad.
Atención: el comando ‘backup’ sólo realiza copias de seguridad cuando el servidor está ejecutándose y hay usuarios jugando (también realiza copia si después de la última, aunque no haya usuarios jugando, para hacer copia de las modificaciones – flag ‘users_playing’). Cuando no hay usuarios jugando sólo se realizan copias de seguridad con ‘weekly_backup’.
Crea el usuario minecraft sin que sea posible hacer login con él:
1 |
adduser minecraft --disabled-login |
Descarga el script de backup (.sh), y colócalo en init.d/ así como configura el rcN.d/ que te corresponda. En mi caso, rc2.d/ como S99minecraft; en rc0.d y rc6.d como K01minecraft.
En /etc/cron.d crea el fichero minecraft con la siguiente información:
1 2 |
12,42 * * * * minecraft /etc/init.d/minecraft backup 6 6 * * 3 minecraft /etc/init.d/minecraft weekly_backup |
De este modo, se harán copias de seguridad cada 30 minutos (durante como mucho 72 horas, pero asegurando sólo 48 horas de backup), y una copia semanal cada miércoles.
Una mejora es copiar el fichero logrotate para Minecraft en /etc/logrotate.d, de modo que semanalmente rota el fichero server.log (guarda 4 semanas de copia).