![如何在没有本地副本的情况下远程备份 svn](https://linux22.com/image/576680/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E6%9C%AC%E5%9C%B0%E5%89%AF%E6%9C%AC%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E8%BF%9C%E7%A8%8B%E5%A4%87%E4%BB%BD%20svn.png)
我有一个 Subversion 服务器,磁盘空间不足。我想存档一个较大的存储库以释放一些空间,因此我需要在远程服务器上对存储库文件进行完整备份。不幸的是,存储库相当大,这限制了几个简单的选项:
- 我无法使用 svn dump 或 svn hotcopy,因为没有足够的本地存储空间来保存存储库的完整副本。
- 我可以使用 rsync,但 svn 服务器使用的是较旧的 Berkeley db,这似乎会造成备份损坏。虽然 repo 并未被积极使用,但有人仍有可能在 rsync 运行时对其进行更改。在这种情况下,停止 SVN 服务不是一个好选择,因为服务器使用率很高。
- 我以前使用过一种名为 rsvndump 的实用程序,我的经验是,虽然它对于这种情况非常理想,但它往往会在大型存储库上过早且持续地死亡,导致档案无法使用。
- svnsync 似乎合理,但需要在远程服务器上进行额外的配置步骤,并且与实际数据转储相比,存档似乎有些脆弱。对于本质上是一次性的任务来说,它似乎有点过度。
我正在寻找是否有办法通过 rsync 或 ssh 管道运行 svndump 或 hotcopy,以在远程主机上创建“本地”存档。备份必须有效,因为一旦磁盘空间问题得到解决,我将需要它来恢复。
答案1
我无法使用 svn dump 或 svn hotcopy,因为没有足够的本地存储空间来保存存储库的完整副本。
该svnadmin dump
命令将输出发送到标准输出。做类似的事情很简单ssh svn-server.example.org svnadmin dump > /tmp/svn_backup
。转储输出将存在于您运行 SSH 的计算机上,而不是服务器上。您不需要 SVN 服务器上的任何额外空间。