它的特性如下:
可以 镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及 解压缩操作,因此可以使用更少的带宽。
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
服务器端启动
usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
可能需要 root权限运行.
/etc/rsyncd/rsyncd.conf 是你刚才编辑的rsyncd.conf的位置.
也可以在/etc/rc.d/rc.local里加入让系统自动启动等.
客户端同步
1
|
[root@Centos ~]# yum install -y rsync
|
1
2
3
|
[root@Centos ~]# mkdir /root/test
[root@Centos ~]# vim /etc/rsyncd.pass
lansgg:lansgg123
|
1
|
[root@Centos ~]# chmod
600
/etc/rsyncd.pass
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root@Centos ~]# vim /etc/rsyncd.conf
uid=root #该选项指定当该模块传输文件时守护进程应该具有的uid;默认值是
"nobody"
,
gid=root ##该选项指定当该模块传输文件时守护进程应该具有的gid;默认值是”nobody”。
use
chroot=no #不使用chroot
max connections=
0
#设置最大连接数,默认为
0
,即无限制。你可以随意设置,
10
、
20
都可以
strict mode=yes #设置是否检查口令文件的权限
pid file=/
var
/run/rsyncd.pid #指定rysnc进程的pid文件位置
lock file=/
var
/lock/rsync.lock #指定支持max connections的锁文件
log file=/
var
/log/rsyncd.log #指定 rsync日志输出路径
[lansggtest] #模块名,可使用任意名称
path=/root/test/ #同步源目录路径
comment=lansgg test #模块描述
ignore errors #出现I/O错误时可忽略。
read only=no #是否只读,设置为no时客户端可上传文件。
write only=no #设置为no 时客户端可下载文件。
hosts allow=
192.168
.
182.129
#允许访问主机
hosts deny=* #拒绝访问的主机,*表示所有主机。
list=
false
#设置客户端请求时是否列出该模块,
false
为隐藏。
auth users=lansgg #设置连接时使用的用户,即密码文件里面定义的用户名。如果没有这行,则表明是匿名
secrets file=/etc/rsyncd.pass #指定密码文件位置
|
1
|
[root@Centos ~]# rsync --daemon
|
1
|
[root@lv2 ~]# yum install rsync -y
|
1
2
|
[root@lv2 ~]# vim /etc/rysncd.pass
lansgg123
|
1
|
rsync -vzrtopg --
delete
--progress --exclude
"*.log"
lansgg@www.jingjingdianying.com
::lansggtest /root/backup --password-file=/etc/rsyncd.pass
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
uid=root #该选项指定当该模块传输文件时守护进程应该具有的uid;默认值是
"nobody"
,
gid=root ##该选项指定当该模块传输文件时守护进程应该具有的gid;默认值是”nobody”。
use
chroot=no #不使用chroot
max connections=
0
#设置最大连接数,默认为
0
,即无限制。你可以随意设置,
10
、
20
都可以
strict mode=yes #设置是否检查口令文件的权限
pid file=/
var
/run/rsyncd.pid #指定rysnc进程的pid文件位置
lock file=/
var
/lock/rsync.lock #指定支持max connections的锁文件
log file=/
var
/log/rsyncd.log #指定 rsync日志输出路径
[lansggtest] #模块名,可使用任意名称
path=/root/test/ #同步源目录路径
comment=lansgg test #模块描述
ignore errors #出现I/O错误时可忽略。
read only=no #是否只读,设置为no时客户端可上传文件。
write only=no #设置为no 时客户端可下载文件。
hosts allow=
192.168
.
182.129
#允许访问主机
hosts deny=* #拒绝访问的主机,*表示所有主机。
list=
false
#设置客户端请求时是否列出该模块,
false
为隐藏。
auth users=lansgg #设置连接时使用的用户,即密码文件里面定义的用户名。如果没有这行,则表明是匿名
secrets file=/etc/rsyncd.pass #指定密码文件位置
|
1
|
[root@Centos ~]# yum install inotify-tools -y
|
1
2
3
|
rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch
|
1
2
3
|
mkdir /root/backup
vim /etc/rsyncd.pass
lansgg123
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
vi dataup.sh
#!/bin/bash
server1=http://dy.01chengde.cn
server2=
192.168
.
182.131
server3=
192.168
.
182.132
src=/root/backup
dstmode=mode1
user=lansgg
/usr/bin/inotifywait -mrq --timefmt
'%d/%m/%y %H:%M'
--format
'%T %w%f%e'
-e modify,
delete
,create,attrib $src|
while
read files
do
rsync -vzrtopg --
delete
--progress --password-file=/etc/rsyncd.pass $src $user@$server1::$dstmode
rsync -vzrtopg --
delete
--progress --password-file=/etc/rsyncd.pass $src $user@$server2::$dstmode
rsync -vzrtopg --
delete
--progress --password-file=/etc/rsyncd.pass $src $user@$server3::$dstmode
echo
"$files was rsynced"
>> /tmp/rsync.log
2
>&
1
done
|
1
2
3
|
[root@node1 ~]# ./dataup.sh &
[
1
]
10461
[root@node1 ~]# tail -f /tmp/rsync.log
|