Cómo hacer backup de un volumen

como-hacer-backup-de-un-volumen
como-hacer-backup-de-un-volumen

Hacer backup de un volumen Docker consiste en copiar los datos persistentes a un archivo que puedas comprobar y restaurar. Un contenedor auxiliar permite leer el volumen sin instalar herramientas en la aplicación y guardar un archivo tar fuera de ese volumen.

El ejemplo siguiente es apropiado para archivos estáticos o datos cuya escritura se ha pausado. Montar el origen como solo lectura evita que el contenedor auxiliar lo modifique, pero no detiene la aplicación: para bases de datos activas usa una copia nativa del motor o coordina una pausa de escrituras.

👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.

🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.

Cómo hacer backup de un volumen

La tarea se ejecuta desde un contenedor auxiliar. source indica el volumen que se va a leer, target lo presenta dentro del contenedor y readonly impide que ese contenedor escriba en él. El segundo montaje expone la carpeta de destino del archivo tar.

set -euo pipefail
docker context show
docker volume inspect datos_app
mkdir -p backups
docker run --rm \
  --mount type=volume,source=datos_app,target=/origen,readonly \
  --mount type=bind,source="$(pwd)/backups",target=/backup \
  alpine:latest \
  tar -cf /backup/datos_app.tar -C /origen .
test -s backups/datos_app.tar
tar -tf backups/datos_app.tar | sed -n '1,20p'

Qué significa cada parte del comando de backup

ElementoFunciónQué debes comprobar
docker context showMuestra el contexto activo de Docker.Que el daemon sea el host donde reside el volumen.
docker volume inspectDevuelve metadatos del volumen.Nombre, driver y alcance correctos.
source=datos_appSelecciona el volumen de origen.Reemplaza el ejemplo por el nombre confirmado.
target=/origenExpone el contenido dentro del auxiliar.La ruta debe ser distinta de la carpeta de copia.
readonlyMonta el volumen sin escritura desde el auxiliar.No sustituye una pausa de escrituras de la aplicación.
type=bindPresenta una carpeta del host como /backup.La ruta debe existir y ser accesible para el daemon.
tar -cfEmpaqueta el contenido del origen.El archivo debe estar fuera del volumen original.

Pasos para crear un backup de volumen Docker

El bloque de comandos crea una carpeta llamada backups, verifica el daemon y el volumen, y guarda datos_app.tar. Después revisa que el archivo no esté vacío y muestra una muestra de sus entradas.

El origen se monta de solo lectura en /origen; la carpeta de destino se monta en /backup. Al finalizar, –rm elimina únicamente el contenedor auxiliar. El volumen original no se elimina ni modifica.

Cómo comprobar que el backup se puede restaurar

Listar el contenido permite revisar nombres de archivos, pero no demuestra que la aplicación pueda utilizar la copia. Para validarla, restaura el tar en un volumen de prueba distinto del original y comprueba los datos antes de incorporarlos a un entorno real.

set -euo pipefail
prueba="datos_app_restore_$(date +%s)"
docker volume create "$prueba"
docker run --rm \
  --mount type=volume,source="$prueba",target=/destino \
  --mount type=bind,source="$(pwd)/backups",target=/backup,readonly \
  alpine:latest \
  tar -xf /backup/datos_app.tar -C /destino
docker run --rm \
  --mount type=volume,source="$prueba",target=/datos,readonly \
  alpine:latest ls -la /datos

El bloque genera un nombre único para el volumen de prueba y lo deja en el daemon para que puedas inspeccionarlo sin tocar el origen. Confirma que usas ese nombre nuevo; conserva la copia original durante todo el ensayo.

Consideraciones de consistencia y almacenamiento

Un tar de los archivos mientras una base de datos sigue escribiendo puede capturar ficheros de momentos distintos. La consistencia depende de la aplicación, no solo del montaje de lectura. Usa el método de backup recomendado por el motor, crea un snapshot coordinado o detén temporalmente las escrituras dentro de una ventana de mantenimiento.

La ruta $(pwd)/backups se convierte en un bind mount. Este ejemplo de comprobación del archivo está pensado para un daemon local. Con un contexto remoto, el bind mount apunta al host del daemon: crea allí la carpeta y realiza allí la comprobación o copia después el archivo al almacenamiento que vayas a conservar.

Errores comunes al hacer backup de un volumen Docker

  • Copiar solo el volumen sin comprobar antes el daemon y el nombre del recurso.
  • Guardar la única copia en el mismo disco o almacenamiento que el original.
  • Suponer que el montaje de solo lectura vuelve consistente una base de datos activa.
  • Confiar en un tar que no se ha listado ni restaurado de prueba.

Documentación oficial y recursos

Lecciones relacionadas del curso

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *