Я в настоящее время перемещаю свой сервер SVN с моего домашнего сервера на мой удаленный сервер, таким образом, я могу получить доступ к нему более легко от других местоположений. Мой удаленный сервер не сохранен так, я хочу, регулярно поддерживают его до моего домашнего сервера.
Удаленный сервер является сервером Windows 2003. Домашним сервером является Windows Home Server.
Что лучший способ состоит в том, чтобы сделать это? я могу заставить свой домашний сервер получать дамп удаленного сервера каждую ночь? Пропускная способность не является огромным соображением, но если бы я мог бы просто скопировать какой-либо новый checkins в сервер SVN на моем домашнем сервере, который был бы прекрасен.
Любые приветствующиеся предложения.
Просто используйте команду 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
один раз в день или около того, и вы будете получать только те изменения, которых еще нет в вашем репозитории резервных копий.В первый раз это займет некоторое время, но после того, как вы синхронизируете свой репозиторий резервных копий с реальным, синхронизация займет всего несколько секунд, потому что синхронизировать нужно только те ревизии, которые являются новыми.
rsync (или DeltaCopy , который является пользовательским интерфейсом Windows поверх него) было бы хорошим выбором для инкрементного копирования полный репозиторий на уровне файловой системы.
Вы также можете использовать svnsync для копирования новых ревизий непосредственно с одного сервера SVN на другой.
Да. используйте директиву с помощью директивы
.
Если вы ищете с термином "c # alias", вы также легко найдете ответ.
-121--2329132-Можно использовать скрипт на удаленном сервере, который выгружает репозиторий, а затем копирует его на локальный компьютер (или оставляет в заданном месте для копирования локального компьютера)
Можно синхронизировать резервные каталоги с rsync или scp .
Сценарий может выполняться с "Запланированными задачами" и может создавать файлы с уникальными именами резервных копий, которые позже синхронизируются вышеупомянутым способом с помощью локального компьютера. (а затем, возможно, удалено)
-121--1081473-EFraim упомянул rsync, пока я писал это так, что это покрыто.
Если вы не хотите работать с этим, Книга Подрывной деятельности предлагает свалка svnadmin - возрастающий
выбор, объясненный здесь:
свалка svnadmin - возрастающий
Однако, чтобы сделать это успешно, вы должны манипулировать числами пересмотра - rsync'ing, сырые справочники данных о хранилище будут легче.
Жесткая часть, вероятно, будет настраивать rsync, чтобы локальный и удаленный компьютер мог безопасно взаимодействовать (т.е. настраивать службу SSH на сервере 2003). DeltaCopy, которую упоминает Вим, очень интересна и будет моим первым выстрелом; только для работы в командной строке, вот howto на , как запустить Rsync как службу в Windows 2003 .
Вы можете использовать скрипт на удаленном сервере, который создает дамп репозитория, затем копирует его на ваш локальный компьютер (или оставляет его в заранее определенном месте для копирования на ваш локальный компьютер)
Вы можете синхронизировать резервные каталоги с помощью rsync или scp.
Сценарий может быть запущен с помощью "Запланированных задач" и может создавать уникально названные файлы резервных копий, которые позже будут синхронизированы вышеупомянутым способом на вашем локальном компьютере. (а затем, возможно, удалены)
Я бы использовал либо svnsync
, либо svnadmin hotcopy
, поскольку оба этих метода гарантированно копируют действительные данные из репозитория, даже если транзакция выполняется. Другие методы синхронизации файлов могут быть не такими надежными, в зависимости от формата репозитория.
создайте свой локальный репозиторий
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