Копирование файлов из гостевой ОС на хост в первый раз с помощью rsync с использованием Vagrant

Копирование файлов из гостевой ОС на хост в первый раз с помощью rsync с использованием Vagrant

При выполнении vagrant up"shell" provision загрузите некоторые файлы в синхронизированную папку. Эти файлы также должны быть скопированы в синхронизированную папку хост-машины, чтобы проект был доступен с хоста. При использованииНФСдля синхронизации это делается автоматически, но не сrsync. Есть ли способ сделать это с помощью rsync с Vagrant? Это конфигурация синхронизированной папки:

config.vm.synced_folder "./", "/vagrant", type: "rsync", owner: "www-data",
rsync__exclude: [".git", "project1/app/cache", "project1/app/logs"],
rsync__args: ["--no-owner", "--verbose", "--archive", "-z", "--copy-links"]

решение1

СогласноДокументация, rsync — это только односторонняя синхронизация в Vagrant. Это означает, что вам придется либо использовать другой механизм, например nfs, для обратной синхронизации от гостя к хосту, либо реализовать собственный механизм обратной синхронизации, например, запустить команду rsync вручную на хосте.

Можно написать расширение rsync-back (плагин) для vagrant. Я не знаю существующего плагина для достижения этого.

Если в вашей гостевой системе установлены гостевые расширения Virtualbox, вы также можете рассмотреть механизм общих папок Virtualbox vboxsfв качестве транспорта для синхронизированной папки varant вместо nfs и rsync.

решение2

Это команды для синхронизации с гостевой системы на хост, и их следует выполнять из папки, в которой вы их запустили vagrant up:

$ vagrant ssh-config > ssh_config
$ rsync -avH -e "ssh -F ./ssh_config" default:/vagrant/ ./

Смотрите такжеэтот ответ я написал на stackoverflow.

решение3

Если у вашего гостя и хоста есть SSH, вы можете использовать его scpдля двунаправленной передачи данных.

Связанный контент