數據同步之rsync | 第1篇:rsync基本使用

文章來源:王琦的個人博客-使用rsync進行數據同步 ,互聯網打雜,喜歡多語言編程,記錄一些知識碎片,分享一些心得。

介紹

rsync是一個可實現全量以及增量的本地或者遠程數據同步備份的工具,可以不進行改變原有數據的屬性,實現數據備份遷移。可以本地複製,遠程複製,或者遠程守護進程方式複製,只發送源文件和目標文件之間的差異信息,實現數據的增量同步。首次傳輸採用全量傳輸。

rsync特性

  • 支持拷貝普通文件和特殊文件,如鏈接文件,設備等
  • 支持排除指定文件或目錄同步的功能,類似tar打包命令排除功能。
  • 支持保持源文件或目錄的所有屬性信息不變
  • 支持增量同步,只同步變化數據,效率高
  • 支持rcp,rsh,ssh來配合進行隧道加密傳輸文件
  • 支持使用通過socket(守護進程方式)傳輸文件或目錄信息
  • 支持用戶認證方式傳輸數據

rsync命令簡單應用

命令

-a --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等價於-rtopgDl
-r 對子目錄以遞歸模式,即目錄下的所有目錄都同樣傳輸,注意是小寫的r.
-o 保持文件屬性信息
-p 保持文件權限
-g 保持文件屬組信息
-P 顯示同步的過程及傳輸時的進度等信息
-D 保持設備文件信息
-l 保持軟連接
-avzP 提示:這裏的 相當於 -vzrtopgDlP(還多了Dl功能)生產環境常用 
-avz 定時任務就不用輸出過程了可以-az

rsync同步目錄

rsync -rp /tmp 172.16.1.31:/tmp/

注意:rsync 同步目錄 /tmp/目錄後有/信息,表示將目錄下的數據內容進行同步,沒有/則同步目錄

rsync實現刪除

rsync -r --delete /null/ /tmp/

刪除是將一個空目錄和一個有數據的目錄進行同步,會將有數據目錄中的文件進行清空

rsync守護進程模式應用

語法格式:

pull:rsync [OPTION…] [USER@]HOST::SRC… [DEST]

push:rsync [OPTION…] SRC… [USER@]HOST::DEST

  • SRC:本地要推送到遠程的文件或目錄
  • USER:認證用戶
  • HOST:主機
  • DEST:模塊名

rsync -avz ./test.txt [email protected]::backup --password-file=/etc/rsync.password

服務端部署

1、編寫配置文件

vim /etc/rsyncd.conf

#rsync_config
#created by WQ at 2016
##rsyncd.conf start##

uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
# 在模塊上邊的配置是全局配置,對所有模塊生效
[backup]
comment = "backup dir"
path = /backup

2、創建用戶&創建備份目錄

useradd rsync -M -s /sbin/nologin
mkdir /backup
chown -R rsync.rsync /backup

3、創建認證文件

echo "rsync_backup:hiwangqi" >> /etc/rsync.password

chmod 600 /etc/rsync.password

4、啓動rsync --daemon,默認監聽端口號873。

可選參數:

–porst 8730 指定端口

–config=/etc/rsyncd.conf 指定配置文件

客戶端部署

創建密碼文件

echo "hiwangqi" >> /etc/rsync.password
chmod 600 /etc/rsync.password

測試

rsync -avz ./test.txt [email protected]::backup --password-file=/etc/rsync.password

輸出>>
sending incremental file list
test.txt

sent 209 bytes  received 27 bytes  157.33 bytes/sec
total size is 292  speedup is 1.24

其他命令

1、排除指定文件

–exclude=file

# --exclude=file
rsync -avz /root/test/ --exclude=b.txt --exclude=d.txt [email protected]::backup --password-file=/etc/rsync.password

# --exclude={a.txt,b.txt}
rsync -avz /root/test/ --exclude={a.txt,b.txt} [email protected]::backup --password-file=/etc/rsync.password
# --exclude-from=test.txt
rsync -avz /root/test/ --exclude-from=test.txt [email protected]::backup --password-file=/etc/rsync.password

2、無差異同步,目錄文件保持一致,也可用作清空

–delete

rsync -avz /root/test --delete [email protected]::backup --password-file=/etc/rsync.password

3、列出目錄

# 服務端配置文件需設置list=true
rsync [email protected]::
>>輸出
backup 	"backup dir"

配置文件參數

use chroot=no #進行數據同步時,安全相關參數,默認內網同步,可以關閉。

max connections=200 #定時向備份服務器進行數據存儲的併發連接數。

timeout = 300 #超過指定時間沒有數據傳輸就釋放鏈接。

pid file 程序運行時,將pid保存到文件

lock file 定義鎖文件,主要配合max connections 參數,達到最大連接就禁止訪問

[backup] 指定備份目錄的模塊信息

path = /backup 指定數據進行備份的目錄信息

ignore errors 數據備份傳輸過程中,忽略一些I/O產生的傳輸錯誤

read only = false 講只讀模式進行關閉,也就是可以讀寫

list = false 服務配置模塊的信息是否對客戶端可見

hosts allow = 172.16.1.0/24 白名單

hosts deny = 0.0.0.0/32 黑名單

auth user = resync_backup 指定認證用戶。

secrets file = /etc/rsync.password 認證用戶的密碼文件信息。

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