Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

その前に、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に同期されます。

参考にしたサイト

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした