rsync 遠程同步 linux 及 windows 主機

一、前言

1、rsync原理及rsync+inotify觸發同步

    可以配置SSH信任,做信任後,同步就不需要密碼文件了

    http://nmshuishui.blog.51cto.com/1850554/1387048

2、本篇說明 

    爲了保證數據的絕對可靠性:

    首先,所有的服務器的數據都用腳本打包備份在本地一份,如上篇博客

    其次,單獨拿出一臺pc機做備份機,爲rsync客戶端,每天定時卻拉取各rsync服務器備份好的數據包

    再次,使用rsync同步 linux 及 windows 服務器

3、服務器說明 

    rsync服務器:192.168.200.16,192.168.200.18

    rsync客戶端:192.168.1.186

    這三臺服務器都是linux,rsync同步windows服務器到linux服務器在第四條

二、部署rsync服務端
1、 禪道服務器(192.168.200.16)
(1)安裝超級守護進程

#yum –y install xinetd

(2)爲rsync服務提供配置文件

#vim /etc/rsyncd.conf
#Global Settings        
uid = nobody
gid = nobody
use chroot = no
max connections = 5
timeout = 600
pid file = /var/run/rsyncd.pid
lockfile = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log

#module
[chandao]
path = /opt/backup/
ignore errors = yes
read only = no
write only = no
hosts allow = *
hosts deny = *
list = yes
uid = root
gid = root
auth users = dianyi
secrets file = /etc/chandao.passwd

(3)配置rsync認證文件/etc/chandao.passwd

[root@chandao ~]#echo “dianyi:dianyi” > /etc/chandao.passwd        
[root@chandao ~]#cat /etc/chandao.passwd
dianyi:dianyi

(4)修改/etc/chandao.passwd的權限爲600

[root@chandao ~]#chmod 600 /etc/chandao.passwd
[root@chandao ~]# ll /etc/chandao.passwd
-rw------- 1 root root 14 Jul 29 18:18 /etc/chandao.passwd

(5)配置服務啓動

[root@chandao ~]# chkconfig rsync on
[root@chandao ~]# service xinetd start

(6)檢查873端口是否成功監聽

[root@chandao ~]# ss -antlp | grep 873

(7)檢查rsync運行狀態

[root@chandao ~]# chkconfig --list

 2、禪道數據庫服務器(192.168.200.18)
(1)安裝超級守護進程

#yum –y install xinetd

(2)爲rsync服務提供配置文件

#vim /etc/rsyncd.conf
#Global Settings
uid = nobody
gid = nobody
use chroot = no
max connections = 5
timeout = 600
pid file = /var/run/rsyncd.pid
lockfile = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log

#module
[db_chandao]
path = /opt/backup/
ignore errors = yes
read only = no
write only = no
hosts allow = *
hosts deny = *
list = yes
uid = root
gid = root
auth users = dianyi
secrets file = /etc/db_chandao.passwd

(3)配置rsync認證文件/etc/db_chandao.passwd

[root@DBSlave ~]#echo “dianyi:dianyi” > /etc/db_chandao.passwd
[root@DBSlave ~]#cat /etc/db_chandao.passwd
dianyi:dianyi

(4)修改/etc/db_chandao.passwd 的權限爲600

[root@DBSlave ~]#chmod 600 /etc/db_chandao.passwd
[root@DBSlave ~]# ll /etc/db_chandao.passwd
-rw------- 1 root root 14 Jul 29 18:18 /etc/db_chandao.passwd

(5)配置服務啓動

[root@DBSlave ~]# chkconfig rsync on
[root@DBSlave ~]# service xinetd start

(6)檢查873端口是否成功監聽

[root@DBSlave ~]# ss -antlp | grep 873

(7)檢查rsync運行狀態

[root@DBSlave ~]# chkconfig --list

三、部署rsync客戶端(192.168.1.186)
1、設置rsync客戶端的密碼文件
(1)禪道的密碼文件

[root@backup ~]#echo dianyi > /etc/chandao.passwd
[root@backup ~]# cat /etc/chandao.passwd
dianyi

(2)禪道數據庫的密碼文件

[root@backup ~]#echo dianyi > /etc/db_chandao.passwd
[root@backup ~]# cat /etc/db_chandao.passwd
dianyi

2、修改密碼文件的的權限爲600

[root@backup ~]# chmod 600 /etc/chandao.passwd
[root@backup ~]# chmod 600 /etc/db_chandao.passwd
[root@backup ~]# ll /etc/chandao.passwd /etc/db_chandao.passwd
-rw------- 1 root root 7 Jul 29 17:17 /etc/chandao.passwd
-rw------- 1 root root 7 Jul 29 16:19 /etc/db_chandao.passwd

3、測試rsync客戶端是否可以從rsync服務器拉成功

[root@backup ~]# rsync -vzrtopg --password-file=/etc/chandao.passwd [email protected]::chandao/* /tmp

4、rsync同步腳本

#!/bin/bash
#func:rsync for chandao
#Date:first write on 2014.7.29
#Version:v1.0

ntpdate 192.168.200.16 > /dev/null 2>&1
date=`date +%Y-%m-%d`
dest_chandao=/opt/backup/chandao/zentao
dest_db=/opt/backup/chandao/db_chandao
remote_chandao=192.168.200.16
remote_db=192.168.200.18
module_chandao=chandao
module_db=db_chandao
[email protected]
[email protected]

main(){
     rsync -vzrtopg --password-file=/etc/chandao.passwd dianyi@$remote_chandao::$module_chandao/*$date* $dest_chandao
     if [ $? -eq 0 ];then
         echo "chandao-*$date* was rsynced" >>  /opt/log/chandao_rsync.log 2>&1;
     else
         echo "chandao-*$date* was not rsynced" >>  /opt/log/chandao_rsync.log 2>&1;
         echo "Chandao rsync was faild " | mail -s "chandao backup" $user2;
     fi

     rsync -vzrtopg --password-file=/etc/db_chandao.passwd dianyi@$remote_db::$module_db/*$date* $dest_db
     if [ $? -eq 0 ];then
         echo "db_chandao_*$date* was rsynced" >>  /opt/log/chandao_rsync.log 2>&1;
     else
         echo "db_chandao_*$date* was not rsynced" >>  /opt/log/chandao_rsync.log 2>&1;
         echo "db_chandao rsync was faild " | mail -s "chandao backup" $user2;
     fi
}

main

四、定時任務

[root@backup ~]# crontab -e
##rsync for chandao
20 09 * * * /bin/sh /opt/scripts/rs_chandao.sh

五、同步windows數據到linux備份機上
     主體思想還是和linux保持一致的
          rsync服務器需要配置2個方面:(1)配置文件 (2)密碼文件 
          接下來就是rsync客戶端配置:     (1)密碼文件 (2)權限設爲600
1、下載cwrsync server
    安裝時,設置的用戶和密碼均爲dianyi,即兩臺機器使用rsync相互通信時會使用到的用戶名和密碼
2、在這臺windows上配置rsync服務器,遠程linux做爲rsync的客戶端來拉取windows服務器上的文件
(1)修改配置文件
     在C:\Program Files (x86)\ICW\rsyncd.conf 添加模塊

use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log

# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#

[svn]
path = /cygdrive/e/Repositories    #e代表e盤
ignore errors = yes
read only = no
transfer logging = yes
write only = no
hosts allow = *
hosts deny = *
list = yes
uid = 0           #這裏的udi和gid不再是root或是nobody,而應該是0,如果不填會報會報:@ERROR: invalid uid nobody
gid = 0
auth users = dianyi
secrets file = etc/svn.passwd

(2)創建密碼文件
       在C:\Program Files (x86)\ICW\etc中創建密碼文件svn.passwd
       內容爲     dianyi:dianyi
(3)啓動rsync服務
       運行 --> services.msc --> RsyncServer 啓動類型:自動
(4)查看873端口是否監聽成功
       運行 --> cmd --> netstat -ano

(5)在防火牆中開放tcp 873端口
3、配置rsync客戶端(remote linux:192.168.1.186)
(1)創建密碼認證文件

vim /etc/svn.passwd
dianyi

(2)設置權限

chmod 600 /etc/svn.passwd

(3)測試

# rsync -vzrtopg --password-file=/etc/svn.passwd [email protected]::svn/* /opt/111/

    上面這個命令行中-vzrtopg裏的v是verbose,z是壓縮,r是recursive,topg都是保持文件原有屬性如屬主、時間的參數

5、把命令添加到腳本




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章