#!/bin/bash USAGE="Usage: mirror_folder_sftp.sh user@host local_path remote_path" # command line checks, bash if [ $# -ne 3 ]; then echo ${USAGE} exit 0 fi user_host=$1 local_path=$2 remote_path=$3 echo Mirroring folder ${local_path} to ${user_host}:${remote_path} # SFTP is very peculiar: recursive put only works for a single directory # note: does not work with sftp of OS X 10.11 folder=`basename ${remote_path}` path=`dirname ${remote_path}` rm -rf tmp mkdir tmp cp -r ${local_path} tmp/${folder} sftp ${user_host} << EOF mkdir ${remote_path} put -r tmp/${folder} ${path} quit EOF rm -rf tmp/${folder}