rsync的自動指令碼實現方案(非rsyncd服務)

餘二五發表於2017-11-08

1、前言

rsyncd的方式筆者認為方便,但會在系統留下一個被攻擊的服務點,筆者認為用自動函式+普通使用者的方式較安全,故而寫下此文備用。

2、實現

2.1、環境

rsyncSer:

ipaddress=10.168.0.100

client:

ipaddress=10.168.0.8

2.2、yum的安裝

In rsyncSer & client

1
yum -y install rsync

2.3、服務端配置

In rsyncSer:

1
2
3
4
5
mkdir /files
chmod 700 -R /files/
useradd rsuser
echo rspw | passwd --stdin rsuser
setfacl -m u:rsuser:r-x /files

以上設定可保障資料的安全,避免其他非root使用者獲取。

2.4、客戶端設定

In client:

2.4.1、建立指令碼資料夾

1
mkdir ~/script

2.4.2、建立指令碼

vim編輯~/script/rs.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
souUser=rsuser #服務端建立的使用者名稱
souPwd=rspw #服務端建立的密碼
souIP=10.168.0.100 #服務端ip address
souDir=/files/#服務端的路徑
desDir=/files #客戶端的路徑
auto_rsync () {
    expect -c "set timeout -1;
                spawn rsync -av --delete $2@$3:$4 $5;
                expect {
                    *assword:* {send -- $1
;
                                 expect {
                                    *denied* {exit 2;}
                                    eof
                                 }
                    }
                    eof         {exit 1;}
                }
                "
    return $?
}
auto_rsync $souPwd $souUser $souIP $souDir $desDir

以上相當於手動執行:

1
rsync -av  --delete rsuser@10.168.0.100:/files//files

2.4.3、安全設定

1
chmod 700 -R ~/script

2.4.4、定時任務

1
crontab -e

加入內容

1
*/15 * * * * sh ~/script/rs.sh

本文轉自 tanzhenchao 51CTO部落格,原文連結:http://blog.51cto.com/cmdschool/1720998,如需轉載請自行聯絡原作者


相關文章