Skip to content

Instantly share code, notes, and snippets.

@hflamboauto1
Forked from mfellner/rsync-sshfs.sh
Created June 7, 2019 16:19
Show Gist options
  • Save hflamboauto1/ab84fab6d6929f59aaebbdfee25640c5 to your computer and use it in GitHub Desktop.
Save hflamboauto1/ab84fab6d6929f59aaebbdfee25640c5 to your computer and use it in GitHub Desktop.
Sync a local and a remote directory with rsync over sshfs (e.g. when you only have sftp access). Note the defer_permissions option and the -c (checksum) flag. Tested on OS X with rsync 2.6.9 and sshfs 2.4.0 (fuse4x 0.9.2).
#!/bin/bash
SSH_USER="[email protected]" # your sftp credentials
SSH_KEY="~/.ssh/id_rsa" # your ssh private key
DOCUMENT_ROOT="/www/vhosts/mywebsite.com/htdocs" # directory on the remote server
LOCAL_DIR="~/mywebsite.com/public" # directory on your local machine
REMOTE_DIR="_remote_dir" # temporary mount point
mkdir -p $REMOTE_DIR
sshfs $SSH_USER:$DOCUMENT_ROOT $REMOTE_DIR -o workaround=rename -o defer_permissions -o IdentityFile=$SSH_KEY
rsync -rlvcP --delete $LOCAL_DIR $REMOTE_DIR
umount $REMOTE_DIR
rm -r $REMOTE_DIR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment