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);
}