Как настроить двунаправленную быструю синхронизацию файлов? - PullRequest
2 голосов
/ 03 апреля 2012

Для этого я пытаюсь использовать GIT.


Я пытаюсь разработать сценарий .sh (под linux) для автоматической фиксации всех изменений в репозитории git и удаления всех изменений в истории, кроме последней. Хранилище должно сохранять только данные последнего коммита и очищать всю предыдущую историю (теряя все данные).

Например, я фиксирую 3 файла:

  • файл1: 12 МБ;
  • файл2: 4 МБ;
  • файл3: 12 КБ;

После коммита размер моей папки .git составляет примерно 25 МБ;

Теперь я удаляю файл1 и файл2.

После следующего коммита моя рабочая копия составляет 12 КБ, а папка .git - 25 МБ.

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

Проблема в том, что мне нужно сделать это с ОДНОЙ НЕИНТЕРАКТИВНОЙ КОМАНДНОЙ ЛИНИЕЙ, потому что мне нужно сделать скрипт cron.

Просматривая форумы часами, я не нашел решения для этого вопроса.


Реальный вопрос: как настроить двунаправленную быструю синхронизацию файлов? Папка для синхронизации большая (20 ГБ с тысячами файлов). Первая синхронизация будет очень медленной, без проблем, но вторая должна быть быстрее, не более 30-40 секунд, сравнивая только измененные файлы ...

Спасибо за любую помощь.

Ответы [ 3 ]

1 голос
/ 18 августа 2013

Как настроить быструю двунаправленную синхронизацию файлов, будет osync. Osync является двунаправленной синхронизацией файлов на основе rsync и будет использовать алгоритм обновления rsync, чтобы сэкономить некоторую пропускную способность для распространения только изменений. Проверьте это в http://www.netpower.fr/osync

1 голос
/ 16 ноября 2013

Этот скрипт Python, который я написал, может помочь. Попробуйте!

https://github.com/dooblem/bsync

1 голос
/ 03 апреля 2012

Работайте быстро

Используйте AeroFS или unison .

Индивидуальное решение

Используйте inotify для Linux или его эквивалент на других платформах , чтобы получать уведомления об изменениях в вашей файловой системе, затем используйте librsync , libssh или аналогичный для передачи файловчерез.

В зависимости от вашего использования, вы можете на самом деле избежать запуска rsync в задании cron.Алгоритм rsync чертовски умный, и при использовании будет передавать очень мало ненужных значений.Если вы настроите его правильно, он будет смотреть только в последний раз.

Я бы определенно рекомендовал использовать аэрофотоснимки или унисон, прежде чем пытаться составить специальное решение.

...