Skip to content

Instantly share code, notes, and snippets.

@owlscatcher
Last active May 21, 2021 09:49
Show Gist options
  • Save owlscatcher/404149d9972f5e9604051c7d94b56d1e to your computer and use it in GitHub Desktop.
Save owlscatcher/404149d9972f5e9604051c7d94b56d1e to your computer and use it in GitHub Desktop.
Выполнение бекапов баз данных ms sql при помощи Bash-скрипта в linux.
#!/bin/bash
echo
echo 'Скрипт начал работу...'
# Что бы запустить скрипт, требуется экспортировать переменные окружения, пример:
# export SQL_HOST=localhost && export SQL_USERNAME=admin && SQL_PSWD=qwerty1234 && sh backup.sh
#
# Если скрипт используется только на локальной машине и к нему никто, кроме вас не имеет доступ
# захардкодь ниже данные для авторизации в ms sql server. Экспортировать переменные не понадобится.
currentdate=$(date '+%Y-%m-%d')
host=$SQL_HOST
username=$SQL_USERNAME
password=$SQL_PSWD
echo
echo 'Обновление статистики...'
echo
# Обновление статистики. Помогает избежать возможных таймаутов в последующей работе сервера.
db='RR_ASRC'
sqlcmd -S $host -U $username -P $password -Q "USE $db; EXEC sp_updatestats;"
echo
echo 'Бекап баз данных RR_ASRC и staff_106 начат...'
echo
#Бекап базы данных <your_db1_name>'
db='<your_db1_name>'
path='./Backup/'$db'-'$currentdate'.bak'
sqlcmd -S $host -U $username -P $password -Q "BACKUP DATABASE $db TO DISK = N'$path' WITH NOFORMAT, NOINIT, NAME = N'$db-full', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10"
echo
#Бекап базы данных <your_db2_name>'
db='<your_db2_name>'
path='./Backup/'$db'-'$currentdate'.bak'
sqlcmd -S $host -U $username -P $password -Q "BACKUP DATABASE $db TO DISK = N'$path' WITH NOFORMAT, NOINIT, NAME = N'$db-full', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10"
#Создание папки для бекапа и перенос бекапов в ту папку
backup_folder='backup-'$currentdate
echo
echo 'Создание папки для бекапа с именем '$backup_folder
path='/var/opt/mssql/data/Backup/*' # По дефолту mssql-server складывает бекапы сюда
path2='/your/path/'$backup_folder # Путь, куда положим наши бекапы
sudo mkdir $path2
#Перенос бекапов в папку samba
echo
echo 'Перенос бекапов начат...'
sudo mv $path $path2
echo
echo 'Перенос бекапов закончен, рсположение '$path2
echo
echo 'Архивирование и сжатие бекапа:'
cd $path2 && cd .. && sudo tar -czvf $backup_folder'.tar.gz' $backup_folder
echo
echo 'Удаление папки '$backup_folder'...'
sudo rm -rf $backup_folder
echo
echo 'Папка '$backup_folder' удалена.'
echo
echo 'Архивирование закончено, актуальное состояние хранилища:'
ls -lah
echo
echo 'Актуальное состояние доступного дискового пространства:'
df -h
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment