Я работаю с академическим проектом, который пытается оптимизировать энергоэффективность для домовладельцев, собирая данные датчиков в умных домах. Проблема в том, что им приходится загружать данные своих датчиков из сети разнородных машин с лоскутным одеялом (некоторые ноутбуки с Windows, некоторые серверы Linux, некоторые Raspberry Pis и т.д.).

Решение должно иметь следующие свойства:

  • Синхронизация с / из S3. У нас уже есть некоторые данные на S3, но мы на самом деле не заботимся о провайдере, поскольку это дешевое резервное хранилище с низким уровнем сбоев, которое выглядит как каталог.

  • Односторонняя синхронизация для каждого файла. Он должен иметь возможность загружать изменения только для определенного файла, а не для всего каталога. Это также должно быть в состоянии подтолкнуть изменения.

  • Дельта пишет. Файлы будут большими, и мы не хотим загружать их заново каждый раз - только изменения.

  • Хранит метаданные отдельно. Нам нужно иметь возможность читать файлы на удаленном конце, так как они находятся на локальном конце; если файлы обернуты в какой-то конверт / контейнер, что затруднит их использование.

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

  • Кросс-платформенный. Должно работать на Windows 7+ и Ubuntu.

  • Минимальные внешние зависимости. В идеале, "установка" должна состоять из удаления какой-либо папки или загрузки пакета.

Параметры, которые я посмотрел и должен был отклонить:

  • Запись напрямую с использованием s3fs: не поддерживает дельта-записи; повторно загружать весь файл для любого изменения. Ой!

  • rsync + s3rsync.com: непозволительно дорого, так как наши потоки rsync будут постоянно загружать много данных. Кроме того, сайт больше не существует ("авторское право 2010"), много плохих отзывов.

  • Duplicity: не поддерживает запись необработанного содержимого файла - каждый файл заключен в метаданные, которые понимает только Duplicity.

  • Синхронизация: не поддерживает одностороннюю синхронизацию с одним файлом.

0