Можно ли проанализировать размер хранилища SubVersion?
Можно ли узнать, сколько дискового пространства использует каждый проект в хранилище SubVersion?
Я могу проверить рабочую копию каждого проекта и посмотреть, какой размер занимает каждый проект, но я не думаю, что он охватывает общий размер проекта (все ревизии).
Я могу заглянуть в каталог "db" репозитория, но ни один из файлов там не имеет смысла - я не думаю, что их можно использовать, чтобы выяснить, сколько места занимает каждый проект.
Я попробовал svn ls --verbose
команда, но размер, который она мне дает, это просто размер фактических файлов в ревизии заголовка, я не думаю, что он включает в себя все ревизии.
Может быть, это невозможно, но я подумала, что спрошу.
Заранее спасибо!
5 ответов
Единственное, что приходит мне в голову, это:
создать новый временный пустой репозиторий
svnadmin выгрузит старый репозиторий, отфильтрует его, чтобы сохранить только один проект с svndumpfilter, и импортирует его в новый репозиторий
посмотрите на размер нового хранилища, затем удалите его
Я использовал это недавно, но немного изменил, чтобы быть более точным
svn list -vR svn://server/repo/somedir | awk '{tmp=match($3,/[0-9]/);if(tmp){sum+=$3; i++}} END {print "\ntotal size= " sum/1024000" MB" "\nnumber of files= " i/1000 " K"}'
я использовал
{tmp=match($3,/[0-9]/)
вместо если
($3 !="")
так как это дает более точное количество файлов
Если вы используете -r
вариант, вы можете указать ревизию.
Например, ревизия 1000:
svn ls -vR -r 1000
Если у вас есть доступ к серверному терминалу, вы можете использовать du (используется диск):
du -sh /var/svn-repos/project-doomsday
это дает вам общий объем пространства, используемого этим репо на сервере, включая обычно небольшую базу данных.
Размер хранилища можно узнать с помощью следующей команды.
Хотя это не дает точных результатов все время, я обнаружил, что это полезно в большинстве случаев.
svn list -vR svn://server/repo/somedir | awk '{if ($3 !="") sum+=$3; i++} END {print "\ntotal size= " sum/1024000" MB" "\nnumber of files= " i/1000 " K"}'.