您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何使用rsync來備份Linux 系統”,在日常操作中,相信很多人在如何使用rsync來備份Linux 系統問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用rsync來備份Linux 系統”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
rsync 命令
Andrew Tridgell 和 Paul Mackerras 編寫了 rsync ,***發布于 1996 年。它的目標是向另一臺電腦同步文件。你注意到了他們為什么取這個名字了嗎(remotely synchronize)?它是大多數發行版都提供的開源軟件。
rsync 能夠用于同步兩個目錄或目錄樹,無論它們是在同一個計算機上還是不同的計算機上,而且不僅如此,它還能做到更多。它創建或者更新的目錄與源目錄完全一樣。新的目錄不是以 tar 或 zip 等打包存儲,而是普通的目錄和文件,常見的 Linux 工具都能輕松訪問,而這正是我所需要的。
rsync 的最重要的特性之一是它處理源目錄被修改的已有文件的方式。它使用分塊校驗來比較源文件和目標文件,而不是從源把整個文件復制過去。如果兩個文件所有塊的校驗和都相同,那么就不用傳輸數據。否則只有被改變的塊被傳輸。這樣節約了遠程同步消耗的大量時間和帶寬。比如,我***次使用 rsync 腳本來把我所有的主機備份到一個外接的大型 usb 硬盤上需要三個小時,因為所有的數據都需要傳輸過去。而接下來的備份需要的時間就只是 3 到 8 分鐘,這取決于上次備份以來創建和改變了多少文件。我使用 time 命令來記錄實際花費的時間。昨天晚上,我只花了三分鐘來從六個遠程系統和本地工作站備份大概 750 Gb 數據。實際上只有在白天改變的幾百 Mb 數據需要備份。
下面的命令可以用來同步兩個目錄及其任意子目錄的內容。也就是說,在新目錄的內容和源目錄同步完之后,它們的內容完全一樣。
rsync -aH sourcedir targetdir
-a 選項表示歸檔模式,它會保持權限、所有關系和符號(軟)鏈接。-H 選項用來保持硬鏈接。注意源目錄和目標目錄都可以在遠程主機上。
假設昨天我們使用 rsync 同步了兩個目錄。今天我們想再同步一次,但是我們從源目錄刪除了一些文件。rsync 默認只復制新的和改變過的文件到新目錄里,而不去改變新目錄里被我們刪除的文件,但是如果你想讓那些在源目錄里被刪除的文件在新目錄里也被刪除,那么你可以加上 --delete 選項來刪除。
另一個有趣的選項,也是我個人最喜歡的選項是 --link-dest,因為它極大地增加了 rsync 的能力和靈活性。--link-dest 使每日備份只花費很少的額外空間和很短的時間。
用這個選項指定前一天的備份目錄,以及今天的備份目錄,然后 rsync 會創建今天的新備份目錄,并將昨天備份目錄里的每一個文件在今天的備份目錄中創建硬鏈接。現在我們在今天的備份目錄中有一大堆指向昨天備份的硬鏈接。文件沒有被重復創建,而是創建了一些硬鏈接。對于硬鏈接,在 Wikipedia 中有非常詳細的描述。而在用昨天的備份目錄文件的硬鏈接創建了今天的備份之后,rsync 和平常一樣進行備份,如果在文件中檢測到了變化,就不會做硬鏈接,而是從昨天的備份目錄里復制一個文件的副本,再把源文件中變化的部分復制過去。(LCTT 譯注:此處疑似原文表述不清,參見 generator.c 的 try_dests_reg 函數,先根據 match_level選擇復制或者硬鏈接,而不是創建硬鏈接后再判斷 match_level)
現在我們的命令類似于下面這樣。
rsync -aH --delete --link-dest=yesterdaystargetdir sourcedir todaystargetdir
你也可能想要排除一些不想要備份的目錄或者文件。那么就可以使用 --exclude 選項。用這個選項加上你想排除文件或目錄的模式。你可以用下面的新命令來排除瀏覽器的緩存。
rsync -aH --delete --exclude Cache --link-dest=yesterdaystargetdir sourcedir todaystargetdir
注意:你想排除的每一個文件的模式前面都分別需要加上 --exclude 選項。
rsync 可以同步遠程主機,無論是作為同步源頭還是目標。再舉一個例子,我們假設想要把名為 remote1 的遠程主機的目錄同步到本地。因為 ssh 作為與遠程主機交換數據的默認協議,我一直使用 ssh 選項。現在命令類似于下面這樣。
rsync -aH -e ssh --delete --exclude Cache --link-dest=yesterdaystargetdir remote1:sourcedir todaystargetdir
這就是我的 rsync 備份命令的最終版本。
你可以依靠 rsync 的大量選項來定制你的同步過程。大多數情況而言,我剛剛描述的簡單命令就足以勝任我的個人需要。你可以閱讀 rsync 豐富的文檔來了解它的其他能力。
部署備份
我的備份自動運行因為—“萬物皆可自動化”。我寫了一個 BASH 腳本使用 rsync 創建每天的備份。包括確保備份介質被掛載,生成每天的備份目錄的名字,以及在備份介質中創建合適的目錄結構,***執行真正的備份再卸載備份介質。
我用 cron 每天早晨執行腳本確保我永遠不會忘記備份。
我的腳本 rsbu 和配置文件 rsbu.conf 可以在 GitHub 上獲取。
恢復測試
所有沒有經過測試的備份計劃都不完整的。你可以通過測試恢復某個文件或者整個目錄,以確保備份在照常工作并且可以通過它來在數據全部丟失后恢復。我見過太多備份由于種種理由失敗,以及由于缺乏測試忽略的問題導致寶貴的數據被丟失。
選擇一個文件恢復到比如 /tmp 的測試目錄,這樣你就不會覆蓋任何備份后被更新的文件。驗證文件的內容是否是你預期的。恢復用 rsync 備份的文件僅僅只是找到你的備份文件然后把它復制到你想恢復的地方去那樣簡單。
我有幾次不得不恢復我的個人文件,偶爾是整個目錄。大多數是自己意外刪除了文件或者目錄。有幾次是因為硬盤崩潰。這些備份遲早會派上用場。
***一步
但僅僅創建備份并不能拯救你的業務,你需要定期的地創建備份,使最近的一次備份儲存在另一臺遠程機器上,如果有可能,放在另外一個建筑物中或幾英里之外。這樣可以確保大規模的災難不會摧毀你的所有備份。
對于小型企業的一個合理選擇是在可移動介質上做每日備份,晚上把***的備份帶回家里,第二天早上把更早的備份帶到辦公室。你就會有幾個輪流的拷貝。甚至可以把***的備份帶到銀行并放到你的保管箱里,然后帶回之前的備份。
到此,關于“如何使用rsync來備份Linux 系統”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。