Advertisement
Guest User

Automatización de respaldos de SQL Server en LINUX

a guest
Nov 10th, 2018
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.31 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. if [ $(whoami) != 'root' ]; then
  4.         echo "Se necesitan accesos de super usuario para ejecutar este script."
  5.         exit 1;
  6. fi
  7.  
  8. declare Host="host-de-sql-server"
  9. declare User="usuarioParaRespaldos"
  10. declare Pass="Contraseña-del-usuario-para-respaldos"
  11. declare -a Bases=(Lista De Bases De Datos)
  12. declare RemoteServer="host-remoto-para-guardar-los-respaldos"
  13. declare BackupDir="/var/opt/mssql/backups"
  14. declare sqlcmd="/opt/mssql-tools/bin/sqlcmd"
  15.  
  16.  
  17. cd $BackupDir
  18.  
  19. #
  20. # 1. Eliminar respaldos antiguos.
  21. #
  22. rm -f *-anterior.bak
  23.  
  24. #
  25. # 2. Respaldar los respaldos actuales.
  26. #
  27. for file in *.bak; do
  28.         mv "$file" "${file/.bak/-anterior.bak}";
  29. done
  30.  
  31. #
  32. # 3. Realizar los respaldos de DB.
  33. #
  34.  
  35. for db in ${Bases[@]}; do
  36.         #
  37.         # 3.1 Crear el archivo de respaldo.
  38.         #
  39.         echo "Generando ${db}.bak... "
  40.         $sqlcmd -S $Host -U $User -P $Pass -Q "BACKUP DATABASE [${db}] TO DISK = N'${BackupDir}/${db}.bak' WITH  NAME = '${db}-full', COMPRESSION;"
  41.         echo -e "Listo.\n"
  42.  
  43.         #
  44.         # 3.2 Copiar respaldo en servidor ftp de respaldos.
  45.         #
  46.         echo "Cargando archivo a ftp de respaldo... "
  47.         ftp -n $RemoteServer <<END_SCRIPT
  48. quote USER $User
  49. quote PASS $Pass
  50. put ${db}.bak
  51. quit
  52. END_SCRIPT
  53.         echo -e "Listo.\n"
  54. done
  55.  
  56. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement