自动备份的批处理文件
Posted
技术标签:
【中文标题】自动备份的批处理文件【英文标题】:Batch file for auto backup 【发布时间】:2020-11-30 06:35:40 【问题描述】:我有一个服务器,我在其中运行一个 SQL Server Express DB 和一个 Azure blob,我每天早上都会上传 SQL Server 的备份。
现在,我已经能够通过混合使用 SQL 查询 + 批处理文件来自动执行备份,并且我已将它安排到我的任务计划程序中,以在每晚晚上 9:00 运行,但我还想移动一份副本从服务器到 Azure 存储的备份。
我已经在任务调度器中尝试了一个批处理文件:
echo off
copy "Z:\Backup\SQLBackup\" "C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Backup\DailyStep_bck.bak"
但它本身不起作用,只有当我手动运行它时。 当前副本每天都应该替换旧的副本,我现在不需要保留旧的备份。
我也尝试过 robocopy,但它也不起作用......有人能告诉我我错过了什么吗?
任务以管理员身份运行,带有“无论管理员是否登录都运行”选项。
感谢您的帮助。
【问题讨论】:
首先,我建议您打开命令提示符窗口,输入copy /?
,按[ENTER]
键,然后阅读显示的内容。然后我请你重复一遍,但这次输入robocopy /?
,而不是`。
我会改用robocopy
,正如@Compo 所提到的,运行robocopy /?
并专门查看帮助的/MIR
部分。
如果没有用户登录,肯定没有映射资源,Z:
是映射驱动器吗?尝试完整的unc path
或在脚本顶部使用net use ..
或pushd ..
来创建临时映射资源。有关更多信息,请参阅 net use
和 pushd
的帮助。另外,如果您使用pushd
,最好也使用popd
另外,您可能会发现这有助于加快复制任务dostips.com/forum/…
您的服务器上是否安装了 azure blob?
【参考方案1】:
我将解决方案总结如下。
Windows 任务计划程序没有安装的 Azure 文件共享驱动器的权限。所以我们需要使用路径https://[Azure_account].file.core.windows.net/storage/Backup
来访问Azure文件共享。另外,如果要实现自动上传,可以使用azcopy。
例如
Create a sas token for the file share
脚本
azcopy copy 'C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\Backup*.bak' 'https://[Azure_account].file.core.windows.net/storage/Backup/SQLBackup/[backup_file].bak?<sas token>
-
创建计划任务
更多详情请参考here和here
【讨论】:
是的,我最后有一个,我必须生成 SAS 令牌,因为我没有那个。现在它可以正常工作了,非常感谢您的帮助,非常感谢。!!! @Core88 既然对你有用,你能接受它作为答案吗?以上是关于自动备份的批处理文件的主要内容,如果未能解决你的问题,请参考以下文章
一键设置WPS_Office_2019专业版的定时自动备份的批处理文件
windows下使用bat批处理文件定时自动备份oracle数据库并上传ftp服务器
如何使用bat批处理或cmd,:将一个文件复制为“多个副本“(增量备份,自动重命名)到指定目录