Моим решением этого был другой подход с двумя передачами, где я обмениваю некоторое дисковое пространство. Я делаю rsync - единственный пакет записи на сервере, затем rsync сам пакетный файл месту назначения, цикличное выполнение, пока rsync не успешно выполняется. После того как пакет полностью по rsync - пакет чтения на месте назначения воссоздает все изменения.
Существуют некоторые непреднамеренные преимущества для этого для меня также:
потому что я более обеспокоен, что резервное копирование "существует", чем "применимо", я на самом деле не делаю пакета чтения на принимающем конце каждый день - большую часть времени, пакет является относительно маленьким
Я экспериментировал с - checksum-seed=1... Я мог бы неправильно читать документацию, но я думаю, что она делает пакетные файлы более syncable (т.е. когда я не делаю - пакет чтения любой данный день, пакет следующего дня синхронизирует быстрее, потому что пакет предыдущего дня является хорошей основой),
если пакет становится слишком большим для отправки "вовремя" по Интернету, я могу сеть с неавтоматическими переносами файлов он на внешнем диске. Вовремя я подразумеваю, что, если я не могу закончить пакет и читать, прежде чем резервное копирование следующего дня запускается.
хотя я лично не делаю этого, я мог иметь два удаленных резервных копий в отдельных местоположениях и отправить пакет им обоим.
GitHttp
- это класс в выпущенных версиях grack (последняя - 0.2) , который больше не существует в главной ветке проекта git.
Я подозреваю вас обновил ваш код грака, чтобы освоить HEAD без обновления config.ru
. Ваш config.ru
для мастера должен быть таким, как , с замененным путем к проекту:
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/lib')
use Rack::ShowExceptions
require 'grack'
require 'git_adapter'
config = {
:project_root => "/path/to/your/repos/",
:adapter => Grack::GitAdapter,
:git_path => '/usr/bin/git',
:upload_pack => true,
:receive_pack => true,
}
run Grack::App.new(config)