Linux兩個(gè)服務(wù)器實(shí)現(xiàn)數(shù)據(jù)同步方案
Linux兩個(gè)服務(wù)器,數(shù)據(jù)同步方案實(shí)踐
一、什么是 rsync 遠(yuǎn)程同步
rsync
:是C/S架構(gòu)的數(shù)據(jù)鏡像備份工具,可以實(shí)現(xiàn)全量備份和快速增量備份支持本地復(fù)制或ssh、rsync主機(jī)同步。
rsync
:默認(rèn)端口為 873
rsync
特性:可以在不通主機(jī)之間鏡像同步整個(gè)目錄樹,支持增量備份、保持鏈接和權(quán)限、時(shí)間、屬性且傳輸前自動(dòng)執(zhí)行壓縮、rsync
不需要特殊權(quán)限即可安裝,centos系統(tǒng)默認(rèn)安裝,支持匿名傳輸,注意發(fā)起端要有對(duì)應(yīng)目錄位置的讀權(quán)限
- 完全備份:每次備份將備份源所有文件或目錄備份到目的。
- 差量備份:備份上次完全備份以后有變化的數(shù)據(jù)。
- 增量備份:備份上次完全備份以后有變化的數(shù)據(jù)。
二、rsync 同步原理
- 本地復(fù)制:首先是將源文件和目的位置文件對(duì)比找出差異,然后將源文件與目的位置的差異部分進(jìn)行一致性同步。
- 下行同步:客戶端與服務(wù)端同步內(nèi)容,可以理解為客戶端從服務(wù)器上下載內(nèi)容
- 上行同步:服務(wù)端與客戶端同步內(nèi)容,可以理解為客戶端將內(nèi)容上傳到服務(wù)器
優(yōu)點(diǎn): 第一次同步時(shí) rsync 會(huì)復(fù)制全部?jī)?nèi)容,但在下一次只傳輸修改過的文件。支持增量備份。
選擇性的保持 : 符號(hào)鏈接,硬鏈接,文件屬性,權(quán)限 及時(shí)間 等。
傳輸前執(zhí)行壓縮。適用于異地備份 ,鏡像服務(wù)器等應(yīng)用 。
安全,使用ssh做為傳輸端口。 sftp ,ssh
三、相關(guān)命令
- -v, --verbose 詳細(xì)模式輸出
- -q, --quiet 精簡(jiǎn)輸出模式
- -c, --checksum 打開校驗(yàn)開關(guān),強(qiáng)制對(duì)文件傳輸進(jìn)行校驗(yàn)
- -a, --archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
- -r, --recursive 對(duì)子目錄以遞歸模式處理
- -R, --relative 使用相對(duì)路徑信息
- -b, --backup 創(chuàng)建備份,也就是對(duì)于目的已經(jīng)存在有同樣的文件名時(shí),將老的文件重新命名為~filename??梢允褂?ndash;suffix選項(xiàng)來指定不同的備份文件前綴。
- –backup-dir 將備份文件(如~filename)存放在在目錄下。
- -suffix=SUFFIX 定義備份文件前綴
- -u, --update 僅僅進(jìn)行更新,也就是跳過所有已經(jīng)存在于DST,并且文件時(shí)間晚于要備份的文件。(不覆蓋更新的文件)
- -l, –links 保留軟鏈結(jié)
- -L, --copy-links 像對(duì)待常規(guī)文件一樣處理軟鏈接
- –copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈接
- –safe-links 忽略指向SRC路徑目錄樹以外的鏈接
- -H, --hard-links 保留硬鏈接
- -p, --perms 保持文件權(quán)限
- -o, –owner 保持文件屬主信息
- -g, --group 保持文件屬組信息
- -D, --devices 保持設(shè)備文件信息
- -t, --times 保持文件時(shí)間信息
- -S, –sparse 對(duì)稀疏文件進(jìn)行特殊處理以節(jié)省DST的空間
- -n, --dry-run顯示哪些文件將被傳輸
- -W, --whole-file 拷貝文件,不進(jìn)行增量檢測(cè)
- -x, --one-file-system 不要跨越文件系統(tǒng)邊界
- -B, --block-size=SIZE 檢驗(yàn)算法使用的塊尺寸,默認(rèn)是700字節(jié)
- -e, --rsh=COMMAND 指定使用rsh、ssh方式進(jìn)行數(shù)據(jù)同步
- –rsync-path=PATH 指定遠(yuǎn)程服務(wù)器上的rsync命令所在路徑信息
- -C, --cvs-exclude 使用和CVS一樣的方法自動(dòng)忽略文件,用來排除那些不希望傳輸?shù)奈募?/li>
- –existing 僅僅更新那些已經(jīng)存在于DST的文件,而不備份那些新創(chuàng)建的文件
- –delete 刪除那些DST中SRC沒有的文件
- –delete-excluded 同樣刪除接收端那些被該選項(xiàng)指定排除的文件
- –delete-after 傳輸結(jié)束以后再刪除
- –ignore-errors 即使出現(xiàn)IO錯(cuò)誤也進(jìn)行刪除
- –max-delete=NUM 最多刪除NUM個(gè)文件
- –partial 保留那些因故沒有完全傳輸?shù)奈募?,以是加快隨后的再次傳輸
- –force 強(qiáng)制刪除目錄,即使不為空
- –numeric-ids 不將數(shù)字的用戶和組ID匹配為用戶名和組名
- –timeout=TIME IP超時(shí)時(shí)間,單位為秒
- -I, --ignore-times 不跳過那些有同樣的時(shí)間和長(zhǎng)度的文件
- –size-only 當(dāng)決定是否要備份文件時(shí),僅僅察看文件大小而不考慮文件時(shí)間
- –modify-window=NUM 決定文件是否時(shí)間相同時(shí)使用的時(shí)間戳窗口,默認(rèn)為0
- -T –temp-dir=DIR 在DIR中創(chuàng)建臨時(shí)文件
- –compare-dest=DIR 同樣比較DIR中的文件來決定是否需要備份
- -P 等同于 --partial
- –progress 顯示備份過程
- -z, –compress 對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理
- –exclude=PATTERN 指定排除不需要傳輸?shù)奈募J?/li>
- –include=PATTERN 指定不排除而需要傳輸?shù)奈募J?/li>
- –exclude-from=FILE 排除FILE中指定模式的文件
- –include-from=FILE 不排除FILE指定模式匹配的文件
- –version 打印版本信息
- –address 綁定到特定的地址
- –config=FILE 指定其他的配置文件,不使用默認(rèn)的rsyncd.conf文件
- –port=PORT 指定其他的rsync服務(wù)端口
- –blocking-io 對(duì)遠(yuǎn)程shell使用阻塞IO
- -stats 給出某些文件的傳輸狀態(tài)
- –progress 在傳輸時(shí)顯示傳輸過程
- –log-format=formAT 指定日志文件格式
- –password-file=FILE 從FILE中得到密碼
- –bwlimit=KBPS 限制I/O帶寬,KBytes per second
- -h, --help 顯示幫助信息
四、如何使用
4.1 查看是否安裝、啟動(dòng);
#查看rsync是否安裝(系統(tǒng)默認(rèn)已裝) sudo rpm -q rsync #安裝 yum -y install rsync #啟動(dòng)rsync服務(wù) systemctl start rsyncd.service systemctl enable rsyncd.service #檢查是否已經(jīng)成功啟動(dòng) netstat -lnp|grep 873
tip: 防火墻需求打開873端口
4.2 服務(wù)器配置
4.2.1 編輯配置文件
#編輯 配置文件 sudo vim /etc/rsyncd.conf
編輯之后如下:
# /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: uid = root gid = root port = 873 use chroot = no # read only = no # list = no max connections = 4 # pid file = /var/run/rsyncd.pid exclude = lost+found/ transfer logging = yes timeout = 900 motd file = /etc/rsyncd/rsyncd.motd log file = /var/log/rsyncd.log lock file = /var/run/rsyncd.lock ignore nonreadable = yes dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 [simba] path = /mnt/ comment=simba ignore errors read only = no write only = no list = no auth users = root secrets file = /etc/rsyncd.pass hosts allow = *
tip:
path
:服務(wù)端存放客戶端上傳文件目錄secrets file
:秘鑰文件
4.2.2 編輯秘鑰文件
用于 客戶端與服務(wù)器通信秘鑰
sudo echo 'root:123456'>/etc/rsyncd.pass //文件用戶名和路徑為上面定義,別寫錯(cuò),密碼自己定 sudo chmod 600 /etc/rsyncd.pass //修改權(quán)限
4.2.3 指定配置文件
sudo vim /lib/systemd/system/rsyncd.service
修改如下:
在 ExecStart 添加 --config=/etc/rsyncd/rsyncd.conf
[Unit] Description=fast remote file copy program daemon ConditionPathExists=/etc/rsyncd/rsyncd.conf [Service] EnvironmentFile=/etc/sysconfig/rsyncd ExecStart=/usr/bin/rsync --config=/etc/rsyncd/rsyncd.conf --daemon --no-detach "$OPTIONS" [Install] WantedBy=multi-user.target
4.2.4 服務(wù)器配置完成,重啟服務(wù)
sudo systemctl daemon-reload sudo systemctl restart rsyncd
4.3 客戶端配置
sudo echo '123456' >>/etc/rsyncd.passwd //注意這里只需要服務(wù)器rsyncd.passwd 中的密碼 sudo chmod 600 /etc/rsyncd-test.passwd
4.4 發(fā)送文件
/mnt/map_mpdel
: 客戶端文件目錄--password-file
: 客戶端秘鑰文件123.xx.xx.xx
: 服務(wù)器ip
地址simba
: 服務(wù)器配置件 的組名
sudo rsync -auv --password-file=/etc/rsync.passwd /mnt/map_modele root@123.xx.xx.xx::simba
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Apache訪問出現(xiàn)501 Method Not Implemented錯(cuò)誤解決
這篇文章主要介紹了Apache訪問出現(xiàn)501 Method Not Implemented錯(cuò)誤解決,有些導(dǎo)致該錯(cuò)誤的情況可以用文中修改配置文件的方法來解決,需要的朋友可以參考下2015-07-07Linux取消目錄的執(zhí)行權(quán)限的具體步驟
用戶對(duì)一個(gè)文件或目錄具有訪問權(quán)限,這些訪問權(quán)限決定了誰能訪問,以及如何范圍這些文件和目錄,本文給大家介紹了Linux取消目錄的執(zhí)行權(quán)限的具體步驟,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-10-10Apache Ant自動(dòng)化腳本入門教程及常用命令介紹
這篇文章主要介紹了Apache Ant自動(dòng)化腳本入門教程及常用命令介紹的相關(guān)資料,需要的朋友可以參考下2016-06-06