`
lz1130
  • 浏览: 406280 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

svn备份、恢复与同步

阅读更多
关闭所有运行的进程,并确认没有程序在访问存储库(如 httpd、svnserve 或本地用户在直接访问)。

备份svn存储库
#压缩备份
svnadmin dump /home/workhome/svn/repository | gzip > ~/repository-backup.gz
#不压缩备份
svnadmin dump /home/workhome/svn/repository > ~/repository-backup.svn


恢复svn存储库
#建立新的svn存储库
svnadmin create /home/workhome/svn/newrepository
#确认成功与否
ls -l /home/workhome/svn/newrepository
#导入存储库数据
svnadmin load /home/workhome/svn/newrepository < ~/repository-backup.svn


其他svn命名
svnadmin recover — 将版本库数据库恢复到稳定状态
svnadmin recover /home/workhome/svn/newrepository


删除存储库中无用的日志文件
svnadmin list-unused-dblogs /home/workhome/svn/newrepository/ | xargs rm -vf


删除存储库中所有剩余的共享内存文件
rm -f /home/workhome/svn/newrepository/db/_db.0*




实现svnsync

实现svnsync的唯一的前提条件是创建一个希望镜像的版本库,一旦创建,你就可以按照下面步骤继续。

Step 1: 创建镜像Repository(要与主Repository名字相同)
svnadmin create MIRROR_REPO_PATH


Step 2: 设置镜像版本库只对同步用户可写

svnsync synchronize -h
synchronize (sync): usage: svnsync synchronize DEST_URL

Transfer all pending revisions to the destination from the source
with which it was initialized.

Valid options:
  --non-interactive        : do no interactive prompting
  --no-auth-cache          : do not cache authentication tokens
  --username ARG           : specify a username ARG (deprecated;
                             see --source-username and --sync-username)
  --password ARG           : specify a password ARG (deprecated;
                             see --source-password and --sync-password)
  --source-username ARG    : connect to source repository with username ARG
  --source-password ARG    : connect to source repository with password ARG
  --sync-username ARG      : connect to sync repository with username ARG
  --sync-password ARG      : connect to sync repository with password ARG
  --config-dir ARG         : read user configuration files from directory ARG
  -q [--quiet]             : print as little as possible

  --username ARG           : specify a username ARG (deprecated;
                             see --source-username and --sync-username)
  --password ARG           : specify a password ARG (deprecated;
                             see --source-password and --sync-password)
这句意思是不是同步用户可以主Repository和镜像Repository都设成一样。待实践

为了让镜像版本库只被同步用户写,我们的例子里用户名是”svnsync”,我们有一些选项,一个就是使用Subversion的授权功能设置缺省的访问规则:
[/]
* = r
svnsync = rw


另一个选项就是使用start-commit(MIRROR_REPO_PATH/hooks下) 检查svnsync用户,下面是一个例子,是shell脚本:
#!/bin/sh
USER=”$2″ 
if [ “$USER” = “svnsync” ];
   then exit 0
fi 
echo “Only the syncuser user may commit new revisions as this is a read-only, mirror repository.” >&2
exit 1



Step 3: 让镜像版本库使用同步用户修改修订版本属性

为此,我们需要创建一个pre-revprop-change(MIRROR_REPO_PATH/hooks下)钩子,类似于下面的例子,也是shell脚本:
#!/bin/sh 
USER=”$3″ 
if [ “$USER” = “svnsync” ];
   then exit 0;
fi 
echo “Only the syncuser user may change revision properties as this is a read-only, mirror repository.”  >&2
exit 1


Step 4: 注册同步的镜像版本库

在任何平台使用下面的svnsync命令:
svnsync initialize URL_TO_MIRROR_REPO URL_TO_MASTER_REPO --username=svnsync --password=svnsyncpassword


如果所有的配置正确,你一定会看到下面的输出:
Copied properties for revision 0.

现在你已经注册了镜像版本库与主版本库的同步,我们必须继续执行初始的同步,这样镜像版本库才和主版本库是一样的了。

Step 5: 执行初始同步

为了确定所有事情已经准备好了,并且执行初始同步,在任何系统只需要执行:
svnsync synchronize URL_TO_MIRROR_REPO --username=svnsync --password=svnsyncpassword


如果所有的同步正确,你会看到类似的输出:
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
Committed revision 3.
Copied properties for revision 3.…

Step 6: 使用post-commit(MASTER_REPO_PATH/hooks下)钩子自动同步

根据初始同步的输出,我们现在要做的就是写一个定时执行或post-commit钩子来同步镜像版本库,我建议post-commit,因为它让你的镜像版本库尽可能的最新,下面是可以用在主版本库上同步镜像版本库的post-commit钩子,一个shell脚本:
# Example for synchronizing one repository from the post-commit hook
#!/bin/sh

svnsync synchronize URL_TO_MIRROR_REPO -username=svnsync -password=svnsyncpassword & 

exit 0


注:上述钩子脚本需用 chmod 755 使之可运行。
分享到:
评论

相关推荐

    linux下\svn备份与同步

    总的来说,Linux下的svn备份与同步涉及到仓库的创建、权限配置、同步管理以及数据备份与恢复。理解和掌握这些操作对于维护稳定的版本控制环境至关重要。通过定期备份和同步,可以确保在出现意外情况时能够迅速恢复...

    SVN备份操作(包括完全备份,增量备份和同步版本库)

    ### SVN备份操作详解 #### 一、概述 版本控制系统的核心目标之一是确保数据的安全性和可靠性。对于企业级项目管理而言,任何因硬件故障或软件错误导致的数据丢失都是无法接受的。因此,制定全面且可靠的备份策略...

    windows&linux svn自动化全备份&增量备份脚本

    - **linux下-SVN全量和增量备份脚本.docx**:这份文档可能包含了详细的Linux环境下编写SVN备份脚本的步骤和示例代码。 - **svnBackupBat.rar**:这是一个Windows批处理脚本的压缩包,可能包含全备份和增量备份的bat...

    windows下svn异地备份与还原

    在Windows环境下,Subversion(简称svn)作为一款广泛使用的版本控制系统,对于团队协作和项目管理起着至关重要的作用。...文件"svn备份与还原.txt"很可能是详细的操作步骤和指南,建议仔细阅读并按照指导进行实践。

    一段进行SVN备份的脚本

    这段描述提到的“一段进行SVN备份的脚本”就是为了解决这一需求,它允许用户通过Windows计划任务自动化执行备份过程,以防止意外数据丢失。 首先,我们需要理解SVN备份的基本原理。SVN仓库通常存储在服务器上,包含...

    SVN_BackUp.rar_svn 自动备份_svn备份

    【SVN自动备份与双服务器备份策略】 ...总结,通过SVN的自动备份、双服务器备份和云存储服务的结合使用,我们可以构建一个高效且安全的SVN备份系统,确保在任何突发情况下都能迅速恢复数据,保证团队的正常开发工作。

    svn备份方案补充

    本篇文章将详细探讨“svn备份方案补充”,主要聚焦于如何在Linux环境下实现svn版本库的自动全量备份。 首先,理解svn的核心概念至关重要。svn是一个分布式版本控制系统,它允许团队成员对同一份代码进行协作编辑,...

    svnsync.sh svnhotcopy_daily.sh svn 备份

    结合描述,我们可以看出这是一个完整的SVN备份策略:每当源仓库有新的提交或更新时,`svnsync.sh`会将这些变更同步到备份服务器;同时,`svnhotcopy_daily.sh`会在每天的某个固定时间点创建一个热备份,以防万一同步...

    SVN服务器几种备份策略.docx

    - 策略:每周六全量备份,周日至周五增量备份,备份存储在/home/backup/svn/,文件名根据日期命名,晚上21点执行,每月末进行恢复测试。 - 脚本:使用perl编写,例如`weekly_backup.pl`,包含全量备份命令,记录...

    SVN版本库备份操作脚本

    5. 可能还包括验证备份文件的完整性,通过对比备份文件与原版本库的SHA1或MD5哈希值。 6. 如果需要,可以设置邮件通知,告知管理员备份结果。 同步备份是指在多个地点维护版本库的副本,这样即使一个位置出现问题,...

    linux svn备份方式

    为了确保代码的安全性和可恢复性,定期备份SVN仓库是非常重要的。本文将详细介绍两种Linux环境下SVN的备份方式:增量备份和整体打包备份,并讲解如何利用rsync、hotcopy以及cron工具进行自动化操作。 **增量备份** ...

    svn_TortoiseSVN\Svn备份.doc

    本文将深入探讨SVN中的三种主要备份方式:完全备份、增量备份以及同步版本库,特别关注于如何通过自动化脚本来优化备份流程。 #### 一、完全备份 完全备份是最直接也是最基础的备份方式。在SVN中,通过简单的拷贝...

    svn配置库全量备份脚本

    本主题聚焦于“svn配置库全量备份脚本”,这是一个关键的实践操作,对于确保项目数据的安全性和可恢复性至关重要。下面将详细介绍如何使用脚本来执行SVN全量备份,以及涉及到的相关技术知识点。 首先,我们需要理解...

    SVN 冷备方式

    - 使用`svnsync sync`命令进行同步备份: ``` svnsync sync file:///home/svn/bss ``` - **定时器**: - 使用`crontab`设置定时任务: - 编辑`crontab`: ``` crontab -e ``` - 每天早上六点执行备份任务: ``...

    svn 同步图标消失,并且不能勾选svn

    然而,有时用户可能会遇到svn同步图标消失的问题,这通常意味着Eclipse中的svn插件或者相关配置出现了问题。本文将深入探讨这个问题,并提供可能的解决方案。 首先,svn图标消失可能是因为Eclipse的svn插件,如...

    svn自动备份

    3. **SVN备份命令详解** - `svnadmin dump`: 创建版本库的纯文本备份文件,该文件包含了所有版本和元数据信息。 - `-q` 或 `--quiet`: 在执行过程中降低输出信息,避免占用过多日志空间。 - `-r` 或 `--revision`...

    SVN等多种工具备份批处理文档

    首先,让我们关注SVN备份。SVN本身并不直接支持自动备份,但可以通过脚本或批处理文件实现。通常,这包括以下步骤: 1. 使用`svnadmin dump`命令创建SVN仓库的完整或增量备份。完整备份将获取仓库的全部内容,而...

    SVN远程备份简单操作手册.pdf

    综上所述,这份手册为SVN管理员提供了一个清晰的指南,帮助他们有效地建立和管理远程备份,确保团队的代码安全并能够及时恢复。在实际操作中,遵循这些步骤和注意事项可以降低数据丢失的风险,提高团队协作效率。

    配置库的备份与恢复借鉴.pdf

    总结以上内容,可以得出SVN备份与恢复策略的几个要点:定期进行完整的备份以及记录增量变化,使用计划任务自动执行备份,通过钩子脚本增强备份过程的自动化和灵活性,以及设置特定的备份脚本来简化备份过程。...

    SVN 工程同步器

    7. **备份与恢复**:仓库是代码的单一可信源,如果本地代码丢失或损坏,可以从仓库中恢复。 "SVN 工程同步器"可能提供了一些额外的特性,如自动化同步,使得团队成员无需手动执行`svn update`命令,即可保持工作...

Global site tag (gtag.js) - Google Analytics