自动备份的批处理文件

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 usepushd 的帮助。另外,如果您使用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,:将一个文件复制为“多个副本“(增量备份,自动重命名)到指定目录

我有单位服务器数据库是SQLServer,每天用批处理自动备份数据库文件,如何用批处理方法删除旧的备份文件呢?

使用bat批处理文件定时自动备份sqlserver数据库

自动备份之批处理