Copie arquivos do convidado para o host pela primeira vez com rsync usando o Vagrant

Copie arquivos do convidado para o host pela primeira vez com rsync usando o Vagrant

Ao fazer vagrant upuma provisão "shell", baixe alguns arquivos na pasta sincronizada. Esses arquivos também devem ser copiados para a pasta sincronizada da máquina host, para que o projeto fique disponível no host. Ao usar oNFSpara sincronizar, isso é feito automaticamente, mas não comsincronizar novamente. Existe alguma maneira de conseguir isso usando rsync com Vagrant? Esta é a configuração da pasta 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"]

Responder1

De acordo comDocumentação, rsync é apenas uma sincronização unilateral no vagrant. Isso significa que você precisa usar um mecanismo diferente, como nfs, para sincronizar de volta do convidado para o host ou então precisa implementar algum mecanismo de sincronização reversa próprio, como executar um comando rsync manualmente no host.

Pode-se escrever uma extensão (plugin) rsync-back para o vagrant. Não tenho conhecimento de um plugin existente para conseguir isso.

Se as extensões de convidado do virtualbox estiverem instaladas em seu convidado, você também pode dar uma olhada no mecanismo de pasta compartilhada do virtualbox vboxsfcomo um transporte para a pasta sincronizada do varant em vez de nfs e rsync.

Responder2

Estes são os comandos para sincronizar do convidado para o host e devem ser executados na pasta onde você executou vagrant up:

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

Veja tambémesta resposta eu escrevi no stackoverflow.

Responder3

Se o seu convidado e host tiverem ssh, você poderá usar scppara transferir dados bidirecionais.

informação relacionada