0基礎linux運維教程 rsync介紹與完整備份方案

到寫方案的時候很頭疼,不如和山河老師一起看看如何完成完整的備份方案。

## 二 rsync介紹與完整備份方案

**(1)rsync是什么**

rsync 全稱remote synchronize,即"遠程同步",是Liunx/Unix下的一個遠程數據同步工具。它可通過LAN/WAN快速同步多臺主機間的文件和目錄,并適當利用rsync算法(差分編碼)以減少數據的傳輸。

**(2)rsync是用來干什么的?**

我們用rsync 是為了備份的,這種說法不夠準確,容易讓人誤解,其實rsync的工作只是用來完成遠程同步的、只是為異地備份數據做好了一個鋪墊,且聽我細細道來。

首先:本地備份不可靠的,為什么呢?

如果一份重要數據在本地的某個文件夾里存放著,并且該文件夾內的數據每天都可能會發(fā)生變化,為了防止某一天數據突然丟失的情況下我們可以找回數據,我們需要結合計劃任務把每天的數據都備份一下然后存在本機,此時,備份是有了,但這就萬無一失了嗎?錯!如果本機掛掉了,你備份的數據都不可用,所以備份的數據一定需要傳送到遠端,那么你的思路可能是這樣的

```bash

結合計劃任務

1、每天備份一下數據,此時備份的數據是在本地存放著

2、然后將備份的數據發(fā)送到遠端

3、隔一段時間就刪除七天前的本地備份數據,只留下七天內的,節(jié)省本地空間

```

上述思路既浪費空間,傳輸效率又低,而且如果本機的計劃任務尚未觸發(fā)本機就掛了,異地將獲取不到備份數據

我們可以這么做

```bash

# 一 制異地鏡像

計劃任務+rsync將本地數據定期同步到異地->無法做到實時同步

rsync+inotify或sersync將本地數據實時同步到異地->可以做到實時同步,異地就是本地的一個鏡像點

# 二 結合計劃任務對異地鏡像點的目錄做增量備份

```

體會下上述方案

```bash

1、本機無需再做備份,我們只需要對遠程的鏡像站點制作備份即可,因為遠程的鏡像點與本機完全一致/同步

這樣就節(jié)省了本機的空間,并且減少了本機的工作量

2、如果本機突然掛掉,不必擔心丟失最近的數據,因為遠程的鏡像點與本機的數據是同步的,本機掛了,遠程的鏡像點仍然可以保留下最近的數據,亦可對其進行一次備份。

3、如果本機掛掉了,不必擔心數據無法恢復,因為備份的數據也都在遠程存放著呢。

```

**(3)rsync的原理與特點**

rsync的遠程傳數據可以簡單總結為三步

```bash

1、先驗證用戶身份

2、檢測出到底需要傳哪些文件,默認quick check算法(依據源路徑與目標路徑下對應文件的大小或修改時間是否有變動),檢測出需要傳輸的文件后,并非是將文件全部傳到遠端,而是只傳文件改動的部分,俗稱增量,然后傳到遠端后,遠端再依據之前的內容與傳過來的新內容按照算法拼成一個新文件,所以說rsync并不耗費IO,但是耗cpu

3、傳輸

```

rsync的特點

-?1、IO效率高,但耗費cpu資源

```bash

與其他遠程文件傳輸工具(如 FTP 或 scp)不同的是,rsync 的最大特點是會檢查發(fā)送方和接收方對應的、已有的文件,然后僅傳輸有變動的部分。

因此,在第一次rsync遠程同步時,遠端無任何內容,所以同步的是全量,以后每次都只是傳內容有改變的部分,而不是全部傳,這可以極大地節(jié)省帶寬與傳輸時間,因此rysnc的IO效率比較高,這在做鏡像方面是很不錯的。

但是傳到遠端后,遠端再依據之前的內容與傳過來的新內容按照算法拼成一個新文件,這是非常耗費cpu計算資源的

```

綜上rsync不適用于的場景如下

```bash

??# 1、源路徑下的內容都不能算是經常改動的,而是頻繁改動的場景,rsync不適合,比如數據庫文件

如果源路徑頻繁改動,rsync將時刻處于高頻計算中,因為rsync的底層算法要計算出改動的位置然后把文件分段后再進行重新拼接,io沒啥問題,cpu都得累死

??# 2、不適合同步大文件

因為一個10T的文件但凡修改一個字符,遠程同步時只會傳一個字符,這并不影響io,但是該字符到達遠端后,遠端主機的rsync卻需要把之前文件的內容與該字符拼成一個新文件,如果文件過大,背后的算法是非常消耗cpu資源的,而且跟重寫了一個文件也沒多大區(qū)別

```

-?2、rsync可以實現類似scp的本地路徑與遠程路徑之間的拷貝(rsync不支持遠程到遠程的拷貝,即源路徑與目標路徑都是遠程路徑,但scp支持這一點)

```bash

scp我們經常都是遠端到本地,本地到遠端,

遠端到遠端其實scp也是可以的,只不過看不到進度

scp -pr3 root@192.168.12.17:/root/1.txt root@192.168.12.39:/aaa

-p保留權限

-r遞歸

-3就是遠端到遠端了

??# 依次輸入源主機的密碼+回車,然后再輸入目標主機的密碼+回車即可

```

-?2、rsync雖然是遠程同步,但也支持兩個本地目錄之間同步文件,因此它也可以當作文件復制工具,所以說rsync相當于是集成了cp和scp的功能,但是他們的底層機制不一樣

-?4、rsync的遠程同步是跨平臺的

```

linux --> windows???

windows --> linux???

linux --> mac??

mac --> linux??

mac --> windows

```

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容