After started writing about rsync from local to live. Here's a post about syncing in two directions.
Helpful in rsync is, that also the permissions- and owner information is transfered ("-a" parameter). The "--progress" parameter shows the progress and "--exclude" allows to exclude directories. Be carefully about "--delete". Mind hidden folders like ".git" and ".vagrant" etc.
SSH session on local system (developer desktop) to sync files from (stage/live) server to local system
Here we assume you are in a ssh session on your local development environment and you want to sync from the stage/live server to your local development environment.