Назад | Перейти на главную страницу

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

При выполнении 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 передавать данные двунаправленно.