web-dev-qa-db-ja.com

vagrant内に作成されたフォルダーを共有する方法は?

私はvagrant VMを持っており、config.vm.share_folderを使用してホスト(ubuntu)からvagrantにフォルダー(私のコードリポジトリ)を共有しています。フォルダーを使用して反対の操作を行いたいです。 vagrant machine(仮想環境)内で作成しましたが、ホストに共有したいのですが、どうすればよいですか?

以下をvagrantファイルに追加しようとしました:config.vm.share_folder "virtualenv", "/home/vagrant/devenv", "../virtualenv" wichは、それぞれvagrantマシンの仮想環境とHostの空のフォルダーを指します。私が迷惑をかけてホスト上のフォルダの内部を見ると、迷惑なマシン内の仮想環境のコンテンツを見たいのですが、フォルダは空のままです。そして、私がvagrantマシンにsshして仮想envフォルダ内を見ると、それは空になっています。この設定を無効にすると、迷惑マシンのフォルダの内容が復元されます。

16
Bastian

共有フォルダーと同期フォルダー

共有フォルダーは、v1からv2(ドキュメント)の同期フォルダーに名前が変更されました。ボンネットの下では、ホストとゲストの間でvboxsfがまだ使用されています(多数のファイル/ディレクトリがある場合、既知のパフォーマンスの問題があります)。

[〜#〜]注[〜#〜]:ホストディレクトリがvboxsfを介してゲストにマウントされることを理解する必要があります [〜#〜]ではありません[〜#〜]逆の方法です。

あなたのユースケースでは、次のことができます

  1. 同期フォルダーを使用して、ホストとゲストの間でフォルダーをマップし(両方とも空である場合)、ゲスト内でコピー(rsyncを推奨)するか、プロジェクトをマップされたフォルダーに移動します。
  2. ゲストからホストにコンテンツをコピーし(scpまたはrsyncを使用して)、フォルダーAを同期し、同期フォルダーを使用して、ホスト上のフォルダーAをゲストにマップします。

例えば

# relative path to where Vagrantfile resides
config.vm.synced_folder "virtualenv", "/home/vagrant/devenv"

# absolute path
config.vm.synced_folder "/path/to/virtualenv", "/home/vagrant/devenv"
  1. プロジェクトディレクトリ(Vagrantfileが存在する場所)のvirtualenvディレクトリをゲスト/home/vagrant/devenvにマップします。

  2. 絶対パス

同期フォルダーの動作を理解するのに役立つ詳細情報=>Vagrant共有フォルダーと同期フォルダー

14
Terry Wang

共有フォルダーと同期フォルダー( http://docs.vagrantup.com/v2/synced-folders/ を参照)の両方で、編集は双方向に行われます。 HostフォルダーとVagrantフォルダーは常に同期しています。つまり、両方の方法で共有されるため、何もする必要はありません。

0
rakhim

Vagrantで共有フォルダーを作成するには:

config.vm.synced_folder "data", "/var/www", :mount_options => ["dmode=777","fmode=666"]

MacをUbuntuパスに共有する

config.vm.synced_folder "/Users/Myname/www-vagrant", "/var/www/vagrant",

所有者:「www-data」、グループ:「www-data」

0
Krucamper