0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

scm-manager で作成される svn リポジトリをバックアップする

Posted at

scm-manager で作成されるsvn リポジトリのディレクトリは単純にリポジトリ名ではなくハッシュか何かで作られていて、かつその情報が metadata.xml に格納され、リポジトリディレクトリが .../data にあるかと思いきや同じ ".../data" が2つ作成されているなどチョーめんどくさいのでどうにかする。

基本的にはプロジェクト情報が記述された metadata.xml を読み込んで対象ディレクトリを決定し、バックアップ名称も決める。

svn-backup-dumps.py に -i を渡しているが週1回程度フルバックアップになるようこのオプションなしで実行しないと差分リビジョンが増えすぎてつらいことになる

<?php
$backup_directory_base = '/home/vagrant/backup/';
$repository_directory_base = '/var/lib/scm/repositories/';
$svn_buckup = '/usr/local/bin/svn-backup-dumps.py';

$metadataFiles = glob($repository_directory_base. '*/metadata.xml');
foreach($metadataFiles as $metadataFile){
    $metadata = new SimpleXMLElement(file_get_contents($metadataFile));
    $backup_directory = $backup_directory_base.$metadata->namespace . "_" . $metadata->name;
    if (!is_dir($backup_directory)) {
        mkdir($backup_directory);
    }

    $repository_directory = $repository_directory_base . $metadata->id . '/data';
    $command = "{$svn_buckup}  -i -z -q {$repository_directory} {$backup_directory} > /dev/null &";

    exec($command);

}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?