rsync遠端同步
文章目錄
一、rsync同步簡介
1.1 關於rsync
Remote Sync,遠端同步
支援本地複製,或者與其他SSH,rsync主機同步
1.2 Rsync伺服器
1.Rsync是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠端資料同步備份的優秀工具。並且可以不進行改變原有資料的屬性資訊,實現資料的備份遷移特性。
2.Rsync軟體適用於unix/linux/windows等多種作業系統平臺。
3.Rsync是一個快速和非常通用的檔案複製工具。它能本地複製,遠端複製,或者遠端守護程式方式複製。它提供了大量的引數來控制其行為的各個方面,並且允許非常靈活的方式來實現檔案的傳輸複製。
4.以其delta-transfer演算法聞名。 rsync監聽埠:873 rsync執行模式:C/S
1.3 同步方式
全量備份
所有資料全部傳送
把原來的檔案和新的檔案一起統一傳送
全量複製,效率低
增量備份
在傳輸資料之前通過一些演算法通過你有的資料和我有的資料進行對比,把不一樣的資料通過網路傳輸
增量複製,效率較高
檢查是否安裝rsync
二、rsync語法結構
2.1 rsync常用引數
引數 | 說明 |
---|---|
-a | 歸檔模式傳輸, 等於-tropgDl(打包) |
-v | 詳細模式輸出, 列印速率, 檔案數量等 |
-z | 傳輸時進行壓縮以提高效率 |
-r | 遞迴傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。 |
-t | 保持檔案時間資訊 |
-o | 保持檔案屬主資訊 |
-p | 保持檔案許可權 |
-g | 保持檔案屬組資訊 |
-l | 保留軟連線 |
-P | 顯示同步的過程及傳輸時的進度等資訊 |
-D | 保持裝置檔案資訊 |
-L | 保留軟連線指向的目標檔案 |
-e | 使用的通道協議,指定替代 rsh 的 shell 程式 |
引數 | 說明 |
---|---|
–exclude=PATTERN | 指定排除不需要傳輸的檔案模式 |
–exclude-from=file | 檔名所在的目錄檔案 |
–bwlimit=100 | 限速傳輸 |
–partial | 斷點續傳 |
–delete | 讓目標目錄和源目錄資料保持一致 |
2.2 本地使用
類似於cp命令,將aaa目錄及裡面的檔案歸檔、壓縮拷貝到/opt下面並顯示詳細資訊
rsync -avz /aaa /opt
兩者對比
rsync -avz /aaa1 /opt
rsync -avz /aaa1/ /opt
2.3 遠端使用
1.對server1根目錄下的aaa1目錄及三個檔案進行備份
將根目錄下的aaa1目錄及檔案備份到server2根目錄下的server1檔案中(server2下面要提前建立目錄)
rsync -avz /aaa1 root@20.0.0.12:/server1
在server2上面檢視根目錄下的server1目錄
2.在已經備份完的情況下,server1下的aaa1有新增了新的內容
rsync -avz /aaa1 root@20.0.0.12:/server1
3.總結:在備份檔案時,備份後的目錄沒有原始檔,那麼會完全複製過去,在此基礎上原始檔做了改動(新增了新的檔案),再次備份的時候,只需要備份新增的檔案
2.4 刪除命令
刪除原始檔上不存在的檔案,目標檔案上進行刪除,保證與原始檔內容一致
舉例
在根目錄下建立一個bbb目錄,並在裡面建立三個檔案
在/opt下面建立一個bbb目錄,並在裡面建立四個檔案,與根目錄下的bbb稍做區分
rsync -avP --delete /bbb/ /opt/bbb/
-P
:顯示同步的過程及傳輸時的進度等資訊
--delete
:讓目標目錄和源目錄資料保持一致
三、rsync守護程式
3.1 部署
vi /etc/rsyncd.conf
uid = nobody 執行使用者
gid = nobody 執行組
use chroot = no 鎖定宿主目錄
max connections = 200 最大連線數
pid file = /var/run/rsyncd.pid 程式檔案
log file = /var/log/rsyncd.log 日誌檔案
# exclude = lost+found/ 執行許可權
# transfer logging = yes 傳輸日誌
# timeout = 900 連線超時時間
# ignore nonreadable = yes 忽略不可讀屬性
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 壓縮
hosts allow = 20.0.0.0/24 允許網段
address = 20.0.0.11 監聽地址
port 873 監聽埠
[wwwroot] 共享目錄名稱
path = /rsync 路徑
comment = test 描述
read only = yes 只讀
auth user = zhangsan 使用者
secrets file = /etc/user.db 使用者資料檔案路徑
編輯使用者檔案
vi /etc/user.db
賦只讀許可權
chmod 600 /etc/user.db
守護程式形式去啟動服務
rsync --daemon
檢視埠狀態
netstat -anpt | grep 873
server1建立測試用的檔案
3.2 拷貝複製操作
方法一 :在server2(20.0.0.12)上發起請求,備份到serve2的/rsync下面
rsync -avz zhangsan@20.0.0.11::wwwroot /rsync
與server1之間的對應關係
方法二 :類似網頁形式
rsync -avz rsync://zhangsan@20.0.0.11/wwwroot /rsync2
3.3 免互動配置
chmod 600 password
rsync -avz --password-file=/root/password rsync://zhangsan@20.0.0.11/wwwroot /rsync3
四、rsync + inotify
保證兩個裝置上的一個檔案資料資訊保持一致性
在server2(20.0.0.12)上
解壓、編譯、安裝
tar xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
./configure && make && make install
建立測試用的目錄
對檔案進行修改並測試
建立一個密碼檔案(檔名自定義)
賦予只讀許可權
chmod 600 /etc/test.pass
編輯指令碼
vi inotify.sh
#!/bin/bash
INOTIFY="inotifywait -mrq -e modify,create,attrib,move,delete /test/inotify"
RSYNC_CMD="rsync -avz --delete --password-file=/etc/test.pass /test/inotify zhangsan@20.0.0.11::name"
$INOTIFY | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ];then
$RSYNC
fi
done
在server1(20.0.0.11)上
vi /etc/rsyncd.conf
執行指令碼測試
核心引數
[root@server2 ~]# vi /etc/sysctl.conf
[root@server2 ~]# sysctl -p 寫入系統,啟用
在末尾新增
fs.inotify.max_queued_events = 16384 監控事件的最大佇列數
fs.inotify.max_user_instances = 1024 監控的最大例項數
fs.inotify.max_user_watches = 1048576 監控的每個例項的最大檔案數
相關文章
- 資料同步——rsync遠端同步
- 小白都會的rsync遠端同步原理及-------(定期同步與rsync+inotify實時同步)實驗
- rsync udr——遠端大檔案傳輸加速
- rsync同步檔案到遠端機器,卡住10多秒--問題解決過程
- 資料同步rsync
- Rsync資料同步
- rsync實時同步
- rsync 同步目錄
- SCP和Rsync遠端拷貝的幾個技巧
- rsync+inotify實時同步
- 與遠端倉庫保持同步
- Linux 檔案同步工具之 rsyncLinux
- 使用rsync同步網路備份
- Git同步遠端fork的專案Git
- rsync 守護程式及實時同步
- Linux 遠端資料同步工具詳解Linux
- 【DATAGUARD】Dataguard遠端同步配置最佳實踐
- Pycharm同步遠端伺服器除錯PyCharm伺服器除錯
- rsync客戶端一鍵安裝rsync指令碼(原始碼)客戶端指令碼原始碼
- 使用Clion優雅的完全遠端自動同步和遠端除錯c++除錯C++
- rsync+inotify資料的實時同步
- rsync詳解_伺服器同步資料伺服器
- rsync同步和備份檔案到本地
- 搭建rsync服務並同步重要資料
- linux 利用rsync實現檔案增量同步Linux
- Linux之rsync同步分發指令碼編寫.Linux指令碼
- phpstorm 遠端連結伺服器同步程式碼PHPORM伺服器
- Git同步兩個遠端倉庫的分支程式碼Git
- 非同步決策:幫助遠端團隊走向成功非同步
- rsync備份【基於客戶端與服務端】客戶端服務端
- 5 Using Far Sync Instances 使用Far Sync遠端同步例項
- 超實用!!rsync分散式 + inotify監控實時同步分散式
- 在 Emacs 的 dired 和 tramp 中非同步執行 rsyncMac非同步
- rsync 從一臺伺服器遠端拉取另一臺伺服器資料的實踐伺服器
- 【Git】fork遠端倉庫,fork倉庫同步和提交pull requestGit
- Linux 實現本、異地遠端資料實時同步功能Linux
- rsync
- 遠端連線桌面 批次遠端管理