バックアップは以下の二種類の方法で行います。
バックアップしたデータを rsync で別マシンにコピーします。$ crontab -e起動したエディタに以下のような感じで入力する。
SHELL=/bin/sh # 毎日朝6時にバックアップする。 0 6 * * * /home/svnbackup/backup_svn.sh
#!/bin/sh # svnadmin のある場所を指定する。 # svn-backup-dumps.py は 内部で svnadmin を呼び出すので # svnadmin へのパスを通す必要があります。 PATH=$PATH:/usr/bin # python のパス PYTHON=/usr/bin/python # repository path REPOS=/var/svn/svnrepos # svn-backup-dumps.py のパス SVNBACKUPDUMPS=/usr/bin/svn-backup-dumps.py # バックアップ先 BACKUPDIR=/home/svnbackup/fullbackup # スクリプトの実行前にディレクトリを作成しておく mkdir -p $BACKUPDIR # backup svn repository $PYTHON $SVNBACKUPDUMPS $REPOS $BACKUPDIR
#!/bin/sh # # POST-COMMIT HOOK # # The post-commit hook is invoked after a commit. Subversion runs # this hook by invoking a program (script, executable, binary, etc.) # named 'post-commit' (for which this file is a template) with the # following ordered arguments: # # [1] REPOS-PATH (the path to this repository) # [2] REV (the number of the revision just committed) # .... # REPOS="$1" REV="$2" # svnadmin のある場所を指定する。 # svn-backup-dumps.py は 内部で svnadmin を呼び出すので # svnadmin へのパスを通す必要があります。 PATH=$PATH:/usr/bin # python のパス PYTHON=/usr/bin/python # svn-backup-dumps.py のパス SVNBACKUPDUMPS=/usr/bin/svn-backup-dumps.py # バックアップ先 BACKUPDIR=/home/svnbackup/incbackup # スクリプトの実行前にディレクトリを作成しておいてください。 # このスクリプトのなかで以下のコマンドを実行するようにしても # いいかもしれません。 # mkdir -p $BACKUPDIR # # その際、post-commit が実行されるユーザーの権限で書き込みが # できるように設定しておいてください。 # 例: # Apache(mod_dav_svn) を使う場合 : apache or nobody # svnserve を使う場合 : 多分 svn (未確認) # # backup svn repository $PYTHON $SVNBACKUPDUMPS -r $REV $REPOS $BACKUPDIR
# chown svnbackup:apache /home/svnbackup/incbackup $ chmod 775 /home/svnbackup/incbackup $ chmod 755 /home/svnbackup
リポジトリをダンプしてファイルにバックアップした後、可能なら rsync で別マシンにバックアップしましょう。
同じマシンの同じハードディスクにバックアップを置いている場合、 ハードディスククラッシュからデータを救うことはできません。 同じマシン内でも、別のバードディスクに保存すれば、リスクを 軽減できますが、別マシンにした方が安心です。
rsync を使うことにより、効率的に別マシンにバックアップを 取ることができます。このページでは rsync の具体的な方法は 説明しませんので、以下のリンク等を参照してください。