6. バージョン管理 - Subversion - バックアップ - 定期的なバックアップ

 
6.1 概要
6.2 スクリプトの作成
6.3 crontab への登録

6.1 概要

 post-commit により毎回コミットしているような状態でない場合、定期的に同期をとるようにしておくべきです。  更新頻度と同期の頻度は同程度にしておくべきです。

6.2 スクリプトの作成

 同期元が FreeBSD であれば同期用のスクリプトを以下の要領で作成します。

プロンプト略
mkdir -pv /root/sh
touch /root/sh/svnsync.sh
chmod +x /root/sh/svnsync.sh
 svnsync.sh を以下のように記述します。

#!/bin/sh
#
echo "start"
date
/usr/local/bin/svnsync sync https://同期先/リポジトリ
#
/usr/local/bin/svnadmin lslocks 同期元ディレクトリ/リポジトリ
echo "end"
 svnadmin lslocks はロック中のファイルがある場合、出力するようにしています。  svnsync sync の際、同期しようとするファイルがロックされていると失敗する場合がありますので・・・。

6.3 crontab への登録

 ログ用のディレクトリを作成して

プロンプト略
mkdir -pv /var/log/svn
/etc/crontab
 を編集します。

0  0  *   *   *   root    /root/sh/svnsync.sh >> /var/log/svn/svnsync.log 2>&1
 上記の例だと毎日 00:00 に動きます。  00:00 はマシンが忙しい時刻の可能性が大きいのでもっとずらすべきかもしれません。  周期等、先頭で述べているように更新頻度に合わせて工夫します。  上記の例では、実行時のログを
/var/log/svnsync.log
 に出力します。  ログローテーション用のファイル
/usr/local/etc/newsyslog.conf.d/svnsync.conf
 を作成して以下のように編集します。

/var/log/svn/svnsync.log                   640  30    *    @T00  B
 てな感じでしょうか?  こちらも量的にローテーションさせるのか定期的にローテーションさせるかは、ログの量に合わせて工夫します。