Thursday, November 22, 2007

Effordless synchronization via SSH

Setup SSH to authenticate via certificate

Generate key
ssh-keygen -t dsa

Copy public key to remote server
scp ~/.ssh/id_dsa.pub $REMOTE_HOST:.ssh/authorized_keys2

or if you already have keys in your key chain on the remote server
cat ~/.ssh/id_dsa.pub | ssh $REMOTE_HOST 'sh -c "cat - >>~/.ssh/authorized_keys2"'

Copy Files

Using rsync to copy files
rsync --archive --compress --itemize-changes --progress --exclude=.svn  $PATH $REMOTE_HOST:$PATH

Backing up databases

Using mysqldump to get schema and data
mysqldump --compact --compress --add-drop-table --delayed-insert --extended-insert --quick --quote-names --create-options --no-create-db --no-create-info --database $DB > /tmp/$DB.dump
scp /tmp/$DB.dump $RHOST:/tmp/$DB.dump
ssh $REMOTE_HOST "mysql -u root -p$PASSWORD < /tmp/$DB.dump"
rm /tmp/$DB.dump
ssh $REMOTE_HOST "rm /tmp/$DB.dump"

or (if allowed)
mysqldump --compact --compress --add-drop-table --delayed-insert --extended-insert --quick --quote-names --create-options --no-create-db --no-create-info --database $DB > mysql -u root -p$PASSWORD -h $REMOTE_HOST