282

ホスト マシンから Vagrant ゲストに 1 つのファイルをコピーしたい場合があります。

従来のプロビジョナー (Puppet / Chef) を介してこれを行いたくありません。これは多くの場合 1 回限りであるためです。Vagrantfile に何かをすばやく追加したいだけです。

ディレクトリ全体を共有したくありません。おそらく、ゲストのディレクトリ全体を削除せずに既存のファイルを上書きしたいからです。

また、シェル プロビジョニング スクリプトを作成し、ファイルをコピーするだけの場合に、潜在的なエスケープに対処するのは少しやり過ぎに思えます。

では、単一のファイルをホストからゲストにコピーする最も簡単な方法は何ですか?

4

19 に答える 19

126

シェル プロビジョナーを使用してファイルをコピーする代わりに、Vagrantファイル プロビジョナーを使用することもできます。

プロビジョナー名: "file"

ファイル プロビジョナーを使用すると、ホスト マシンからゲスト マシンにファイルをアップロードできます。

Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
于 2014-04-25T20:15:09.397 に答える
108

デフォルトでは、最初の vagrant インスタンスは ssh ポートを 2222 として使用し、その IP アドレスは 127.0.0.1 です (複数の仮想ホストを作成した場合は、ポートを調整する必要がある場合があります)。

==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)

したがって、以下のコマンドを実行して、ローカル ファイルを/vagrantだけでなく vagrant インスタンスにコピーできます。パスワードは、ユーザー名と同じですvagrant

scp -P 2222 your_file vagrant@127.0.0.1:.

ファイルをローカル ホストにコピーして戻すこともできます。

scp -P 2222 vagrant@127.0.0.1:/PATH/filename .
于 2014-10-14T03:32:17.707 に答える
11

Vagrant は、ログインする代わりに ssh 経由でコマンドを実行する方法を提供するため、Linux ホストとゲストの場合は次を使用できます。

  • ホストからゲストへ:

cat ~/file_on_host.txt | vagrant ssh -c 'cat - > ~/file_on_guest.txt'

  • ゲストからホストへ:

vagrant ssh -c 'cat ~/file_on_guest.txt' > ~/file_on_host.txt

プラグインやゲストのリロードは必要ありません。Vagrantfile と同じディレクトリにいない場合は、必ず vagrant ボックス ID を「vagrant ssh」に提供してください。Vagrant v1.8.1 でテスト済み。

于 2017-05-04T10:53:37.350 に答える
9

次のエントリを追加できます~/.ssh/config

Host vagrant
    User vagrant
    HostName localhost
    Port 2222
    IdentityFile /home/user_name/.vagrant.d/insecure_private_key

そしてシンプルscp file vagrant:/path/。コマンドを使用して、ID ファイルへのパスを見つけることができますvagrant ssh-config

于 2015-01-30T13:26:40.103 に答える
7

があるディレクトリに移動しVagrantfile
、編集Vagrantfileして以下を追加します。

config.vm.synced_folder ".", "/vagrant", :mount_options => ['dmode=774','fmode=775']

「。」ホスト マシンの現在のディレクトリ
「/vagrant」は、ゲスト マシン(Vagrant マシン)の「/home/vagrant」を参照することを意味します。

ゲスト マシンに送信する必要があるファイルを、Git Bash があるフォルダーにコピーし、次のように入力して、 Git BashVagrantfile 開きます。cdVagrantfile

vagrant scp config.json XXXXXXX:/home/vagrant/

ここで、XXXXXXX は VMです。実行すると、vm 名を取得できます。

vagrant global-status
于 2016-11-03T18:59:16.467 に答える
-3

ローカルから vagrant にファイルをコピーする最良の方法。コードや設定の変更を書く必要はありません。1- 最初に vagrant を起動します ( vagrant up ) 2- cygwin を開きます 3- cygwin : vagrantfile があるフォルダーに移動するか、vagrant を起動する場所から移動します 4- ssh vagrant 5- これで、通常のシステムのように動作します。

于 2017-08-10T11:02:11.167 に答える