使用rsync同步網站資料

安裝rsync

ubuntu 16.0.4 or raspbin
apt-get install rsync
centos 7 
yum install rsync

設定伺服器端
配置rsync文件

vim /etc/rsyncd.conf

添加以下內容

log file = /var/log/rsyncd.og

[設定檔名稱]
        #備份之檔案的存放路徑 
        path = /var/lib/mysql/Typecho
        #驗證的用戶名稱 (此名稱只需存在於密碼檔裡面即可)
        auth user = 使用者帳號
        #執行程式時所使用的用戶及群組名稱,同時也會成為備份之後檔案的擁有者及擁有群組
        uid = mysql
        gid = mysql
        #密碼檔的位置
        secrets file = /etc/rsyncd.secrets
        read only = no

設定帳密

vim /etc/rsyncd.secrets

新增密碼檔之後,要將權限設為 600 (如不設定權限為 600,則啟動 rsync 服務時會有錯誤):

chmod 600 /etc/rsyncd.secrets

內容格式為底下

帳號:密碼

範例:
hank:sercet

啟動rsync

rsync --daemon --config=/etc/rsyncd.conf

systemctl 啟動 rsync

systemctl start rsyncd.service

查看是否啟動成功

netstat -an | grep 873

注意:只有服務器需要開啟 873 Port,client端不需要,也就是說用來放置備份的服務器才需要開啟。

設定firewalld防火牆

暫時開放rsyncd
firewall-cmd --zone=public --add-service=rsyncd
永久性開放
firewall-cmd --zone=public --permanent --add-service=rsyncd

or

暫時開放rsyncd
firewall-cmd --zone=public --add-port=873/tcp
永久性開放
firewall-cmd --zone=public --permanent --add-port=873/tcp

設定iptables防火牆

iptables -A INPUT -p tcp  –dport 873 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp –sport 873 -m state –state ESTABLISHED -j ACCEPT

如過想限制特定ip的話,請在INPUT裡面增加

iptables -A INPUT -p tcp -s 192.168.101.0/24 –dport 873 -m state –state NEW,ESTABLISHED -j ACCEPT

如果客戶端iptables的policy為DROP的話,請添加以下iptables
客戶端的iptables設定

iptables -A INPUT -p tcp -m tcp --sport 873 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 873 -j ACCEPT

客戶端
客戶端所需要做的僅是執行 /usr/bin/rsync,rsync 做為同步處理時,常用的參數如下:

-a, --archive: 這最常被使用的參數,相當於同時使用 -rlptgoD
-r: 子目錄遞迴
-l: 複製符號連結
-p: 複製檔案權限
-t: 複製時間屬性
-g: 複製群組屬性
-o: 複製擁有者屬性
-D: 複製裝置屬性
    -v, --verbose: 顯示詳細資訊 
    -z, --compress: 壓縮傳輸的資料,以減少傳輸量 
    -R, --relative: 備份後,使用本地端完整的路徑 (不加此參數,則為相對路徑)
    -H, --hard-links: 保留檔案的連結 
    -S, --sparse: 使有比較有效率的方式處理零散的檔案 
    -P: 等同加了 --partial --progress
    --partial: 保留傳輸中斷的檔案以進行續傳
    --progress: 即時顯示檔案傳輸的進度
    --delete: 本地端如果刪掉檔案,則備份伺服器也同時刪除該檔案,以保持兩邊檔案的一致 
    --password-file: 密碼檔的位置 (如不輸入此參數,則程式執行時會詢問你) 

遠端同步的語法:

/usr/bin/rsync [-參數] [--參數] [--password-file=密碼檔位置] [本地端備份來源路徑] [用戶名稱@遠端備份伺服器位址::備份代號]

Client端進行鏡像傳輸

rsync -avh --delete  --numeric-ids \
--password-file=/root/rsyncd.secrets \
欲備份的路徑 \
使用者帳號@服務器位置::設定檔名稱

實際範例:

rsync -avh --delete  --numeric-ids \
--password-file=/root/rsyncd.secrets \
/var/lib/mysql/* \
hank@192.168.1.1::sql
Last modification:May 16, 2018
If you think my article is useful to you, please feel free to appreciate