Rsync + Crontab实现定时文件同步(首次全量+后续增量) 2015-04-14 19:02:11
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lu2yu.blog.51cto.com/10009517/1632410
一、简介
在配置HA的时候,需要配置多个节点的配置,节点间的配置很多时候都是类似重复的,也许可以通过scp等手段实现,但是每次的更改都需要手动scp也显得麻烦,这边我们可以通过rsync的方式来实现文件的同步。
使用rsync+crontab做定时同步时,主服务器端开启rsync守护进程,而镜像服务器是运行rsync客户端,平时一般会利用crontab定时获取rsync服务器上的数据。
二、配置
①rsync的服务端(文件发送出去端)
以守护进程的形式后台运行
1.rsync的安装和文件包组成
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
|
[root@web1 ~] # yum install rsync [root@web1 ~] # rpm -ql rsync /etc/xinetd .d /rsync ##基于xinetd的管理 /usr/bin/rsync ##rsync工具 /usr/share/doc/rsync-3 .0.6 /usr/share/doc/rsync-3 .0.6 /COPYING /usr/share/doc/rsync-3 .0.6 /NEWS /usr/share/doc/rsync-3 .0.6 /OLDNEWS /usr/share/doc/rsync-3 .0.6 /README /usr/share/doc/rsync-3 .0.6 /support /usr/share/doc/rsync-3 .0.6 /support/Makefile /usr/share/doc/rsync-3 .0.6 /support/atomic-rsync /usr/share/doc/rsync-3 .0.6 /support/cvs2includes /usr/share/doc/rsync-3 .0.6 /support/deny-rsync /usr/share/doc/rsync-3 .0.6 /support/file-attr-restore /usr/share/doc/rsync-3 .0.6 /support/files-to-excludes /usr/share/doc/rsync-3 .0.6 /support/git-set-file-times /usr/share/doc/rsync-3 .0.6 /support/logfilter /usr/share/doc/rsync-3 .0.6 /support/lsh /usr/share/doc/rsync-3 .0.6 /support/mnt-excl /usr/share/doc/rsync-3 .0.6 /support/munge-symlinks /usr/share/doc/rsync-3 .0.6 /support/rrsync /usr/share/doc/rsync-3 .0.6 /support/rsyncstats /usr/share/doc/rsync-3 .0.6 /support/savetransfer .c /usr/share/doc/rsync-3 .0.6 /tech_report .tex /usr/share/man/man1/rsync .1.gz /usr/share/man/man5/rsyncd .conf.5.gz |
软件包组成中没有提供配置文件和相应的文件,因此需要自行添加如下:
1
2
3
4
5
|
[root@node1 ~] # mkdir /etc/rsyncd ##创建配置目录 [root@node1 ~] # touch /etc/rsyncd/rsyncd.conf ##创建主配置文件 [root@node1 ~] # touch /etc/rsyncd/rsyncd.secrets ##创建用户密码文件 [root@node1 ~] # chmod 600 /etc/rsyncd/rsyncd.secrets ##修改用户密码文件 [root@node1 ~] # touch /etc/rsyncd/rsyncd.motd ##创建定义服务器信息的文件 |
2.编辑配置rsyncd.conf
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
|
[root@node1 ~] # vi /etc/rsyncd/rsyncd.conf # Minimal configuration file for rsync daemon # See rsync(1) and rsyncd.conf(5) man pages for help # This line is required by the /etc/init.d/rsyncd script pid file = /var/run/rsyncd .pid port = 873 ##监听端口 address = 192.168.192.208 ##监听地址 #uid = nobody #gid = nobody uid = root gid = root use chroot = yes ##是否限制在指定目录,为了安装,一般需要启用 read only = no #limit access to private LANs hosts allow=192.168.192.0 /255 .255.255.0 ##允许网段 hosts deny=* max connections = 5 motd file = /etc/rsyncd/rsyncd .motd #This will give you a separate log file #log file = /var/log/rsync.log #This will log every file transferred - up to 85,000+ per user, per sync #transfer logging = yes log format = %t %a %m %f %b syslog facility = local3 timeout = 300 ##定义一个同步目录 [webdir] path = /var/www/html list= yes ignore errors auth users = apache secrets file = /etc/rsyncd/rsyncd .secrets ##指定上述账号密码文件 comment = web home exclude = data/ ##排除目录 |
3.添加账号密码文件
1
2
3
|
[root@node1 ~] # vi /etc/rsyncd/rsyncd.secrets apache:123456 ##注意,这个账号是系统账号,但没有使用系统账号的密码,而是自定义密码 |
4.让rsync以守护进程运行
1
|
[root@node1 ~] # /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf |
5.开机自动启动
1
|
[root@node1 ~] # echo "/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf" >> /etc/rc.d/rc.local |
②配置rsync的客户端
客户端同样需要安装rsync,但是只需要配置如下文件即可
1
2
3
|
[root@node2 ~] # mkdir /etc/rsyncd ##创建配置目录 [root@node2 ~] # echo “passowd123”> /etc/rsyncd/rsyncd.password ##创建密码文件,密码为服务器端rsyncd.secrets文件中的密码。 [root@node2 ~] # chmod 600 /etc/rsyncd/rsyncd.password |
③同步操作
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@node2 ~] # rsync -avzP --delete --password-file=/etc/rsyncd/rsyncd.password apache@192.168.192.208::webdir /var/www/html/ 说明: --delete:本地与服务器完全一样,如果本地存在不一样的,则删除,慎用 --password- file :指定密码文件,如果不指定,则需手动输入 -a :参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件; -z :传输时压缩; -P :传输进度; - v :传输时的进度等信息 apache@192.168.192.208::webdir 用双冒号引用主配置文件中的定义资源,也可以使用单引号跟绝对路径 以后同步时,只会同步新增内容。 |
④
1
|
将 rsync -avzP --delete --password- file = /etc/rsyncd/rsyncd .password apache@192.168.192.208::webdir |