序文
SVN が占有するスペースは、プロジェクト バージョンの反復に伴って増加します. 履歴レコードの各バージョンが保存されるため、廃止されたディレクトリが削除され、ローカルに提出されても、余分なスペースが解放されることはありません.バージョン番号が追加され、占有スペースが大きくなります。
どうすれば容量を小さくできますか? 最も単純で失礼な方法は、履歴レコードを破棄することです. 最新バージョンで削除された破棄されたディレクトリは、直接アップロードされて新しい倉庫が作成されるため、操作後にすべての人が再ダウンロードする必要があります.過去の記録を保持したい場合は、今日説明したバックアップ、フィルター、および再インポートの方法を使用する必要があります。
簡単な手順
サーバー上の svn リポジトリ A のパスが であるとします。/data/svndata/repos/A
削除するファイルのパスは です/arts/tmp/pictures
。フィルタリングするフォルダーのパスは/
で、実際には開始ディレクトリを参照しますA
。
操作手順は次のとおりです。
//1.备份
svnadmin dump /data/svndata/repos/A > A.dump
//2.过滤掉废弃目录
cat A.dump | svndumpfilter exclude /arts/tmp/pictures > B.dump
//3.创建新的库
svnadmin create /data/svndata/repos/B
//4.导入新库
svnadmin load /data/svndata/repos/B < B.dump
//5.重命名老库
mv A A_backup
//6.重命名新库代替老库
mv B A
操作例
運用プロセスは実在のSVNウェアハウスを利用しています.上記の手順で1回だけ試してみました.主に凡例のように時間がかかるかどうかを確認したい.ウェアハウス名はR,データ量は115G,全部で 10843 バージョンです。
-
バックアップファイルのエクスポート
# svnadmin dump/data/svndata/repos/R > r.dump * Dumped revision 0. * Dumped revision 1. * Dumped revision 2. ...
エクスポートが完了するまでに 2 時間 40 分かかり、エクスポート ファイルのサイズは 514G で、データ量は 5 倍近くに増加しました。
-
指定したディレクトリを除外する
# cat r.dump | svndumpfilter exclude /arts/tmp/pictures > r-exclude.dump Excluding prefixes: '/arts/tmp/pictures' Revision 0 committed as 0. Revision 1 committed as 1. Revision 2 committed as 2. Revision 3 committed as 3. Revision 4 committed as 4. ...
/arts/tmp/pictures ディレクトリを除外します。合計で 58 分かかり、除外されたバックアップ ファイルのサイズは 442G です。
-
新しいステージング リポジトリを作成する
# svnadmin create r-new
-
フィルタリングされたバックアップ ファイルを新しいリポジトリにインポートする
# svnadmin load ./r-new < r-exclude.dump <<< Started new transaction, based on original revision 1 * editing path : arts ... done. * editing path : develop ... done. ------- Committed revision 1 >>> <<< Started new transaction, based on original revision 2 * editing path : develop/client ... done. * editing path : develop/server ... done. ------- Committed revision 2 >>> ...
インポート作業は初版から順次適用され、合計4時間かかりました。
このプロセスは非常に遅く、完了するまでに 8 時間近くかかり、多くのディスク容量が必要です. さらに、バージョン番号が 10,000 近く、サイズが 800G のライブラリがあり、それをエクスポートするのに 41 時間かかりました. 24 コア マシン。バックアップ ファイルのサイズは 4.5T です。後で試しません。ディスクがほぼいっぱいです。
要約する
- バックアップ
svnadmin dump /data/svndata/repos/A > A.dump
- フィルター
cat A.dump | svndumpfilter exclude /arts/tmp/pictures > B.dump
- ジャンシン
svnadmin create /data/svndata/repos/B
- 輸入
svnadmin load /data/svndata/repos/B < B.dump
元気な子が本当に可愛いですが、リズムをコントロールできるようにまだまだ大きくなりたいです今は操り人形のように見えますが、足枷を打破しようとしています〜