這篇文章主要介紹“l(fā)inux下rsync的基礎介紹和高級用法”,在日常操作中,相信很多人在linux下rsync的基礎介紹和高級用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”linux下rsync的基礎介紹和高級用法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧! 這篇文章主要介紹“l(fā)inux下rsync的基礎介紹和高級用法”,在日常操作中,相信很多人在linux下rsync的基礎介紹和高級用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”linux下rsync的基礎介紹和高級用法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧! 創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站設計、成都網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯(lián)網時代的集美網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
rsync 基礎
我為一個大概擁有 35,000 開發(fā)者并有著幾十 TB 文件的全球性機構管理二進制倉庫。我經常一次移動或者歸檔上百 GB 的數(shù)據(jù)。使用的是 rsync。這種經歷使我對這個簡單的工具充滿信心。(所以,是的,我在家使用它來備份我的 Linux 系統(tǒng))
基礎的 rsync 命令很簡單。rsync -av 源目錄 目的地目錄
實際上,在各種指南中教的 rsync 命令在大多數(shù)通用情況下都運行的很好。然而,假設我們需要備份大量的數(shù)據(jù)。例如包含 2,000 個子目錄的目錄,每個包含 50GB 到 700GB 的數(shù)據(jù)。在這個目錄運行 rsync 可能需要大量時間,尤其是當你使用校驗選項時(我傾向使用)。
當我們試圖同步大量數(shù)據(jù)或者通過慢的網絡連接時,可能遇到性能問題。讓我給你展示一些我使用的方法來確保好的性能和可靠性。
rsync 高級用法
rsync 運行時出現(xiàn)的第一行是:“正在發(fā)送增量文件列表?!?如果你在網上搜索這一行,你將看到很多類似的問題:為什么它一直運行,或者為什么它似乎掛起了。
這里是一個基于這個場景的例子。假設我們有一個 /storage 的目錄,我們想要備份到一個外部 USB 磁盤,我們可以使用下面的命令:rsync -cav /storage /media/WDPassport
-c 選項告訴 rsync 使用文件校驗和而不是時間戳來決定改變的文件,這通常消耗的時間更久。為了分解 /storage 目錄,我通過子目錄同步,使用 find 命令。這是一個例子:find /storage -type d -exec rsync -cav {} /media/WDPassport \;
這看起來可以,但是如果 /storage 目錄有任何文件,它們將被跳過。因此,我們如何同步 /storage 目錄中的文件呢?同樣有一個細微的差別是這些選項將造成 rsync 會同步 . 目錄,該目錄是源目錄自身;這意味著它會同步子目錄兩次,這并不是我們想要的。
長話短說,我的解決方案是一個 “雙-遞增”腳本。這允許我分解一個目錄,例如,當你的家目錄有多個大的目錄,例如音樂或者家庭照片時,分解 /home 目錄為單個的用戶家目錄。
這是我的腳本的一個例子:HOMES="alan"DRIVE="/media/WDPassport"for HOME in $HOMES; docd /home/$HOMErsync -cdlptgov --delete . /$DRIVE/$HOMEfind . -maxdepth 1 -type d -not -name "." -exec rsync -crlptgov --delete {} /$DRIVE/$HOME \;done
第一個 rsync 命令拷貝它在源目錄中發(fā)現(xiàn)的文件和目錄。然而,它將目錄留著不處理,因此我們能夠通過 find 命令迭代它們。這通過傳遞 -d 參數(shù)來完成,它告訴 rsync 不要遞歸目錄。-d, --dirs 傳輸目錄而不遞歸
然后 find 命令傳遞每個目錄來單獨運行 rsync。之后 rsync 拷貝目錄的內容。這通過傳遞 -r 參數(shù)來完成,它告訴 rsync 要遞歸目錄。-r, --recursive 遞歸進入目錄
這使得 rsync 使用的增量文件保持在一個合理的大小。
大多數(shù) rsync 指南為了簡便使用 -a (或者 archive) 參數(shù)。這實際是一個復合參數(shù)。-a, --archive 歸檔模式;等價于 -rlptgoD(沒有 -H,-A,-X)
我傳遞的其他參數(shù)包含在 a 中;這些是 -l、-p、-t、-g和 -o。-l, --links 復制符號鏈接作為符號鏈接-p, --perms 保留權限-t, --times 保留修改時間-g, --group 保留組-o, --owner 保留擁有者(只適用于超級管理員)
--delete 選項告訴 rsync 刪除目的地目錄中所有在源目錄不存在的任意文件。這種方式,運行的結果僅僅是復制。你同樣可以排除 .Trash 目錄或者 MacOS 創(chuàng)建的 .DS_Store 文件。-not -name ".Trash*" -not -name ".DS_Store"
注意
最后一條建議: rsync 可以是破壞性的命令。幸運的是,它的睿智的創(chuàng)造者提供了 “空運行” 的能力。如果我們加入 n 選項,rsync 會顯示預期的輸出但不寫任何數(shù)據(jù)。
`rsync -cdlptgovn --delete . /$DRIVE/$HOME`