rsync can synchronizes files and directories from one server to another. It’s perfectly for backup or create a mirror site purpose.
This tutorial shows you step by step to create a rsync server and client server.
First of all, you must have rsync installed. For fedora, rsync should be included by default. If you don’t have it, run
Setup rsync server
Create rsync configuration file:
1
2
3
4
5
6
7
| cd /etc
mkdir rsyncd
cd rsyncd
touch rsyncd.conf
touch rsyncd.motd
touch rsyncd.user
chmod 600 rsyncd.user |
edit rsyncd.user file:
vi /etc/rsyncd.user
1
| my_rsync_user_1:user_1_password |
edit rsyncd.conf file:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| pid file=/var/run/rsyncd.pid
port=873
uid=root
gid=root
use chroot=yes
read only=yes
# limit access to LANS
hosts allow=192.168.2.0/255.255.255.0 #default, listen to lan server
host deny=*
max connections=5
motd file=/etc/rsyncd/rsyncd.motd
log format=%t%a%m%f%b
syslog facility=local3
timeout=300
[profile_1] #profile name
path = /path/to/backup/directory
ignore errors
read only = false
list = false
hosts allow = 66.66.66.66 #listen to client server which use public ip
hosts deny = 0.0.0.0/32
auth users = my_rsync_user_1
secrets file = /etc/rsyncd/rsyncd.user
#[profile_1] #another profile name
#path = /path/to/backup/directory/2
#ignore errors
#read only = false
#list = false
#hosts allow = 88.88.88.88 #listen to client server which use public ip
#hosts deny = 0.0.0.0/32
#auth users = my_rsync_user_2
#secrets file = /etc/rsyncd/rsyncd.user |
Next, create init start up script
vi /etc/init.d/rsyncd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| #!/bin/sh
#
# Startup script for rsyncd daemon
#
# chkconfig: 35 90 10
# description: Server data for sync to other server
# processname rsync
# Source function library
. /etc/rc.d/init.d/functions
prog=rsync
conf=/etc/rsyncd/rsyncd.conf
case "$1" in
start)
echo -n "Starting rsync daemon: "
daemon /usr/bin/$prog --daemon --config=$conf
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/$prog
;;
stop)
echo -n "Shutting down $prog: "
killproc -d 60 $prog
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/$prog
;;
status)
status $prog
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0 |
make /etc/init.d/rsyncd executable, and register this service
3
4
5
| chmod +x /etc/init.d/rsyncd
/sbin/chkconfig --add rsyncd
/sbin/service rsyncd start |
Setup rsync client
first, of course you must have rsync installed on client server
make rsync password file
1
2
3
4
5
| cd /etc
mkdir rsync
cd rsync
touch rsync.pwd
chmod 600 rsync.pwd |
vi /etc/rsync/rsync.pwd
execute this command to start synchronize file to server
1
| rsync -vrtLogp --progress /path/to/directory/to/be/backup/* my_rsync_user_1@[SERVER_IP]::profile_1 --password-file=/etc/rsync/rsync.pwd |
where [SERVER_IP] is rsync server IP