User Tools

Site Tools


unix:osx:offsite_encrypted_backup

Remote backup to encrypted disk image with rsync

This presumes you have access to an OS X host running sshd, and that you have already configured passphrase-less ssh keys to login to the remote host.

  • Login to your remote host
  • Create a subdirectory to store your files/mount your encrypted disk image
    • mkdir ~/private
  • Create and encrypted sparse bundle image- you MUST specify a large enough size for your expected backups:
    • hdiutil create -encryption -stdinpass -format UDSB -srcfolder private -size 350g encrypted.dmg
  • Enter your desired password for the image when prompted
  • Test mounting the image via:
    • hdiutil attach -stdinpass -readwrite -mountpoint /Users/[your_username]/private/ /Users/[your_username]/encrypted.dmg.sparsebundle

Onto a script. This is an example:

#!/bin/bash

#set your password
ENCRYPTION_PASS='mypassword'

#Mount the encrypted disk image on the remote system
ssh -i ~username/.ssh/id_dsa username@remotehost.com "/bin/echo -n $ENCRYPTION_PASS | hdiutil attach -stdinpass -readwrite -mountpoint /Users/username/private/ /Users/username/encrypted.dmg.sparsebundle" >> backup.log 2>&1

#rate limited rsync if desired
#rsync --rsh="ssh -i ~username/.ssh/id_dsa" --delete -a --progress --bwlimit=1000 --exclude ".AppleDouble" --exclude ".DS_Store" /c/media/Pictures username@remotehost.com:/Users/username/private/ >> backup.log 2>&1

#not rate limited
rsync -e "ssh -i ~username/.ssh/id_dsa"  --delete --progress -a --exclude ".AppleDouble" --exclude ".DS_Store" /c/media/Pictures username@remotehost.com:/Users/username/private/ >> backup.log 2>&1

#unmount the remote disk image
ssh -i ~username/.ssh/id_dsa username@remotehost.com hdiutil detach /Users/username/private/ >> backup.log 2>&1

#move the log to a log with a date stamp
mv backup.log backup.`date +"%Y_%d_%m_%H_%M"`.log
unix/osx/offsite_encrypted_backup.txt · Last modified: 2013/03/19 05:24 by ben