加入收藏 | 设为首页 | Life家族 | SCMLife | RMLife | PMLife | SQALife | TESTLife | 企业VIP专区 | 中文化荣誉殿堂

查看完整版本: 每天自动备份 SourceSafe

hifly 2006-12-28 15:58

每天自动备份 SourceSafe

2006年11月15日 星期三 16:14[table][tr][td][font=宋体][size=9pt]    在[/size][/font][font=Tahoma][size=9pt]Microsoft Visual SourceSafe[/size][/font][font=宋体][size=9pt]中提到管理员应该每天或者至少每周备份一次[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]中的内容。这里,我们利用现有的工具实现每天自动备份[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]中的内容。[/size][/font][font=Tahoma][size=9pt][/size][/font]

[font=Tahoma][size=9pt]1.       [/size][/font][font=宋体][size=9pt]用到的工具[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]a.[/size][/font][b][font=Tahoma][size=9pt]ssarc.exe[/size][/font][/b][font=Tahoma][size=9pt]. ssarc.exe[/size][/font][font=宋体][size=9pt]是随着[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]提供的一个备份工具,位置在[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]安装路径下的[/size][/font][font=Tahoma][size=9pt]win32[/size][/font][font=宋体][size=9pt]目录下。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]b.  [/size][/font][b][font=Tahoma][size=9pt]schtasks[/size][/font][/b][font=Tahoma][size=9pt]. schtasks[/size][/font][font=宋体][size=9pt]允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任务。替代[/size][/font][font=Tahoma][size=9pt] AT.exe[/size][/font][font=宋体][size=9pt]。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]2.       [/size][/font][font=宋体][size=9pt]自动备份[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]的步骤:[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]a.[/size][/font][font=宋体][size=9pt]创建一个批处理命令文件[/size][/font][font=Tahoma][size=9pt]backup.bat[/size][/font][font=宋体][size=9pt],将其存放在某个位置,如[/size][/font][font=Tahoma][size=9pt] c:\backup\bin[/size][/font][font=宋体][size=9pt]下。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]b.   [/size][/font][font=宋体][size=9pt]在这个批处理命令文件中写备份[/size][/font][font=Tahoma][size=9pt]SouceSafe[/size][/font][font=宋体][size=9pt]的命令。如:[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Verdana][size=8pt][font=Verdana][size=8pt]@echo off[/size][/font]
[font=Verdana][size=8pt]@title Backing up SourceSafe databases[/size][/font]
[font=Verdana][size=8pt]set SsPath=C:\Program Files\Microsoft Visual Studio\VSS\win32\[/size][/font]
[font=Verdana][size=8pt]set BakPath=C:\backup\content\[/size][/font]
[font=Verdana][size=8pt]"%SsPath%ssarc.exe" -d- -s"Path to a SourceSafe Database" -i- -yadmin,password -o@"%BakPath%Backup-output(%DATE%).txt" "%BakPath%Backup-Database(%DATE%).ssa" $/[/size][/font]
[font=Verdana][size=8pt]echo Finished backups[/size][/font]
[font=Verdana][size=8pt]@echo on[/size][/font]
[/size][/font][font=宋体][size=9pt]说明:[/size][/font][font=Verdana][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    1)      [/size][/font][font=Tahoma][size=9pt]SsPath [/size][/font][font=宋体][size=9pt]指定了[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]安装目录下的[/size][/font][font=Tahoma][size=9pt] win32 [/size][/font][font=宋体][size=9pt]目录的路径。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    2)      [/size][/font][font=Tahoma][size=9pt]BakPath[/size][/font][font=宋体][size=9pt]指定了备份文件存放的路径[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    3)      [/size][/font][font=宋体][size=9pt]请将[/size][/font][font=宋体][size=9pt]“[/size][/font][font=Tahoma][size=8pt]Path to a SourceSafe Database[/size][/font][font=宋体][size=9pt]”[/size][/font][font=宋体][size=9pt]替换成[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]数据库的[/size][/font][font=Tahoma][size=9pt]SrcSafe.ini[/size][/font][font=宋体][size=9pt]的路径。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    4)      [/size][/font][font=宋体][size=9pt]请将[/size][/font][font=宋体][size=9pt]“[/size][/font][font=Tahoma][size=8pt]password[/size][/font][font=宋体][size=9pt]”[/size][/font][font=宋体][size=9pt]替换成管理员的密码。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    5)      [/size][/font][font=宋体][size=9pt]每次备份完成之后,在[/size][/font][font=Tahoma][size=9pt]C:\backup\content[/size][/font][font=宋体][size=9pt]路径下会有两个文件生成:[/size][/font][font=Tahoma][size=9pt][/size][/font]
        [font=Tahoma][size=9pt]a.      [/size][/font][font=Tahoma][size=9pt]Backup-output([i]2004-11-01[/i]).txt[/size][/font][font=宋体][size=9pt]:[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]在备份过程中的所有输出内容将会写入此文件。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]        b.      [/size][/font][font=Tahoma][size=9pt]Backup-Database([i]2004-11-01[/i]).ssa[/size][/font][font=宋体][size=9pt]:[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]生成的备份文件。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[b][font=Tahoma][size=9pt]        Note[/size][/font][/b][font=Tahoma][size=9pt]: [/size][/font][font=宋体][size=9pt]“[/size][/font][i][font=Tahoma][size=9pt]2004-11-01[/size][/font][/i][font=宋体][size=9pt]”[/size][/font][font=宋体][size=9pt]是此备份操作执行时的当前日期。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    6)      [/size][/font][font=宋体][size=9pt]“[/size][/font][font=Tahoma][size=9pt]$/[/size][/font][font=宋体][size=9pt]”指定备份整个数据库。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]c.[/size][/font][font=宋体][size=9pt]利用[/size][/font][font=Tahoma][size=9pt]schtasks[/size][/font][font=宋体][size=9pt]命令行工具添加计划任务。如下:[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Verdana][size=8pt]schtasks /create /RU system /SC DAILY /ST 12:00 /TN "SourceSafe Backup"
/TR "cmd /c C:\backup\bin\backup.bat"[/size][/font]
[font=宋体][size=9pt]说明:[/size][/font][font=Verdana][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    1)      [/size][/font][font=Tahoma][size=9pt]/RU system    [/size][/font][font=宋体][size=9pt]指定在[/size][/font][font=Tahoma][size=9pt]“NT AUTHORITY\SYSTEM”[/size][/font][font=宋体][size=9pt]帐户下运行此备份命令。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    2)      [/size][/font][font=Tahoma][size=9pt]/SC DAILY     [/size][/font][font=宋体][size=9pt]指定此命令每天运行一次。可选值包括[/size][/font][font=Tahoma][size=9pt]MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE[/size][/font][font=宋体][size=9pt]。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    3)      [/size][/font][font=Tahoma][size=9pt]/ST 12:00     [/size][/font][font=宋体][size=9pt]指定此备份命令在[/size][/font][font=Tahoma][size=9pt]12:00[/size][/font][font=宋体][size=9pt]开始执行。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]    4)      [/size][/font][font=Tahoma][size=9pt]/TN "SourceSafe Backup"        [/size][/font][font=宋体][size=9pt]指定此计划任务的名称是[/size][/font][font=Tahoma][size=9pt] SourceSafe Backup[/size][/font]
[font=Tahoma][size=9pt]    5)      [/size][/font][font=Tahoma][size=9pt]/TR "cmd /c C:\backup\bin\backup.bat"[/size][/font][font=宋体][size=9pt]指定此计划任务运行的命令。[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]d.         [/size][/font][font=宋体][size=9pt]现在已经完成了创建每天自动备份的任务。在命令行下键入“[/size][/font][font=Tahoma][size=9pt]schtasks[/size][/font][font=宋体][size=9pt]”,就能在“任务名”一列找到“[/size][/font][font=Tahoma][size=9pt]SourceSafe Backup[/size][/font][font=宋体][size=9pt]”了![/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]3.       [/size][/font][font=宋体][size=9pt]参考[/size][/font][font=Tahoma][size=9pt][/size][/font]
[font=Tahoma][size=9pt]a.[/size][/font][font=Tahoma][size=9pt]Microsoft Visual SourceSafe Reference Guide(SSUSEXP.CHM)[/size][/font][font=宋体][size=9pt]。[/size][/font][font=宋体][size=9pt]此文件在[/size][/font][font=Tahoma][size=9pt]SourceSafe[/size][/font][font=宋体][size=9pt]的安装路径下。或者到[/size][/font][font=Tahoma][size=9pt]MSDN[/size][/font][font=宋体][size=9pt]网站上查看:[/size][/font][font=Tahoma][size=9pt]
[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/guides/html/vsoriReferenceGuide.asp][color=#0000ff]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/guides/html/vsoriReferenceGuide.asp[/color][/url][/size][/font]
[font=Tahoma][size=9pt]b.         [/size][/font][font=Tahoma][size=9pt]Microsoft Visual SourceSafe Best Practices.
[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvss/html/vssbest.asp][color=#0000ff]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvss/html/vssbest.asp[/color][/url][/size][/font]
[font=Tahoma][size=9pt]c.[/size][/font][font=Tahoma][size=9pt]HOW TO: Use Schtasks.exe to Schedule Tasks in Windows Server 2003
[url=http://support.microsoft.com/default.aspx?scid=kb;en-us;814596][color=#0000ff]http://support.microsoft.com/default.aspx?scid=kb;en-us;814596[/color][/url][/size][/font]

SSARC [-d] [-v] [-s] [-c] [-o] [-i-] [-y] [-x] <archive file to create> <files/projects to archive>

它的选项包括:
-d Deletes the archived items from the database.
-d- controls whether VSS actually deletes anything from the database.
-v Specifies a version number to archive
-o Redirects output
-x Archive only deleted items in the files and projects specified in the files/projects to Archive parameter. (Deleted items are still stored in the VSS database unless the Destroy Permanently option was selected when performing the Delete operation.)

方案2:
我用at、robocopy、winrar来实现每天的备份
用robocopy将整个VSS的ROOT目录复制到一个新目录中,因为robocopy只复制更新过的文件,所以速度极快
另外用winrar将整个目录压缩成一个rar文件,在脚本中根据星期几生成文件名,这样七天一个循环
用at定时在每天00:00执行
已经运行了快两年了,一个rar文件都已经3G多了,运行得也不错

@ECHO OFF
@TITLE Backing up source safe (VSSDATA) databases

rem ==========删除临时目录中的内容=====
del /F /Q e:\vssdata\temp\*.*

robocopy e:\vssdata h:\vssdata_bak /MIR

rem ============取出当天是星期几========
FOR /F "tokens=2-2" %%i IN ('date /t') DO SET DAY=%%i

"c:\Program Files\WinRAR\rar" a -r h:\backups\vssdata_bak_%DAY%.rar e:\vssdata\*.*

@ECHO Finished backups




[/td][/tr][/table][url=http://hi.baidu.com/mayig/blog/item/9e15bbde96308158ccbf1aaa.html]http://hi.baidu.com/mayig/blog/item/9e15bbde96308158ccbf1aaa.html[/url]

[[i] 本帖最后由 hifly 于 2006-12-28 16:00 编辑 [/i]]

aben_lau 2007-1-11 12:21

好东东

收藏了。我用的是任务计划来实现的也比较方便。

hifly 2007-1-11 12:36

只要达到目的就好。
顺便建议一下,把你的方法也贡献出来。

zixiu2008 2007-1-16 10:43

一定要先把数据库锁住吧

hifly 2007-1-16 12:44

这应该不是必需的。
不过建议锁一下也好。

missu_1 2007-1-24 14:53

楼主这个方法看上去好复杂啊...
不会操作...
不知用WIN自带的备份还原可否..是否安全?
还有VSS自带的ARCHIVE可否呢?

hifly 2007-1-24 15:17

转贴就是用的vss自带的备份。写了一个简单的脚本实现自动化而已。

如果库不大,可以复制 整个库 来备份。

missu_1 2007-1-24 15:30

[quote]原帖由 [i]hifly[/i] 于 2007-1-24 15:17 发表
转贴就是用的vss自带的备份。写了一个简单的脚本实现自动化而已。

如果库不大,可以复制 整个库 来备份。 [/quote]

哦~~明白了
是不是说vss自带的备份不是自动的。。。转贴是实现了他的自动化?

hifly 2007-1-25 08:46

[quote]原帖由 [i]missu_1[/i] 于 2007-1-24 15:30 发表


哦~~明白了
是不是说vss自带的备份不是自动的。。。转贴是实现了他的自动化? [/quote]


这里说的自动化,是 [b]定时执行[/b],不需要人工干预。

Johnny_ysx 2007-6-2 10:34

我用的第一种方法很好用, 比以前省事多了, 谢谢楼主啦!::em64::

bin800 2007-6-6 21:08

楼主,好东西,和你上次那个3种备份vss,又加了一种。

bin800 2007-6-8 13:03

看了班主的帖子,一下子给我了一点提醒。所以本人按照版主的想法。和自己的实际情况。也写了windows xp 下自动备份,不用做其他操作的bat。现在就可以完全自动备份了,什么也不用管。

说一下情况(完全使用dos命令实现备份):
(1)windows xp
(2)将vss服务器共享目录影射成自己本地机的一个盘符
(3)由于本人硬盘空间有限,只留两个vss备份,一个是最新的,一个是上一周的。大家可以根据情况修改备份计划。
(3)共分为两个bat,一个是每天增量备份vssBakForday.bat,另一个是每周vssBakForWeek.bat 将每天备份的成果形成一个基线。

下面开始介绍bat命令行,很简单的 。每天增量备份vssBakForday.bat
----------------------------------------------------------------------------------
echo 10.3.169.*\d$\vss_lis 备份

xcopy /d/s/r/y x:\VSS_LIS F:\scm_bak\vss_bak

echo %time%

pause
------------------------------------------------------------------------------------
以上bat 要制定任务计划每天夜里执行。


每周vssBakForWeek.bat  命令很好理解。
----------------------------------------------------------------------------------
echo %time%  vss_bak
rd /s/q F:\scm_bak\vss_bak_old
md F:\scm_bak\vss_bak_old
move F:\scm_bak\vss_bak F:\scm_bak\vss_bak_old\
rename F:\scm_bak\vss_bak_old\vss_bak vss_bak_%date:~0,4%%date:~5,2%%date:~8,2%
rd /s/q F:\scm_bak\vss_bak_old\vss_bak_%date:~0,4%%date:~5,2%%date:~8,2%\temp
md F:\scm_bak\vss_bak
echo %time%
pause
------------------------------------------------------------------------------------
以上bat 要制定任务计划每周日下午执行。

说明:
“%date:~0,4%%date:~5,2%%date:~8,2%”  是xp dos 下获取日期的,在2000下请做相应调整。

上面的两个bat,就可以自动完成备份工作,并在每周删除旧基线,建立新基线。反复自动。

[[i] 本帖最后由 bin800 于 2007-6-11 09:39 编辑 [/i]]

hifly 2007-6-8 13:20

回复 #12 bin800 的帖子

楼上的,不错啊!加分!

bin800 2007-6-8 14:15

回复 #13 hifly 的帖子

多谢版主! 另外大家可以将版主压包的命令加进去“"c:\Program Files\WinRAR\rar" a -r h:\backups\vssdata_bak_%DAY%.rar e:\vssdata\*.* ”

因为我们的vss占用空间较大6g多,所以压起来要很久,我就只留两个不压缩的备份。如果你的vss不是很大,可以考虑做多个备份,并进行压缩存储。

xiaoqingyu 2007-6-28 14:42

如何对多个vss项目进行数据备份?

发现ssarc.exe只能同时对一个项目进行备份,不是很方便.
另外对于vss,我们还设置拉安全,共享,这些信息ssarc.exe也是无法备份的,只能用windows的备份功能中的备份系统状态来实现.

我目前遇到的问题是:公司这面偶尔会出现停电现象,造成vss服务器很不安全,但公司又舍不得买ups,我该如何来计划出一个合理的备份方案呢?请大家给点建议

engchs 2007-9-10 15:54

我想问下第二种方法为什么还要再压缩一份,因为robocopy复制过来的备份是不删除的,那再压缩几分不是重复占用空间了吗?还是说rar压缩的只是为了保存/mir备份时删除的东西?

hifly 2007-9-10 15:59

回复 #15 xiaoqingyu 的帖子

ssarc.exe只能同时对一个项目进行备份,不是很方便.
可以同时对多个项目备份,前几天看到有坛友提问题,特地试验了一下。
你可以找一下。

engchs 2007-9-10 16:33

因为我们公司结项的项目目前仍然在vss中保留,而且有时会单独备份/恢复某一项目,因此选择了按项目备份的方法。
但时间长了每天备份文件过多,参考楼主方法二的办法,只保留最近一周的,写了如下的bat:

@Echo off
set ssdir=e:\新建文件夹\

rem ============取出当天是星期几========
FOR /F "tokens=2-2" %%i IN ('date /t') DO SET DAY=%%i

ssarc -d- -I-y -yadmin,`1q e:\vssbackup1\fiftest_backup_%DAY%.ssa $/fiftest
ssarc -d- -I-y -yadmin,`1q e:\vssbackup1\sixtest_backup_%DAY%.ssa $/sixtest
ssarc -d- -I-y -yadmin,`1q e:\vssbackup1\newtest_backup_%DAY%.ssa $/newtest

这样当有新项目或老项目结项时,修改下bat文件即可。
第一次写,不知道会不会有什么问题,请指正。

sujos 2007-9-11 09:22

你这种情况.个人觉得还是定时本地备份比较好.
其实备份不外乎那集中.具体问题具体分析.

nicole_zmf 2008-1-9 16:48

看了这篇帖子有如下两个疑问:
1.想问问对数据库备份有经验的朋友,如果数据库已经快到7G了,采用哪种备份策略比较好?
2.
b.   在这个批处理命令文件中写备份SouceSafe的命令。如:
@echo off
@title Backing up SourceSafe databases
set SsPath=C:\Program Files\Microsoft Visual Studio\VSS\win32\
set BakPath=C:\backup\content\
"%SsPath%ssarc.exe" -d- -s"Path to a SourceSafe Database" -i- -yadmin,password -o@"%BakPath%Backup-output(%DATE%).txt" "%BakPath%Backup-Database(%DATE%).ssa" $/
echo Finished backups
@echo on
帖中的这些脚本大家有没有执行过啊,我把相关部分进行了修改,可是没有得到任何结果.只是把echo 的finished backups显示来了.
页: [1] 2
查看完整版本: 每天自动备份 SourceSafe