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

4

Ao fazer vagrant up uma provisão "shell", baixe alguns arquivos para a 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 o NFS para sincronizar, isso é feito automaticamente, mas não com rsync . Existe alguma maneira de conseguir isso usando o rsync com o 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"]
    
por Manolo 15.06.2015 / 18:02

3 respostas

2

De acordo com a Documentação , o rsync é apenas uma sincronização unidirecional no vagrant. Isso significa que você tem que usar um mecanismo diferente como o nfs para uma sincronização de volta do guest para o host ou então você teria que implementar um mecanismo de back-sync próprio como executar um comando rsync manualmente no host.

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

Se as extensões de guest virtualbox estiverem instaladas no seu guest, você também pode querer dar uma olhada na pasta compartilhada mechansim vboxsf do virtualbox como uma pasta sincronizada de transporte para varant em vez de nfs e rsync.

    
por 16.06.2015 / 22:34
1

Estes são os comandos para sincronizar de convidado para host, e eles devem ser executados a partir da pasta onde você correu vagrant up :

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

Veja também esta resposta que escrevi em stackoverflow .

    
por 26.10.2017 / 00:25
0

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

    
por 17.06.2015 / 05:55