diff --git a/website/www/Vagrantfile b/website/www/Vagrantfile index bab5d6429..46a016e3b 100644 --- a/website/www/Vagrantfile +++ b/website/www/Vagrantfile @@ -20,4 +20,5 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "precise64" config.vm.network "private_network", ip: "33.33.33.10" config.vm.provision "shell", inline: $script, privileged: false + config.vm.synced_folder ".", "/vagrant", type: "rsync" end diff --git a/website/www/source/blog/2014-02-12-feature-preview-vagrant-1-5-rsync.html.markdown b/website/www/source/blog/2014-02-12-feature-preview-vagrant-1-5-rsync.html.markdown new file mode 100644 index 000000000..0bea00b2d --- /dev/null +++ b/website/www/source/blog/2014-02-12-feature-preview-vagrant-1-5-rsync.html.markdown @@ -0,0 +1,147 @@ +--- +page_title: "Vagrant 1.5 Feature Preview: Rsync Synced Folders" +title: "Feature Preview: Rsync Synced Folders" +author: Mitchell Hashimoto +author_url: https://github.com/mitchellh +--- + +Vagrant 1.5 is going to be the biggest release of Vagrant since 1.1, +with dozens of new features and improvements coming in. Don't worry, +we've also obsessed over [stability](/blog/stability-and-upgrades.html), +so we expect it'll be one of the most stable upgrades, too. + +Because Vagrant 1.5 will be so feature-packed, we're doing a series of +blog posts that highlight the upcoming features so you know what to look +forward to and how to use them. These posts will be +weekly on Wednesdays, so keep an eye out for them! + +We're going to kick off the series by introducing +[rsync](http://en.wikipedia.org/wiki/Rsync) synced folders. These synced +folders offer incredible I/O performance at the expense of a little bit of +latency. Read on to learn more. + +READMORE + +### Introducing Rsync Synced Folders + +Rsync synced folders use [rsync](http://rsync.samba.org/) to sync files +to the guest machine. They are configured just as easily as any other synced folder, +by just specifying the "rsync" type: + +
+config.vm.synced_folder ".", "/vagrant", type: "rsync" ++ +As long as
rsync
is installed in both the host and the guest,
+this will _just work_. Since rsync is a standard utility for Mac and most
+Linux distributions, this just works most of the time! For Windows users,
+[msysgit](https://code.google.com/p/msysgit/),
+[MinGW](http://www.mingw.org/),
+and [Cygwin](http://www.cygwin.org)
+all provide rsync.
+
+As an added benefit, Vagrant 1.5 knows how to install rsync for most
+major operating systems, and will do this automatically for you by
+default within the guest machine if `rsync` cannot be found.
+
+When you execute `vagrant up` or `vagrant reload`, Vagrant will sync
+the data to the guest machine. In addition to these commands, Vagrant
+has a new command `vagrant rsync` that will only sync rsync folders
+that are defined.
+
+Unlike VM shared folders and NFS, rsync is a one-time sync from the
+host machine to the guest machine. Changes to the folder after the
+sync is complete won't be visible in the guest machine until you
+force another sync with a command such as `vagrant rsync`. Luckily,
+Vagrant 1.5 will provide a way to auto-sync rsync synced folders.
+
+### Auto-Syncing
+
+By default, the folder syncing only happens when you manually execute
+a `vagrant up`, `vagrant reload`, or `vagrant rsync`. Part of the magic
+of Vagrant, though, has always been for changes to just appear in the
+guest machine.
+
+Rsync synced folders don't have this magic property by default because
+unlike VM shared folders or NFS, rsync doesn't continue to run in the
+background to propagate any changes. And Vagrant itself doesn't keep any
+background processes running after it finishes executing, so by default
+changes won't be seen.
+
+But because this is such a useful feature of Vagrant, Vagrant 1.5 has a
+`vagrant rsync-auto` command. This command runs forever (until you Ctrl-C),
+watches any defined rsync synced folders, and automatically syncs changes
+as you make them.
+
+```
+$ vagrant rsync-auto
+==> default: Watching: /home/mitchellh/work/frontend
+ default: Changes! Syncing /vagrant
+...
+```
+
+This command uses system-specific APIs to detect file changes, rather than
+polling the file system. Therefore, this command sits idle most of the time
+and consumes only a small amount of RAM.
+
+Changes are usually picked up in less than a second, and Vagrant only
+syncs changes over a compressed connection to use as little bandwidth as
+possible. As a result, changes appear in the guest machine quite fast.
+
+We realize this workflow is a bit different than what you're used to
+with Vagrant, but it is a minor change necessitated by the technical
+differences of rsync versus other available synced folder mechanisms.
+
+### Performance and Benefits
+
+Because `rsync` copies the files directly onto the remote filesystem,
+performance is _fantastic_. For a comparison to NFS or VM shared folders,
+see my personal blog post
+[comparing filesystem performance in virtual machines](http://mitchellh.com/comparing-filesystem-performance-in-virtual-machines).
+With rsync, you'll see the "VirtualBox native" performance numbers.
+
+Unlike NFS and VM shared folders, filesystem notifications work in the
+guest machine with rsync synced folders. So, if you use
+[Guard](http://guardgem.org/) or something like it, it will now work with
+Vagrant!
+
+Also unlike NFS or VM shared folders, filesystem permissions are not
+tampered with in the guest machine. NFS and VM shared folders both change
+the way file permissions work that is fine most of the time, but can be
+really disruptive for some workflows. With rsync, because files are just copied
+onto the guest machine, permissions work as you would expect.
+
+Rsync synced folders only requires `rsync` to be available in the guest
+machine, so it works on virtual machines that don't have guest additions
+installed. This is great for specialized operating systems where guest
+additions that require invasive kernel modules won't compile, but a
+relatively standard C program such as rsync will.
+
+For Windows users, rsync finally provides a cross-platform alternative
+to VM shared folders that works out of the box with Vagrant. While NFS
+is available for Windows, Vagrant doesn't currently work with it, so
+Vagrant would fall back to VM shared folders.
+
+### Choices, choices, choices!
+
+With the introduction of rsync synced folders, users of Vagrant now
+have three choices out of the box for synced folders: VM shared folders,
+NFS, or rsync.
+
+NFS and VM shared folders are _not deprecated in any way_ and will be
+fully supported and improved for the forseeable future. Vagrant has always
+been about choice and working with the technologies that work best for you
+and your team and rsync is now another really great choice Vagrant offers you.
+
+### What's Next?
+
+Rsync synced folders will be available out of the box with Vagrant 1.5.
+They are also
+[fully documented](https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md)
+already, so the documentation will cover all aspects of rsync synced
+folders immediately when 1.5 is released.
+
+And that is only one of dozens of features of equal or greater caliber
+coming to Vagrant 1.5. Stay tuned next week when we cover another
+feature! Vagrant 1.5 will have quite a few surprises, we're sure,
+that should make both new and experienced Vagrant users very happy.