ページ

2021年1月13日水曜日

svnsync で定期的にSubversion のバックアップを取得する

これまでSubversion については,何度か取り上げてきたが,

WM×LI: Raspberyy Pi を Subversion のリポジトリサーバにして,systemd で自動起動するように設定する.
WM×LI: 【svnadmin dump】Subversionのリポジトリを別のサーバーに移行する.
WM×LI: Subversionで直前のコミットを取り消す.

今回はsvnsync コマンドを使用して,リモートで定期的にSubversion をバックアップを取るお話.

先日,WebArena IndigoでレンタルしているVPSをアップデート(apt upgrade)していたら,途中で突然停止し,その後アクセス不可,再起動不能になり,Subversionのリポジトリデータが全部吹っ飛んだので,やり方を調べた.

(最新のチェックアウトデータがあったので,最悪の事態は免れたが,リポジトリの履歴は全てパーになった...涙)

方法は以下の通り.

1. バックアップ用のディレクトリを作成
 $ mkdir backup

2. 作成したディレクトリにリポジトリを作成
 $ svnadmin create backup

3. hooks ディレクトリに移動して,設定ファイルをテンプレートからコピー
 $ cd backup/hooks/
 $ cp pre-revprop-change.tmpl pre-revprop-change

4. 設定ファイルの修正
 pre-revprop-change(以下の通り,修正)
------------------------------
(修正前)exit 1
(修正後)exit 0

5. svnsync の初期化コマンドを実行(URLはsvn://など適宜,合わせる)
 $ svnsync initialize file:///home/mirasuni/backup/ <バックアップするリポジトリのURL>
 Copied properties for revision 0.

6. svnsync の同期コマンドを実行(revision 1から始まり,最新リビジョンまで順にコピーされる)
 $ svnsync synchronize file:///home/mirasuni/Subversion/backup/
 ...
 ...
 ...
 Transmitting file data ..
 Committed revision 471.
 Copied properties for revision 471.

7. cron で毎日0時に同期コマンドが実行されるように設定する
 $ crontab -e
 ------------------------------
 0 0 * * * /usr/bin/svnsync synchronize file:///home/mirasuni/backup

以上

0 件のコメント:

コメントを投稿