rsync is a powerful backup tool. I have used it over SSH before but never with its own internal daemon. Following this guide I configured the rsync daemon with a share and host based access control. I then configured an rsync task in freeNAS to sync pictures between itself and the rsync server via rsync, not SSH (for speed). In this example my server is running Debian Wheezy and the client is running FreeNAS.
- On the server, create /etc/rsyncd.conf and add the following:
max connections = 1 log file = /var/log/rsync.log timeout = 300 [Pictures] comment = All our pictures path = /storage/Pictures read only = yes list = yes uid = nobody gid = nogroup #auth users = mongrel list = yes hosts allow = 127.0.0.0/8 192.168.0.0/16 #secrets file = /etc/rsyncd.secrets
Note the only access control here is via source IP address. You can also have username/password access controls which I commented out.
- (Still on the server) start the rsync daemon
rsync --daemon
- Configure the client. I used the freeNAS GUI which generated the following cron job
rsync -r -t -z --delete 192.168.54.10::Pictures '/mnt/storage/Pictures/'
Putting that to the test in the command line with an additonal -P parameter to see progress, I saw that the command synchronized successfully. Excellent.
I tested transfer speeds using both the rsync daemon and ssh method. There was a noticeable (8 MB/s) difference in transfer speeds. The rsync way is definitely faster.