使用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