svnadmin は Subversion(SVN)のリポジトリ本体を直接操作する管理者向けコマンドです。新規作成、バックアップ(dump/hotcopy)、検査(verify)、修復(recover)、圧縮・最適化(pack/upgrade)などを行います。
実務では、サーバ上でのリポジトリ新設・移行・バックアップ/リストアや、障害発生時の検証・修復に使います。
構文(Syntax)
# 基本形
svnadmin SUBCOMMAND REPO_PATH [OPTIONS...]
# 代表的なサブコマンド
svnadmin create REPO_PATH [--fs-type fsfs|fsx|bdb] [--compatible VER]
svnadmin hotcopy SRC_REPO DST_REPO [--clean-logs]
svnadmin dump REPO_PATH [-r REV[:REV]] [--incremental] [--deltas] > dumpfile
svnadmin load REPO_PATH [--parent-dir DIR] [--ignore-uuid|--force-uuid]
svnadmin verify REPO_PATH [-r REV[:REV]] [--keep-going]
svnadmin recover REPO_PATH
svnadmin pack REPO_PATH
svnadmin upgrade REPO_PATH
svnadmin setuuid REPO_PATH [NEW-UUID]
svnadmin setrevprop REPO_PATH -r REV NAME VALUE [--use-pre-commit-hook --use-post-commit-hook]
svnadmin lstxns REPO_PATH
svnadmin rmtxns REPO_PATH TXN...
REPO_PATHはリポジトリディレクトリ(作業コピーではありません)。- 出力リダイレクト(
dump > file)やパイプ(dump | gzip)と併用します。
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
create | 新しいリポジトリを作成 | svnadmin create /svn/repos/projectA |
--fs-type fsfs | FSFS/FSX などのストレージ種別を指定(既定は FSFS 系) | svnadmin create /svn/repos --fs-type fsfs |
--compatible VER | 互換性レベルを指定(古いクライアントとの互換保持) | svnadmin create /svn/repos --compatible 1.8 |
hotcopy SRC DST | ライブリポジトリから安全に全体コピー(バックアップ) | svnadmin hotcopy /svn/repos /backup/repos_2025-09-21 |
dump -r X[:Y] | ダンプを作成。範囲指定や増分(--incremental)対応 | svnadmin dump /svn/repos -r 0:HEAD > full.dump |
dump --incremental | 直前リビジョンとの差分だけをダンプ | svnadmin dump /svn/repos -r 101:HEAD --incremental > inc.dump |
dump --deltas | 差分形式でダンプ(ファイルサイズ節約) | svnadmin dump /svn/repos --deltas > repo.dump |
load | ダンプをリストア(空のリポジトリ推奨) | svnadmin load /svn/newrepo < repo.dump |
load --parent-dir DIR | ダンプ内容を DIR/ 配下にロード | svnadmin load /svn/newrepo --parent-dir migrated < repo.dump |
load --ignore-uuid | ロード時に新UUIDを発行 | svnadmin load /svn/newrepo --ignore-uuid < repo.dump |
load --force-uuid | ダンプのUUIDを強制的に採用 | svnadmin load /svn/newrepo --force-uuid < repo.dump |
verify [-r] | 破損がないか検査(範囲指定可) | svnadmin verify /svn/repos -r 0:HEAD |
recover | 予期せぬ停止後の回復(排他で実施) | svnadmin recover /svn/repos |
pack | FSFS のシャードをパックして容量削減 | svnadmin pack /svn/repos |
upgrade | リポジトリ形式を最新化(新機能有効化) | svnadmin upgrade /svn/repos |
setuuid | リポジトリUUIDを設定/変更 | svnadmin setuuid /svn/repos |
setrevprop | リビジョンプロパティを設定(履歴書換え) | svnadmin setrevprop /svn/repos -r 120 svn:log "fix typo" |
lstxns / rmtxns | 未コミットトランザクションの列挙/削除 | svnadmin rmtxns /svn/repos 3a1-txn |
実行例
リポジトリを新規作成して初期コミット
説明:サーバ上に FSFS のリポジトリを作り、初期レイアウトを投入します。
コマンド
# リポジトリ作成
sudo mkdir -p /svn/repos && sudo svnadmin create /svn/repos/projectA
sudo chown -R svn:svn /svn/repos/projectA
# 作業コピーから初期コミット(例: file:// アクセス)
svn checkout file:///svn/repos/projectA /tmp/wc
mkdir -p /tmp/wc/trunk /tmp/wc/branches /tmp/wc/tags
svn add /tmp/wc/*
svn commit -m "Initial layout" /tmp/wc
出力例:Committed revision 1.
フルダンプと増分ダンプを取得(バックアップ)
説明:完全ダンプ+直近の差分だけを週次で取得する例。
コマンド
# まずフルダンプ
svnadmin dump /svn/repos/projectA --deltas > /backup/projectA_full.dump
# 以降は増分(例: 101~HEAD)
svnadmin dump /svn/repos/projectA -r 101:HEAD --incremental --deltas \
| gzip > /backup/projectA_inc_101_HEAD.dump.gz
別環境へリストア(移行)
説明:空のリポジトリへロード。ダンプ側の UUID を維持したい場合は --force-uuid。
コマンド
svnadmin create /svn/newrepo/projectA
svnadmin load /svn/newrepo/projectA --force-uuid < /backup/projectA_full.dump
ライブバックアップ(hotcopy)
説明:稼働中でも整合性を保って丸ごとコピーします。
コマンド
svnadmin hotcopy /svn/repos/projectA /backup/projectA_hotcopy_2025-09-21
破損検査と修復
説明:検査でエラーが出た場合、サービス停止の上で recover を実行。
コマンド
svnadmin verify /svn/repos/projectA -r 0:HEAD
# 問題があれば
sudo systemctl stop svnserve # または Apache を停止
svnadmin recover /svn/repos/projectA
エラー例:作業コピーに対して実行してしまった
説明:svnadmin はリポジトリに対して動かします。作業コピーを指定すると失敗します。
コマンド
svnadmin verify /home/user/workcopy
echo $?
出力例(例)
svnadmin: E160000: '.../workcopy' is not a repository
1
関連コマンド
svn:クライアント操作(checkout/commit/merge 等)。svnserve/mod_dav_svn:SVN サーバ(独立デーモン / Apache モジュール)。svnlook:リポジトリ内容を読み取り専用で覗く管理ツール。svnsync:リポジトリ間のミラーリング。svndumpfilter:ダンプからパスを抽出/除外して再構成。svnversion:作業コピーの混在リビジョンを表示。
備考
- どこで実行するか:
svnadminは**サーバ側(リポジトリがあるホスト)**で実行します。NFS 等のリモートFS上のリポジトリ操作は推奨されません。 - 権限:リポジトリディレクトリの所有者/パーミッションに注意。サーバプロセス(例:
svnユーザー)と権限を合わせておくと事故を防げます。 - ストレージ種別:現在は FSFS/FSX が一般的。BDB は旧来・非推奨(古い環境のみ)。
- オンライン/オフライン:
dumpやhotcopyはオンラインで安全に取得可能。recoverやupgradeは排他が必要です。 - UUID/履歴書換え:
setuuidやsetrevpropは慎重に。ミラーやクライアントのキャッシュへ影響します(運用ルールを決め、監査ログを残しましょう)。 - 設定ファイル:
create直後にREPO_PATH/conf/(svnserve.conf,passwd,authz等)が生成されます。公開方法(svnserve/Apache)に応じて設定します。

コメント