Getting Started with Vagrant for Local Development: Lesson 11 of 20

Folder Syncing (vm.synced_folder): How to code with and change the box

Up Next

Provisioning (vm.provision): How to customize the box

Autoplaying in 7 seconds!


Folder Syncing (vm.synced_folder): How to code with and change the box

Okay, so we have "synced" the ports between our computer and the virtual machine. What good is that if we can't access the files?

Syncing Folders

In a similar way that we "synced" our network, we're going to sync our folders:

config.vm.synced_folder '.', "/var/www"

The . in the example just means current directory. You can do anything you want, for example"

Table of Contents

    config.vm.synced_folder '../html', "/var/www/html"

    It's really up to you on what you want synced. Check out the video demo to see it in action.


    So this is nice that our files are synced, however you may run into permission issues. For example, the actual file permissions of your folders conflicting with the actual file permissions of the boxes.

    I always do:

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

    You should probably do this too.

    Tip of Iceberg

    Just like "Networking", there's many, many additional options here. We won't walk through all of these, but I do want to show you one more thing.

    NFS for Mac Users

    If you're on a Mac, there's this thing called NFS (Network File System) to allow you to sync using a different protocol than the default VirtualBox shared folders implementation.

    There's no difference to what you see, but there's a slight performance gain by doing this.

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

    If you're on Windows, this is simply ignored.