Synced Folders Overview
Synced folders allow files to be shared between your host machine and the OEL 8 VM. Changes on either side are reflected immediately. This is extremely useful for sharing SQL scripts, config files, and database dumps without SCP or file transfers.
Basic Synced Folder
Ruby — Synced Folders
Vagrant.configure("2") do |config|
config.vm.box = "generic/oracle8"
# Default: current directory → /vagrant in VM (always enabled)
# You can disable it:
config.vm.synced_folder ".", "/vagrant", disabled: false
# Share scripts folder
config.vm.synced_folder "./scripts", "/home/vagrant/scripts"
# Share SQL files
config.vm.synced_folder "./sql", "/home/vagrant/sql"
# Share with specific owner (for MySQL data)
config.vm.synced_folder "./mysql-data", "/var/lib/mysql-shared",
owner: "mysql",
group: "mysql"
# Read-only share
config.vm.synced_folder "./configs", "/etc/myapp-configs",
mount_options: ["ro"]
end
Synced Folder Types
| Type | Speed | Requirements | Best for |
|---|---|---|---|
| VirtualBox Shared Folders (default) | Slow | Guest Additions | Small files, scripts |
| NFS | Fast | NFS on host (Mac/Linux) | Large files, DB dumps |
| SMB | Fast | Windows host | Windows host setups |
| rsync | Medium | rsync installed | One-way sync |
NFS Synced Folders (Faster)
Ruby — NFS Synced Folders
Vagrant.configure("2") do |config|
config.vm.box = "generic/oracle8"
# NFS requires private network
config.vm.network "private_network", ip: "192.168.56.10"
# NFS share — much faster than VirtualBox shared folders
config.vm.synced_folder "./data", "/data",
type: "nfs",
nfs_udp: false
# NFS with specific options
config.vm.synced_folder "./sql", "/home/vagrant/sql",
type: "nfs",
nfs_version: 4,
nfs_udp: false,
mount_options: ["nolock", "vers=3", "udp", "noatime"]
end
⚠ Warning: NFS on macOS requires your sudo password the first time to modify /etc/exports. Vagrant handles this automatically.
rsync Synced Folders
Ruby — rsync Folders
Vagrant.configure("2") do |config|
config.vm.box = "generic/oracle8"
# rsync — one-way sync from host to VM
config.vm.synced_folder "./scripts", "/home/vagrant/scripts",
type: "rsync",
rsync__exclude: [".git/", "*.log", "*.tmp"],
rsync__args: ["--verbose", "--archive", "--delete", "-z"]
end
BASH — rsync Commands
# Manually trigger rsync sync
vagrant rsync
# Auto-sync on file changes (watch mode)
vagrant rsync-auto
Database Use Cases for Synced Folders
Share SQL scripts
Ruby — SQL Scripts Folder
config.vm.synced_folder "./sql-scripts", "/home/vagrant/sql"
# Inside VM, run scripts easily:
# mysql -u root -p < /home/vagrant/sql/create_schema.sql
Share database backups/dumps
Ruby — Backup Folder
config.vm.synced_folder "./backups", "/home/vagrant/backups"
# Inside VM:
# mysqldump -u root -p mydb > /home/vagrant/backups/mydb_$(date +%Y%m%d).sql
# File appears on host machine immediately!
Share Ansible playbooks
Ruby — Ansible Folder
config.vm.synced_folder "./ansible", "/home/vagrant/ansible"
Synced Folder Permissions
Ruby — Folder Permissions
# Fix permission issues for database directories
config.vm.synced_folder "./mysql-conf", "/etc/mysql",
owner: "root",
group: "root",
mount_options: ["dmode=755", "fmode=644"]
# For vagrant user owned folders
config.vm.synced_folder "./scripts", "/home/vagrant/scripts",
owner: "vagrant",
group: "vagrant"
💡 Note: VirtualBox shared folders can be slow for large database files. Use NFS for sharing large SQL dumps or data files. For MySQL data directory itself, always use the VM local disk — never a shared folder.