Может ли кто-нибудь предложить способ копирования данных с хоста виртуальной машины на виртуальную машину [0] кроссплатформенным способом между хостами (например, Windows, Mac или Linux)? Прямо сейчас я добиваюсь этого, выполняя rsync в виртуальной машине в цикле, что, очевидно, не очень хорошо.
На высоком уровне я предоставляю согласованную среду сборки / тестирования для разработчиков, использующих крайне несовместимые среды разработки. Когда разработчик клонирует базу кода, виртуальная машина запускается в фоновом режиме для выполнения последовательных инкрементных сборок и тестов при редактировании кода на хост-машине.
В моей текущей реализации виртуальная машина монтирует синхронизированную папку, содержащую исходный код, доступную только для чтения. Я не хочу, чтобы виртуальная машина что-либо записывала в файловую систему хоста, так как это может помешать ручной сборке или тестам, запускаемым разработчиками. Итак, у меня есть виртуальная машина, копирующая содержимое исходного каталога в гостевую файловую систему [1].
Я выполняю эту копию, выполняя вечный сценарий bash для синхронизации содержимого каждые три секунды.
while true
do
sleep 3
rsync -av --exclude '.git' --exclude-from $MOUNTDIR/.gitignore $MOUNTDIR/ $BUILDDIR/
done
Очевидно, это не идеально.
Я изучал использование различных наблюдателей за файловой системой (на основе inotify или kqueue), но все они привязаны к определенному типу файловой системы (NTFS, ext3 / 4, HFS +).
Есть ли какой-либо кросс-платформенный способ отслеживания изменений файловой системы? Либо какая-то абстракция над службами push-уведомлений для файловой системы, либо система опроса, не зависящая от платформы?
Существует ли такая вещь в какой-либо существующей библиотеке или инструменте? Или есть какой-то общий шаблон, который мне здесь не хватает.
[0] Гипервизор Virtualbox, предоставленный Vagrant, работает под управлением Ubuntu, но у меня есть гибкость в отношении всех этих зависимостей.
[1] Я попытался сделать это, установив символическую ссылку на смонтированную папку, но наша система сборки gulp
, разрешит символические ссылки, вызывающие боль