При выполнении vagrant up
положение «оболочки» загружает некоторые файлы в синхронизированную папку. Эти файлы также следует скопировать в синхронизированную папку хост-компьютера, чтобы проект был доступен с хоста. При использовании NFS для синхронизации это делается автоматически, но не с 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"]
Согласно Документация, rsync - это только односторонняя синхронизация в vagrant. Это означает, что вам либо нужно использовать другой механизм, например nfs, для обратной синхронизации от гостя к хосту, либо вам придется реализовать собственный механизм обратной синхронизации, например, запустить команду rsync вручную на хосте.
Можно написать расширение (плагин) rsync-back для vagrant. Мне неизвестен существующий плагин для этого.
Если гостевые расширения виртуального бокса установлены в вашем гостевом компьютере, вы также можете взглянуть на механизм общей папки виртуального бокса. vboxsf
в качестве транспорта для синхронизированной папки varant вместо nfs и rsync.
Это команды для синхронизации от гостя к хосту, и они должны выполняться из папки, в которой вы запустили vagrant up
:
$ vagrant ssh-config > ssh_config
$ rsync -avH -e "ssh -F ./ssh_config" default:/vagrant/ ./
Смотрите также этот ответ я написал в stackoverflow.
Если у вашего гостя и хоста есть ssh, вы можете использовать scp
передавать данные двунаправленно.