Copie archivos del invitado al anfitrión la primera vez con rsync usando Vagrant

Copie archivos del invitado al anfitrión la primera vez con rsync usando Vagrant

Al realizar vagrant upuna provisión de "shell", descargue algunos archivos en la carpeta sincronizada. Esos archivos también deben copiarse en la carpeta sincronizada de la máquina host, para que el proyecto esté disponible desde el host. Al usar elNFSpara sincronizar, esto se hace automáticamente, pero no consincronización. ¿Hay alguna manera de lograr esto usando rsync con Vagrant? Esta es la configuración de la carpeta sincronizada:

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"]

Respuesta1

De acuerdo con laDocumentación, rsync es solo una sincronización unidireccional en vagrant. Esto significa que debe usar un mecanismo diferente como nfs para una sincronización del invitado al host o que tendrá que implementar algún mecanismo de sincronización inversa propio, como ejecutar un comando rsync manualmente en el host.

Se podría escribir una extensión (complemento) rsync-back para vagrant. No conozco ningún complemento existente para lograrlo.

Si las extensiones de invitado de virtualbox están instaladas en su invitado, es posible que también desee echar un vistazo al mecanismo de carpeta compartida de virtualbox vboxsfcomo transporte para la carpeta sincronizada de varant en lugar de nfs y rsync.

Respuesta2

Estos son los comandos para sincronizar del invitado al host y deben ejecutarse desde la carpeta donde ejecutó vagrant up:

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

Ver tambiénesta respuesta la escribí en stackoverflow.

Respuesta3

Si su invitado y su anfitrión tienen ssh, puede usarlo scppara transferir datos de forma bidireccional.

información relacionada