How to setup multisite to multisite rsync with drush? I try to rsync between a multisite setup (local) and a multisite setup (stage). If I run a sync it will copy all sites from dev to stage but I just want the current site to be synced.

$drush rsync @dev @stage


My drush alias file is located in ~/.drush/example.aliases.drushrc.php

$aliases['local'] = array(
  'root'           =&gt; '/Users/admin/Sites/drupal',
  'uri'            =&gt; 'example.local',
  'shell-aliases'  =&gt; array(
    'dump' =&gt; '!drush sql-dump --gzip --ordered-dump'
  ),
  'path-aliases' =&gt; array(
    '%dump'          =&gt; '/Users/admin/dev-' . date('Ymdhis') . '.sql',
    '%drush'         =&gt; '/Users/admin/drush',
    '%site'          =&gt; 'sites/example/',
  ),
);

// REMOTE: STAGING
$aliases['stage']  = array(
  'remote-user'      =&gt; 'xyz',
  'remote-host'      =&gt; 'stage.example.com',
  'root'             =&gt; '/home/xyz/www/stage.example.com',
  'uri'              =&gt; 'stage.example.com',
  'path-aliases' =&gt; array(
    '%drush'         =&gt; '/home/xyz/drush',
    '%drush-script'  =&gt; '/home/xyz/drush/drush',
    '%dump-dir'      =&gt; '/Users/admin/.drush-backups/example.stage',
    '%site'          =&gt; 'sites/example/',
  ),
  'command-specific' =&gt; array(
    'sql-sync'       =&gt; array(
      'no-cache'     =&gt; TRUE,
    )
  ),
  'shell-aliases'    =&gt; array(
    'dump' =&gt; '!drush sql-dump --gzip --ordered-dump'
  ),

  // DB
  'databases' =&gt;
  array(
    'default' =&gt;
    array(
      'default' =&gt;
      array(
        'database'   =&gt; 'xyz',
        'username'   =&gt; 'xyz',
        'password'   =&gt; 'xyz',
        'host'       =&gt; 'xyz',
        'port'       =&gt; 'xyz',
        'driver'     =&gt; 'mysql',
        'prefix'     =&gt; '',
      ),
    ),
  ),
);


Questions:


%site: My project folder in sites/ is called example on the local side and has the same name on the staging side. Do they need to be different?
Do i need to put all domains in site.php on my staging server? At the moment I am using just the actual setup ($sites['stage.example.com'] = 'stage.example.com';) on my staging server.
My local sites.php file:

$sites['example.local'] = 'example.local';
$sites['stage.example.com'] = 'stage.example.com';
$sites['example.com'] = 'live.example.com';

Are the directories all/ and default/ always needed?


My local Setup:


Drush 7.x dev
PHP 5.5.x
MAMP


My Server Setup:


Drush 7.x dev
PHP 5.5.x


Edit: Removed opinion based questions ;)
On Drupal 6, your sites folders must be the same.  Since you are using Drupal 7, they can be different, but it is more convenient if they are the same.
You do not need to copy all of your multisites to your dev server.  The drush rsync option you are looking for is --exclude-other-sites.  This will cause rsync to skip everything in the sites folder except for sites/all, and the site you are syncing from.
sites/all is where sites/all/modules and sites/all/themes go, so you typically need these.  With some effort it might be possible to move your contrib modules elsewhere (if everything was in a profile, or if you hand-modified your registry), but this would be an unusual setup.  sites/default is not needed.