LoginSignup
61
71

More than 5 years have passed since last update.

Vagrant - rsyncでファイルを同期する(Windows)

Last updated at Posted at 2014-06-07

その前に、Vagrantとは何か?

Vagrant入門 ~導入/配布/設定/プラグインの使い方~に記載しました。

Vagrantでrsyncを使う理由

Webシステムの開発でVagrantを使う場合において、テスト環境の仮想マシンへのデプロイにSynced Folderを使うと便利であったが、いくつかの欠点… 例えば、アクセス速度が遅い、パーミッションが変更できないなどの問題があった。

rsyncでファイルを同期すれば、パフォーマンスが向上し、パーミッションも変更できるようになる。

Vagranfileの設定

rsyncではない、フォルダ共有の場合

Vagrantfile
config.vm.synced_folder "./src", "/srv/website"

rsyncで同期する

上記の設定にtype: "rsync"を追加する。同期しないフォルダはrsync__exclude: [".git/"]のように追加する。

設定例

Vagrantfile
config.vm.synced_folder "./src", "/srv/website", type: "rsync", rsync__exclude: [".git/", ".idea/"]

設定はこれで終わり。

ただ、このまま実行すると、rsyncが見つからないとのエラーが出る場合があります。
その場合はCygwinなどをインストールして利用する。

次、rsyncを使えるようにするための手順。

Cygwinとrsyncをインストール

Cygwinをrsync付きでインストールする際は、下の画像のようにSelect Packageの画面でNet > rsyncを選択する。

cygwin_rsync.png

binフォルダにパスを通す。デフォルトではここC:\cygwin\bin

再起動する。

Vagrant upを実行する

vagrant upvagrant reloadを実行すると、次のエラーが出た。

rsync: change_dir "/c/path/to/project" failed: No such file or directory (2)

/cがローカルディスクCを参照していないためだと思われる。
参照させるため、シンボリックリンクを作成する。

Cygwinでシンボリックリンクを作成

Cygwinを起動し、次のコマンドで/cがローカルディスクCを参照するようにする。

$ cd /
$ ln -s /cygdrive/c c
lrwxrwxrwx  1 Daichi None     11 6月   3 22:03 c -> /cygdrive/c

再度、Vagrant upを実行する

vagrant upvagrant reloadを実行する

今度は成功。
ゲストOSで同期されたディレクトリを確認する。

$ ls -l
drwxr-xr-x 7 vagrant vagrant 4096 Jun  3 12:50 project_name

このように、所有者とグループはvagrantになる。

vagrant起動中に同期を実行する

vagrant rsync-autoコマンドを使います。

vagrant rsync-auto
==> default: Doing an initial rsync...
==> default: Rsyncing folder: /c/path/to/project/ => /srv/website
==> default: Watching: C:/path/to/project/

これでファイルの監視状態になり、ホストOSで更新したファイルは自動的にゲストOSに同期されます。

参考にしたサイト

61
71
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
71