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
|