如何配置SVN服务端自动触发异地物理机房的同步备份

浅墨酱_9961

浅墨酱_9961

2026-06-13

205人浏览

原创

svnsync配合post-commit钩子可实现实时异地物理备份:需确保网络连通(推荐http/https)、备份库启用pre-revprop-change(仅exit 0)、专用同步账户最小权限配置、初始化后通过钩子自动触发增量同步。

如何配置svn服务端自动触发异地物理机房的同步备份

用 svnsync 配合钩子脚本,就能让源SVN服务器在每次提交时自动把变更同步到异地物理机房的备份服务器上。核心是确保两地网络可达、权限配置正确、钩子启用到位——不依赖定时任务,真正实现实时物理备份。

确保异地网络连通与访问协议可用

异地机房之间必须能稳定通信。推荐使用 HTTP(S) 协议(比 svn:// 更易穿越防火墙和 NAT),避免用 file:// 或 svn://(后者常受限于端口和路由)。

  • 在备份服务器上部署 SVN + Apache/HTTP 服务(如 VisualSVN Server 或自建 httpd + mod_dav_svn),开放对应端口(如 80 / 443 / 8443)
  • 源服务器需能 curl 或浏览器访问备份库 URL,例如:curl -I http://backup-ip:8443/svn/myrepo 应返回 200
  • 若用 HTTPS,首次初始化时可能提示证书问题,输入 P 接受即可(或提前导入证书)

备份库必须启用 revision 属性修改权限

svnsync 在同步过程中会修改 svn:log 等版本属性,否则初始化或同步会失败,报错类似 E165006: Repository has not been enabled to accept revision propchanges。

AutoDraw
AutoDraw

一款结合机器学习识别能力的在线绘图工具,可以理解用户的简单草图并推荐对应的规范图形,降低绘图门槛。

下载
  • 进入备份库的 hooks/ 目录(如 /var/svn/backup/myrepo/hooks/ 或 D:\Repositories\myrepo\hooks\)
  • 复制 pre-revprop-change.tmpl 为 pre-revprop-change(Linux)或 pre-revprop-change.bat(Windows)
  • 内容仅保留一行:exit 0(Linux)或 exit 0(Windows bat 文件)
  • Linux 下执行:chmod +x pre-revprop-change;Windows 下确保文件可执行(无权限拦截)

两边创建专用同步账户并配好权限

不要复用开发账号,单独建一个 svnsync 类账户,最小权限原则:

  • 源库:该账户只需 读权限(authz 中设为 =r 或只读组),svnserve.conf 中 anon-access = none,auth-access = read
  • 备份库:该账户需 读写权限(authz 中设为 =rw),且 realm 名称可不同,但密码必须一致
  • 两个库的 passwd 文件中都添加同一用户名密码,例如:svnsync = mysecurepass

初始化 + 钩子自动触发同步

完成上述准备后,按顺序执行:

  • 初始化关联(在源服务器或任意能访问两端的机器执行):
    svnsync init --username svnsync --password mysecurepass http://backup-ip:8443/svn/myrepo https://source-ip/svn/myrepo
  • 首次全量同步(建议停写期间执行,或选业务低峰):
    svnsync sync http://backup-ip:8443/svn/myrepo
  • 配置自动触发:在源库 hooks/post-commit(Linux)或 post-commit.bat(Windows)末尾追加:
    svnsync sync --non-interactive http://backup-ip:8443/svn/myrepo --username svnsync --password mysecurepass > /dev/null 2>&1 &(Linux)
    或
    svnsync sync --non-interactive http://backup-ip:8443/svn/myrepo --username svnsync --password mysecurepass > nul 2>&1(Windows)
  • 赋予钩子可执行权限(Linux):chmod +x post-commit

配置完成后,每次向源库 commit,都会自动触发一次增量同步。备份库与源库保持完全镜像,且物理隔离于异地机房,满足灾备要求。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

1720

6

SVN忽略文件设置
SVN忽略文件设置

SVN忽略文件设置方法:1、打开SVN客户端,并导航到项目;2、在项目窗口中,右键单击要忽略的文件或文件夹,并选择"TortoiseSVN"->"属性";3、在属性窗口中,选择"svn:ignore"属性,并点击"编辑"按钮;4、在编辑窗口中,输入要忽略的文件或文件夹的名称,每行一个。可以使用通配符来匹配多个文件或文件夹;5、点击"确定&qu

2023.09.14

2799

7

Apache Subversion(SVN)入门部署与版本控制实践专题
Apache Subversion(SVN)入门部署与版本控制实践专题

PHP中文网为您提供Apache Subversion(SVN)入门部署与版本控制实践专题。作为经典的集中式版本控制系统,我们为您系统梳理了SVN在Linux与Windows双平台下的服务端搭建全流程,涵盖svnserve轻量服务与Apache HTTP Server(mod_dav_svn)模块化部署方案,以及基于authz与passwd文件的细粒度路径级权限控制体系。

2026.06.10

99

6

Java 单元测试
Java 单元测试

本专题聚焦 Java 在软件测试与持续集成流程中的实战应用,系统讲解 JUnit 单元测试框架、Mock 数据、集成测试、代码覆盖率分析、Maven 测试配置、CI/CD 流水线搭建(Jenkins、GitHub Actions)等关键内容。通过实战案例(如企业级项目自动化测试、持续交付流程搭建),帮助学习者掌握 Java 项目质量保障与自动化交付的完整体系。

2025.10.24

1046

26

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

2026.10.08

40

20

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

140

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

140

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

100

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

100

26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习