Last active
May 21, 2021 09:49
-
-
Save owlscatcher/404149d9972f5e9604051c7d94b56d1e to your computer and use it in GitHub Desktop.
Выполнение бекапов баз данных ms sql при помощи Bash-скрипта в linux.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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