Архивирование SQL баз с компрессией
Недавно поправил свой скрипт у клиента, чтобы SQL делал bak-архивы с компрессией. Как раз, когда клиент переехал с файловой на SQL версию.
Но решил еще упаковывать и в ZIP инструментом 7-zip.
Посмотрел, уменьшается ли объем архива:

Архив размером 5015 Мб сжался до 4972, всего на 1%.
Но есть еще одна причина, по которой делаю упаковку в архив — не знаю средств, чтобы проверить целостность bak-файла. А вот для архивов zip тестирование — встроенный механизм.
Мой текущий скрипт выглядит не идеально, но работает:
chcp 1251 set "backup1=C:\Backup\" set "backuplast=C:\Backup\forcloud" md "%backuplast%" rem === ARCHIVING === call :basesql srv0,trade_wrk,ut,%backup1% exit :basesql set backuppath=C:\backup rem https://infostart.ru/1c/articles/1209244/ set "tmpfile=%4\sql.bak" del %tmpfile% set "arcfile=%4\%3%date:~1,1%.zip" "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.exe" -S %1 -E -Q "BACKUP DATABASE [%2] TO DISK = '%tmpfile%' WITH INIT, NOFORMAT, SKIP, NOUNLOAD, COMPRESSION" rem pause "C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -y %arcfile% %tmpfile% del %tmpfile% rem pause "C:\rclone\rclone.exe" delete --min-age 20d backup:backup_s3multipartuploads "C:\rclone\rclone.exe" delete --min-age 20d backup:backup "C:\rclone\rclone.exe" copy %arcfile% backup:backup exit /b :basefile set arcfile="%backup1%\1cv8_%~2_%date:~1,1%.zip" set arcfilelast="%backuplast%\1cv8.zip" set srcfile="%~1\1cv8.1CD" del %arcfile% "C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -y %arcfile% %srcfile% "C:\rclone\rclone.exe" delete --min-age 20d backup:backup_s3multipartuploads "C:\rclone\rclone.exe" delete --min-age 20d backup:backup "C:\rclone\rclone.exe" copy %arcfile% backup:backup rem pause rem copy %arcfile% %arcfilelast% /Y rem "C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -v900m -y %arcfilelast% %srcfile% rem pause exit /b
Для проверки целостности считай md5 чексумму файла и храни ее рядом.
но согласись, что это сложнее, чем просто ZIP
В таких вопросах сложность — понятие субъективное. Под капотом в архиве та же чексумма и считается.
Я так же заглянул в доки по MS SQL, команды для бэкапа имеют возможность генерации чексуммы сразу. Так что можно обойтись средствами БД.
можно, но еще раз — в ZIP это все встроено. Поэтому не нужно лишних плясок с бубном. Скачал тестово зип с SELECTEL проверил и спишь спокойно.