February 20, 2015

Deploying with Rsync

Refine our simple deployment method using rsync instead of scp.Our local deploy.sh script is currently using secure copy:

#!/usr/bin/env bash
scp ./* deploy-ex:/var/www/site

Let's update this to use rsync over scp:

#!/usr/bin/env bash
rsync -vzcrSLhp --exclude="deploy.sh" ./ deploy-ex:/var/www/site

# The options:
# v - verbose
# z - compress data
# c - checksum, use checksum to find file differences
# r - recursive
# S - handle sparse files efficiently
# L - follow links to copy actual files
# h - show numbers in human-readable format
# p - keep local file permissions (not necessarily recommended)
# --exclude - Exclude files from being uploaded

We get an error, saying it can't change permissions. We rectify this by removing the -p flag, as the local permissions are different than what we want on the remote server. The user "deployer" happens to not have permissions to change the target directory permissions.

We make a change to index.html locally to ensure it gets uploaded and re-run the bash script:

bash deploy.sh

See that only changed files are uploaded.

All Topics