Ir al contenido

Cómo hacer copias de seguridad de un servidor de Minecraft

Protege tus mundos, configuraciones y plugins con copias automatizadas, rotación y pruebas reales de restauración.
29 de agosto de 2026 por
Cómo hacer copias de seguridad de un servidor de Minecraft
Overclock Host

Una copia de seguridad de Minecraft solo es útil si contiene todos los datos necesarios, se creó en un estado coherente y puede restaurarse. Copiar la carpeta del servidor mientras está funcionando, sin tomar precauciones, puede dejar regiones, inventarios o datos de plugins en estados incompatibles. Esta guía explica cómo evitarlo y automatizar el proceso en un servidor Linux.

Qué debes copiar de verdad

Antes de preparar el sistema de copias, identifica la carpeta desde la que arrancas el servidor. En esta guía usaremos /opt/minecraft. Puedes comprobar su contenido con:

cd /opt/minecraft
ls -lah

En una instalación típica de Minecraft Java Edition encontrarás estas carpetas y archivos:

Elemento ¿Debes copiarlo? Motivo
world/ Sí Contiene el mundo principal, los chunks, las entidades y los datos de los jugadores.
world_nether/ Sí Contiene el Nether cuando el servidor lo guarda como mundo independiente.
world_the_end/ Sí Contiene la dimensión del End.
plugins/ Sí Incluye los plugins y, normalmente, sus configuraciones y bases de datos locales.
config/ Sí Es esencial en servidores con Fabric, Forge, NeoForge u otros cargadores de mods.
mods/ Sí Permite reconstruir exactamente el conjunto de mods instalado.
server.properties Sí Guarda el puerto, dificultad, distancia de renderizado, nombre del mundo y otros ajustes.
ops.json, whitelist.json y archivos banned-*.json Sí Conservan operadores, lista blanca y bloqueos.
permissions.yml, bukkit.yml, spigot.yml y paper*.yml Sí Contienen ajustes relevantes de servidores Bukkit, Spigot y Paper.
logs/ y crash-reports/ No, salvo necesidad Son útiles para diagnosticar problemas, pero no hacen falta para restaurar el servidor.
cache/ No Se regenera automáticamente.
Archivo JAR del servidor Recomendable Puede descargarse de nuevo, pero conservarlo evita depender de que esa versión siga disponible.

Los nombres de los mundos pueden ser distintos. Revisa la propiedad level-name:

grep '^level-name=' /opt/minecraft/server.properties

Si aparece level-name=survival, busca carpetas como survival, survival_nether y survival_the_end. Además, algunos plugins crean mundos adicionales mediante Multiverse u otras herramientas. Esos directorios también deben incluirse.

Por qué una copia en caliente puede quedar corrupta

Minecraft no escribe cada cambio inmediatamente en un único archivo. Mientras el servidor funciona mantiene información en memoria y actualiza numerosos archivos de región, entidades, jugadores y niveles. Si tar lee unos antes y otros después de una escritura, el archivo resultante puede mezclar estados de momentos diferentes.

El problema no siempre produce un archivo que parezca dañado. El comprimido puede abrirse correctamente y, aun así, contener chunks recientes junto a datos de nivel anteriores, inventarios desactualizados o información incompleta. Los plugins con SQLite u otros archivos propios añaden otro punto de inconsistencia.

La opción más segura es detener correctamente el servidor, esperar a que termine y copiar después. Si necesitas mantenerlo en marcha, usa esta secuencia en la consola:

save-off
save-all flush

save-off desactiva temporalmente el guardado automático del mundo. save-all flush fuerza el volcado de los cambios pendientes al disco. Una vez terminada la copia, reactiva siempre el guardado:

save-on

No dejes el servidor mucho tiempo con save-off. Los cambios posteriores quedan en memoria y podrían perderse si el proceso se bloquea o la máquina se reinicia. Esta secuencia protege principalmente los datos gestionados por Minecraft; no garantiza que todos los plugins hayan detenido sus propias escrituras. Para la máxima consistencia, detén el servidor o utiliza los mecanismos de copia recomendados por cada plugin.

Crear una copia manual con tar

Crea primero un directorio dedicado que no esté dentro de la instalación de Minecraft:

sudo install -d -m 750 -o minecraft -g minecraft /srv/backups/minecraft

Después de ejecutar save-off y save-all flush desde la consola, crea el archivo:

sudo -u minecraft tar \
  --exclude='./logs' \
  --exclude='./cache' \
  --exclude='./crash-reports' \
  -czf "/srv/backups/minecraft/minecraft-$(date +%F_%H-%M-%S).tar.gz" \
  -C /opt/minecraft \
  world world_nether world_the_end plugins config mods \
  server.properties ops.json whitelist.json \
  banned-players.json banned-ips.json

Adapta la lista a tu instalación. tar falla si le indicas un elemento que no existe, por lo que un script automatizado debe comprobar cada ruta antes de añadirla. Cuando termine, ejecuta save-on.

Automatizar la copia con cron

Para enviar comandos de forma automática puedes utilizar RCON y una herramienta como mcrcon. Activa RCON en server.properties:

enable-rcon=true
rcon.port=25575
rcon.password=UNA_CONTRASEÑA_LARGA_Y_UNICA

Crea /usr/local/sbin/backup-minecraft con este contenido:

#!/usr/bin/env bash
set -Eeuo pipefail
umask 077

SERVER_DIR="/opt/minecraft"
BACKUP_DIR="/srv/backups/minecraft"
RCON="/usr/local/bin/mcrcon"
RCON_HOST="127.0.0.1"
RCON_PORT="25575"
RCON_PASS="UNA_CONTRASEÑA_LARGA_Y_UNICA"
STAMP="$(date +%F_%H-%M-%S)"
ARCHIVE="$BACKUP_DIR/minecraft-$STAMP.tar.gz"

mkdir -p "$BACKUP_DIR"

restore_saving() {
  "$RCON" -H "$RCON_HOST" -P "$RCON_PORT" -p "$RCON_PASS" "save-on" || true
}
trap restore_saving EXIT

"$RCON" -H "$RCON_HOST" -P "$RCON_PORT" -p "$RCON_PASS" "save-off"
"$RCON" -H "$RCON_HOST" -P "$RCON_PORT" -p "$RCON_PASS" "save-all flush"
sleep 5

items=()
for item in \
  world world_nether world_the_end plugins config mods \
  server.properties ops.json whitelist.json \
  banned-players.json banned-ips.json \
  bukkit.yml spigot.yml paper.yml paper-global.yml
do
  if [[ -e "$SERVER_DIR/$item" ]]; then
    items+=("$item")
  fi
done

if [[ ${#items[@]} -eq 0 ]]; then
  echo "No se encontraron datos para copiar" >&2
  exit 1
fi

tar -czf "$ARCHIVE" -C "$SERVER_DIR" "${items[@]}"
tar -tzf "$ARCHIVE" >/dev/null
sha256sum "$ARCHIVE" >"$ARCHIVE.sha256"

find "$BACKUP_DIR" -type f \
  \( -name 'minecraft-*.tar.gz' -o -name 'minecraft-*.tar.gz.sha256' \) \
  -mtime +14 -delete

restore_saving
trap - EXIT

El trap intenta reactivar el guardado incluso si tar falla. Protege el script porque contiene la clave RCON:

sudo chown root:root /usr/local/sbin/backup-minecraft
sudo chmod 700 /usr/local/sbin/backup-minecraft

Pruébalo manualmente antes de programarlo:

sudo /usr/local/sbin/backup-minecraft
ls -lh /srv/backups/minecraft
sudo sha256sum -c /srv/backups/minecraft/minecraft-AAAA-MM-DD_HH-MM-SS.tar.gz.sha256

Para ejecutarlo cada día a las 04:15, abre el cron de root con sudo crontab -e y añade:

15 4 * * * /usr/local/sbin/backup-minecraft >> /var/log/backup-minecraft.log 2>&1

Retención y rotación

Guardar copias indefinidamente acaba llenando el disco. El ejemplo elimina archivos con más de 14 días, una política sencilla para copias diarias. Ajusta el periodo a la actividad del servidor, el espacio disponible y cuánto tiempo necesitas poder retroceder.

Tipo Ejemplo de retención Utilidad
Diaria Últimos 7 o 14 días Recuperar errores y daños detectados rápidamente.
Semanal Últimas 4 o 5 semanas Volver a un estado anterior cuando el problema tarda en descubrirse.
Mensual Varios meses Conservar puntos históricos sin guardar todas las copias diarias.

No bases toda la rotación en la antigüedad si quieres conservar semanas o meses concretos. Puedes copiar determinados archivos diarios a carpetas weekly/ y monthly/ mediante otro trabajo programado, y aplicar una retención distinta a cada una. Supervisa también el espacio:

df -h /srv/backups
du -sh /srv/backups/minecraft

Dónde guardar las copias

Una copia ubicada únicamente en el mismo servidor no protege frente a la pérdida del disco, una eliminación accidental, un ataque o la indisponibilidad completa de la máquina. Conserva al menos una copia fuera del servidor de Minecraft.

Puedes enviarla a otro equipo mediante rsync sobre SSH:

rsync -a --delete \
  /srv/backups/minecraft/ \
  [email protected]:/datos/minecraft/

Configura autenticación mediante una clave SSH limitada a esta tarea y protege el destino contra borrados no autorizados. Valora también almacenamiento de objetos, un NAS situado en otra ubicación o una solución de backup y recuperación ante desastres. La copia externa debe tener credenciales y permisos independientes siempre que sea posible.

Cómo probar que una copia restaura de verdad

Comprobar que el archivo existe no basta. La prueba válida consiste en restaurarlo en un directorio limpio, arrancar una instancia aislada y entrar al mundo.

  1. Verifica la integridad: ejecuta sha256sum -c con el archivo correspondiente.
  2. Extrae en una ubicación temporal: nunca pruebes encima del servidor de producción.
  3. Añade el JAR correcto: usa la misma versión de Minecraft, cargador, plugins y mods.
  4. Cambia el puerto: evita que la prueba interfiera con la instancia real.
  5. Arranca y revisa: consulta la consola, entra al servidor y visita zonas conocidas.
sudo install -d -m 750 -o minecraft -g minecraft /srv/restore-test
sudo -u minecraft tar -xzf \
  /srv/backups/minecraft/minecraft-AAAA-MM-DD_HH-MM-SS.tar.gz \
  -C /srv/restore-test

sudo -u minecraft sed -i 's/^server-port=.*/server-port=25566/' \
  /srv/restore-test/server.properties

Arranca la prueba sin acceso público y confirma que aparecen el mundo correcto, el inventario, el End, el Nether, los permisos y los datos importantes de los plugins. Revisa logs/latest.log en busca de errores. Si dependes de una base de datos externa, restaura también su volcado en una base de pruebas y modifica temporalmente las credenciales.

Documenta el procedimiento y repítelo periódicamente y después de cambios importantes de versión, plugins o mods. Si administras un servidor para una comunidad, un servicio de servidores de juegos puede simplificar la infraestructura, pero sigues necesitando conocer qué se copia y cómo se recupera. Para revisar una estrategia concreta con almacenamiento externo, puedes contactar con Overclock Host.

Preguntas frecuentes

¿Puedo copiar el mundo sin apagar el servidor?

Sí, pero debes ejecutar save-off y después save-all flush antes de copiar, y save-on al terminar. Detener correctamente el servidor sigue siendo la opción más segura, especialmente si hay plugins que escriben datos por su cuenta.

¿Basta con copiar la carpeta world?

No. Debes incluir también el Nether, el End, los mundos adicionales, las configuraciones, los plugins o mods y los archivos de operadores, lista blanca y bloqueos. Si un plugin utiliza una base de datos externa, necesitarás además un volcado de esa base.

¿Cuántas copias debería conservar?

No existe una cifra válida para todos los servidores. Como punto de partida práctico, combina varias copias diarias con copias semanales y mensuales. Ajusta la retención según la frecuencia de cambios, el espacio disponible y el tiempo que podría tardar en detectarse un problema.

¿Una copia en el mismo disco es suficiente?

No. Puede ayudarte ante una modificación accidental, pero no ante la pérdida del disco o del servidor completo. Mantén al menos una copia actualizada en otro sistema y, preferiblemente, con credenciales independientes.

¿Cómo sé si mi copia está bien?

Verifica su suma SHA-256, extráela en una carpeta limpia y arranca una instancia aislada con la misma versión. Entra al mundo, comprueba dimensiones, inventarios y plugins, y revisa el registro. Solo entonces sabes que la copia puede restaurarse.

Cómo migrar el correo a Microsoft 365 sin perder mensajes
Planifica la migración, reduce el riesgo durante el cambio y comprueba que correo, DNS y usuarios funcionan correctamente.