讲师中心 微信公众号
AI工具推荐 视频效率加速

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

浅墨酱_9961

浅墨酱_9961

发布时间:2026-06-13 22:28:26

|

205人浏览过

|

来源于php中文网

原创

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。

  • 进入备份库的 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,都会自动触发一次增量同步。备份库与源库保持完全镜像,且物理隔离于异地机房,满足灾备要求。

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

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

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

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

1700

2023.07.06

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

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

2779

2023.09.14

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

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

99

2026.06.10

Java 单元测试
Java 单元测试

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

1026

2025.10.24

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

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

0

2026.10.08

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

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

120

2026.09.30

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

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

100

2026.09.30

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

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

80

2026.09.30

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

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

80

2026.09.30

热门下载

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

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn