I switched out the tar, scp and untar script I wrote to deploy my blog for the rsync command. My script was taking just a few seconds too long for me to be happy with it.
I’m still not happy as I also have a git add, commit and push step which is still slow but I’ll fix that at some other point.
This is the command to move files from a host machine to a remote machine.
$ rsync -avzc \ --delete \ --exclude='.git/' \ -e 'ssh -p 23221 -o "IdentitiesOnly=yes" -i ~/.ssh/id_rsa' \ /usr/share/nginx/html/nivethan/ username@DEST.IP:~/bp/nivethan/
rsync -flags sync_this to_this
The flags are as follows:
-a Archive, this will preserve the file attributes such as permissions -v Verbose, this will display what files are being transfered -z Compress, this will compress the data -c Checksum, this will push files with differing checksums -u Update, this will push files with newer update times than the remote machine --delete This will delete files that don't exist on the host machine --exclude Exclude specific directories or files from being pushed --remove-source-files Delete the files on the source system -e Shell program to use, in this case I use ssh but with specific options, by default rsync will use ssh