Como el titulo lo menciona, tengo un vps con ubuntu, corre una aplicación de web api en net core y un contenedor de docker con sql server para la db, sin embargo, ando experimentando en temas de Dev Ops y cada día me hago más preguntas de «como se hace esto, aquello, etcétera. Posteriormente quiero automatizar estos procesos, desconozco del tema a profundidad, pero pudiera ser con bash scripting.
Hay muchas maneras de crear un respaldo, anteriormente lo había hecho desde sql managmente studio, aquí está el post si gustan verlo:
https://mirandamx.dev/copiar-archivos-de-un-contenedor-de-docker-en-ubuntu/
Así que empezamos:
Para eso debemos iniciar la consola de nuestro contenedor de sql server, con alguno de estos dos comandos:
$ docker exec -it 466ae2e5db3d bash
$ docker exec -it 466ae2e5db3d sh
Si fuera su caso que no los deje ejecutar comandos, podemos iniciar con el usuario root
$ sudo docker exec -it --user root 466ae2e5db3d bash
Para crear nuestro .bak, ejecutamos el siguiente comando en la consola bash que acabamos de abrir (No olviden cambiar por sus datos de su db)
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U elapolonio -Q "BACKUP DATABASE [diario] TO DISK = N'/var/opt/mssql/data/20250219-Diario.bak' WITH NOFORMAT, NOINIT, NAME = '20250219 - diario', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
Y posteriormente nos pedirá nuestro password de sql server.
Si lo quieren hacer de forma directa en la consola del servidor y no en la del contenedor:
-- Alternativa más directa (cambiar datos por los suyos):
$ docker exec -it 466ae2e5db3d /opt/mssql-tools/bin/sqlcmd -S localhost -U usernameSQL -P elPasswordSqlDelAmor -d Diario -Q "BACKUP DATABASE [Diario] TO DISK = N'/var/opt/mssql/data/20250219-Diario.bak' WITH NOFORMAT, NOINIT, NAME = N'DockerTest-Full Database Backup', COMPRESSION, STATS = 10"
Dentro de nuestro contenedor, podemos validar la existencia del archivo:
$ cd /var/opt/mssql/data/
$ ls
Copiamos el .bak de nuestro contenedor en docker a nuestro servidor
$ sudo docker cp 466ae2e5db3d:/var/opt/mssql/data/20250219-Diario.bak /home
Para descargar desde nuestro windows con ayuda de PowerShell ejecutamos:
scp f ubuntu@142.44.243.239:/home/20250219-Diario.bak C:\bak\dbOvh
Si muestra el mensaje » Permission denied», nos asignamos los siguientes permisos a nuestro archivo en nuestro servidor
$ sudo chmod 755 /home/20250219-Diario.bak
Borramos el .bak de nuestro servidor
$ rm /home/20250219-Diario.bak