2009-09-10 4 views
4

Прямо сейчас я использую Windows XP. Если я просто скопировал всю папку репозитория в визуальном SVN, после того, как сервер не работает, как я могу восстановить его через папку с резервным хранилищем? еще одно лучшее решение для резервного копирования и восстановления в visual svn?Как создать резервную копию и восстановить исходный код в svn?

Кстати, любой способ резервного копирования и восстановления в визуальном контроле источника?

ответ

1

Вы можете просто скопировать весь каталог. Файлы - это файлы, в них нет ничего волшебного.

Если вы хотите сделать что-то более сложное, например, отредактировать содержимое репозитория каким-то образом перед восстановлением, вам понадобится свалка и загрузка.

+5

Если вы используете метод copy-file, в то время как репозиторий «горячий», вы можете получить поврежденные данные. Некоторые данные перед фиксацией и некоторые данные после совершения. –

+1

Я бы не рекомендовал это. Репозиторий SVN должен обрабатываться только с помощью команды svnadmin. –

+0

Это не должно быть принятым ответом по вышеуказанным причинам. – teroi

25
svnadmin dump /path/to/repository | bzip2 -9c > svn-backup.bz2 

Конечно, шаг сжатия является необязательным.

Основным преимуществом этого метода «копировать дерево», рекомендуемого в другом ответе, является то, что формат «дампа» Subversion является лучшим архивным форматом, чем большинство форматов базы данных, используемых Subversion под капотом в своем репозитории. (Это компромисс между скоростью и простотой.) Вы можете прочитать файл дампа в текстовом редакторе, легко проанализировать его, и — самое главное — импортировать его в другой репозиторий Subversion, используя другой сервер базы данных.

Восстановить вышеуказанный файл с:

bzip2 -dc svn-backup.bz2 | svnadmin load /path/to/repository 
+0

Итак, если я использую это для сброса моего репозитория и беру полученный файл на новый компьютер с той же структурой каталогов, я могу проверить эти файлы из репозитория? (Мой репозиторий довольно велик, и история уходит в прошлое. Я хочу просто начать все сначала, но сохранить текущий репозиторий в качестве резервной копии), см. Мой вопрос: http://stackoverflow.com/questions/29607055/delete-older -svn-files-from-reposititory –

2

Вы должны использовать svnadmin hotcopy создать резервную копию хранилища.

+0

Я пробовал, но системная подсказка «не может найти файл ...../format» – MemoryLeak

+1

Действительно ли это так? Все, что я читал, в т.ч. примечания к списку рассылки от К. Фогеля и Б. Коллинза-Суссмана, говорит, что «svn dump» отлично подходит для резервного копирования * данных *, хранящихся в репозитории. Если вы хотите создать резервную копию данных блокировки или некоторых таких, вам может понадобиться hotcopy, но почти никто не делает, правильно? – khedron

1

Это то, что я использую:

#!/bin/bash 

mkdir /tmp/backup_svn 

for dir in /var/www/svn/*/ 
    do 
     dir=${dir%*/} 
     svnadmin dump "${dir}" > "/tmp/backup_svn/${dir##*/}.dmp" 
    echo "--- Dump ${dir##*/} done!" 
done 

Чтобы восстановить дамп вам нужно создать папку де репо перед:

svnadmin create /var/www/svn/test 

И им:

svnadmin load /var/www/svn/test/ < /tmp/backup_svn/test.dmp 

Этот метод будет восстановить все изменения/теги/филиалы в вашем репозитории.

+0

Это хороший вариант для сбрасывания всех SVN. Вы можете даже добавить к нему сжатие. –

Смежные вопросы