Автоматическая синхронизация файловой системы между разными машинами

Я использую несколько машин (настольный ПК и ноутбук) и ищу способ синхронизировать файлы, над которыми я работаю, между всеми машинами. Решение должно соответствовать следующим требованиям:

  • Работает как на Windows, так и на Linux
  • Можно настроить для прозрачной синхронизации существующей структуры папок.
  • Позволяет получить доступ к файлам даже при отсутствии подключения к Интернету
  • Разрешает доступ к файлам во время процесса синхронизации
  • Синхронизирует файлы без ручного вызова
  • Файлы должны храниться на сервере, контролируемом пользователем (в идеале через SSH), а не в чьем-то «облаке».

Что тоже было бы неплохо иметь, но не является строго необходимым для меня:

  • Синхронизация метаданных файлов (в частности, разрешения + время модификации)
  • Бесплатное/бесплатное программное обеспечение

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

Решение, которое я использую прямо сейчас, довольно ограничено. Я написал простой сценарий оболочки, который вызывает rsync для копирования всех файлов на центральный сервер или с него через SSH. У этого есть несколько недостатков:

  • Если я забуду отправить свои изменения на сервер, они будут недоступны на всех других машинах.
  • Если я забуду получить изменения с сервера, при следующем извлечении все изменения, сделанные мной локально, будут перезаписаны.
  • Он не работает в Windows без установки такого огромного пакета, как Cygwin.

Я также исследовал ownCloud, но у него есть и недостатки.

  • Требуется полный стек веб-сервера с PHP и базой данных SQL.
  • В Windows это блокировало бы файлы во время синхронизации. Особенно раздражает при написании или компиляции кода через короткие промежутки времени.
  • В Linux он использовал некоторые возможности виртуальной файловой системы, к которым можно было легко получить доступ только из графического проводника.
git-приложение может соответствовать вашим потребностям. Поскольку я еще не использовал его сам, я не могу сказать наверняка, но определенно стоит посмотреть.
cis.upenn.edu/~bcpierce/unison . Просто для кросс-синхронизации без облаков, торрентов и прочих третьих лиц

Ответы (1)

Что вам нужно, так это BitTorrent Sync .

Он отвечает всем вашим требованиям:

  • Работает как на Windows, так и на Linux
  • Можно настроить для прозрачной синхронизации существующей структуры папок.
  • Позволяет получить доступ к файлам даже при отсутствии подключения к Интернету
  • Разрешает доступ к файлам во время процесса синхронизации
  • Синхронизирует файлы без ручного вызова

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

Вот скриншот пользовательского интерфейса:введите описание изображения здесь

Раскрытие информации: я принимал участие в предварительном и послерелизном тестировании этого продукта.

Спасибо за Ваш ответ. На веб-сайте говорится о «Передаче файлов с устройства на устройство» — как это работает, если одна из машин выключена? Если сервера нет, как машина B получает изменения с машины A, когда машина A выключена?
Хорошие вопросы. Когда машина А снова включится, они синхронизируются. Альтернативой является установка машины C, которая заменяет традиционный сервер. В этом случае машины A, B и C автоматически синхронизируются, а машина C всегда включена, таким образом действуя как сервер. Преимущество заключается в том, что машина C на самом деле представляет собой полностью пригодную для использования систему, и ее не нужно изолировать, как традиционный сервер. Программное обеспечение BitTorrent Sync довольно легкое и на удивление нетребовательное к ресурсам.
Независимо от того, какое решение вы используете, по крайней мере одна система должна быть включена для запуска синхронизации. Я также использую BitTorrent Sync для этой цели с 4 системами: Linux-сервер в моем доме, мой рабочий ноутбук, мой планшет и мой домашний ноутбук.