admin 管理员组

文章数量: 887021


2024年1月22日发(作者:switch的ns流程图)

Sql server 数据库简单异地备份

Sql Server 数据是目前广泛使用的数据库,而其自带的备份功能,通常只能备份在本机磁盘,这对于想异地备份的用户来讲不免是个小遗憾。对此介绍使用DOS批处理命令(注意扩展名使用 .cmd )进行异地备份的简单方法。

以下介绍了二种方法,将sql server 定时备份的数据库文件通过共享磁盘再次备份到另一台电脑或同一台电脑的另个文件夹中(从安全来讲,最好是另一块硬盘)。可将以下命令写入批处理文件中,然后通过系统的任务计划来定时调用执行,以实现文件的异地备份。

方法说明

通常先通过SQL Server 的备份功能将数据库文件备份到某个文件夹中中,并根据需要保存多次备份文件。异地备份操作说明:

1、将 path1(Sql Server 数据库备份文件夹) 文件夹中有而 path2 文件中没有的文件备份到文件夹path2中。

2、将 path2 文件夹中有而 Path1 文件夹中没有的文件删除。

3、运行时将该批处理文件存放在 Path1 文件夹中并通过Windows任务计划运行。

4、文件名中不要有空格。

方法1,会生产临时文件,备份 *.bak文件

@echo off

Rem 以下path1 为原文件夹,通常为SQL SERVER自动备份数据库存放的文件夹

Rem path2 为异地备份目标文件夹,可以是一个网络共享文件夹

set path1=e:02

set path2=e:03

dir /b %path1%*.bak >

dir /b %path2%*.bak >

for /f %%i in ('findstr /i . 2^>nul') do if not exist %path2%%%i (copy ".%%i"

"%path2%")

for /f %%i in ('findstr /i . 2^>nul') do if not exist ".%%i" (del "%path2%%%i")

pause

方法2,不产生过程文件,备份 *.bak 文件 ,批处理文件可放在任何文件夹中但path1、path2

要存在并有读写权。

@echo off

set path1=e:02

set path2=e:03

for %%f in (*.bak) do if not exist "%path2%%%f" copy %%f "%path2%"

for %%f in (%path2%*.bak) do ( call :proc %%f )

goto :eof

:proc

set str2=%~nx1

@echo %path1%%str2%

if not exist "%path1%%str2%" (

@echo del %1

del %1 )

Rem FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)

REM 作者:蓝天 2018.10.31

批处理文件附下:


本文标签: 备份 文件 异地 数据库 文件夹