Как я создаю резервную копию удаленного репозитория SVN

Я в настоящее время перемещаю свой сервер SVN с моего домашнего сервера на мой удаленный сервер, таким образом, я могу получить доступ к нему более легко от других местоположений. Мой удаленный сервер не сохранен так, я хочу, регулярно поддерживают его до моего домашнего сервера.

Удаленный сервер является сервером Windows 2003. Домашним сервером является Windows Home Server.

Что лучший способ состоит в том, чтобы сделать это? я могу заставить свой домашний сервер получать дамп удаленного сервера каждую ночь? Пропускная способность не является огромным соображением, но если бы я мог бы просто скопировать какой-либо новый checkins в сервер SVN на моем домашнем сервере, который был бы прекрасен.

Любые приветствующиеся предложения.

47
задан Nakilon 25 September 2014 в 17:05
поделиться

6 ответов

Просто используйте команду svnsync .

Сначала создайте новый репозиторий на своем домашнем компьютере.

svnadmin create c:\backuprepo

Или в Unix:

svnadmin create ./backuprepo

Затем создайте файл с именем pre-revprop-change.bat:

echo exit 0 > c:\backuprepo\hooks\pre-revprop-change.bat

Или в Unix:

echo -ne '#!/bin/sh\nexit 0' > ./backuprepo/hooks/pre-revprop-change
chmod ugo+x ./backuprepo/hooks/pre-revprop-change 

затем инициализируйте синхронизацию:

svnsync init file:///c:/backuprepo https://url/of/your/repository

Или в Unix:

svnsync init file:///Volumes/volumelabel/backuprepo https://url/of/your/repository

После этого вы можете просто запускать

svnsync sync file:///c:/backuprepo

один раз в день или около того, и вы будете получать только те изменения, которых еще нет в вашем репозитории резервных копий.В первый раз это займет некоторое время, но после того, как вы синхронизируете свой репозиторий резервных копий с реальным, синхронизация займет всего несколько секунд, потому что синхронизировать нужно только те ревизии, которые являются новыми.

116
ответ дан 26 November 2019 в 19:14
поделиться

rsync (или DeltaCopy , который является пользовательским интерфейсом Windows поверх него) было бы хорошим выбором для инкрементного копирования полный репозиторий на уровне файловой системы.

Вы также можете использовать svnsync для копирования новых ревизий непосредственно с одного сервера SVN на другой.

7
ответ дан 26 November 2019 в 19:14
поделиться

Да. используйте директиву с помощью директивы .

Если вы ищете с термином "c # alias", вы также легко найдете ответ.

-121--2329132-

Можно использовать скрипт на удаленном сервере, который выгружает репозиторий, а затем копирует его на локальный компьютер (или оставляет в заданном месте для копирования локального компьютера)

Можно синхронизировать резервные каталоги с rsync или scp .

Сценарий может выполняться с "Запланированными задачами" и может создавать файлы с уникальными именами резервных копий, которые позже синхронизируются вышеупомянутым способом с помощью локального компьютера. (а затем, возможно, удалено)

-121--1081473-

EFraim упомянул rsync, пока я писал это так, что это покрыто.

Если вы не хотите работать с этим, Книга Подрывной деятельности предлагает свалка svnadmin - возрастающий выбор, объясненный здесь:

Однако, чтобы сделать это успешно, вы должны манипулировать числами пересмотра - rsync'ing, сырые справочники данных о хранилище будут легче.

Жесткая часть, вероятно, будет настраивать rsync, чтобы локальный и удаленный компьютер мог безопасно взаимодействовать (т.е. настраивать службу SSH на сервере 2003). DeltaCopy, которую упоминает Вим, очень интересна и будет моим первым выстрелом; только для работы в командной строке, вот howto на , как запустить Rsync как службу в Windows 2003 .

2
ответ дан 26 November 2019 в 19:14
поделиться

Вы можете использовать скрипт на удаленном сервере, который создает дамп репозитория, затем копирует его на ваш локальный компьютер (или оставляет его в заранее определенном месте для копирования на ваш локальный компьютер)

Вы можете синхронизировать резервные каталоги с помощью rsync или scp.

Сценарий может быть запущен с помощью "Запланированных задач" и может создавать уникально названные файлы резервных копий, которые позже будут синхронизированы вышеупомянутым способом на вашем локальном компьютере. (а затем, возможно, удалены)

2
ответ дан 26 November 2019 в 19:14
поделиться

Я бы использовал либо svnsync , либо svnadmin hotcopy , поскольку оба этих метода гарантированно копируют действительные данные из репозитория, даже если транзакция выполняется. Другие методы синхронизации файлов могут быть не такими надежными, в зависимости от формата репозитория.

1
ответ дан 26 November 2019 в 19:14
поделиться

создайте свой локальный репозиторий

svnadmin create / Users / jsmith / repo

создайте пустой сценарий ловушки pre-revprop-change

echo '#! / Bin / bash'> / Users / jsmith / repo / hooks / pre-revprop-change

сделать скрипт ловушки pre-revprop-change исполняемым

chmod + x / Users / jsmith / backup / hooks / pre-revprop-change

инициализировать svnsync

svnsync файл инициализации: //// Users / jsmith / repo https://www.smith.com/repo

синхронизировать репозитории

svnsync файл синхронизации: //// Users / jsmith / repo

11
ответ дан 26 November 2019 в 19:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: