rsync全名 Sync,是類unix下數據鏡像的備份工具。可以方便的實現本地,遠程備份文件,rsync最重要的一點是支持增量備份。
命令語法
rsync?[OPTION]...?SRC?DEST
rsync?[OPTION]...?SRC?[USER@]host:DEST
rsync?[OPTION]...?[USER@]HOST:SRC?DEST
rsync?[OPTION]...?[USER@]HOST::SRC?DEST
rsync?[OPTION]...?SRC?[USER@]HOST::DEST
rsync?[OPTION]...?rsync://[USER@]HOST[:PORT]/SRC?[DEST]
對應于以上六種命令格式,rsync有六種不同的工作模式:
如果主機和path路徑之間使用單個冒號隔開,表示使用的是遠程shell通信方式,而使用雙冒號隔開的則表示的是連接rsync
常用幾個參數
-?-v?verbose詳細輸出
-?-a?遞歸模式,遞歸方式傳輸文件,并保持連接,權限,用戶和組,時間信息
-?-z?壓縮傳輸
-?-h?human-readable,?輸出友好
-?-u?跳過已經存在的文件
rsync 全部參數
-v,?--verbose?詳細模式輸出
-q,?--quiet?精簡輸出模式
-c,?--checksum?打開校驗開關,強制對文件傳輸進行校驗
-a,?--archive?歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于?-rlptgoD
-r,?--recursive?對子目錄以遞歸模式處理
-R,?--relative?使用相對路徑信息
-b, --backup 創建備份,也就是對于目的已經存在有同樣的文件名時,將老的文件重新命名為~filename。可以使用?--suffix 選項來指定不同的備份文件前綴。
--backup-dir 將備份文件(如~filename)?存放在在目錄下。
-suffix=SUFFIX?定義備份文件前綴
-u, --update 僅僅進行更新,也就是跳過所有已經存在于 DST,并且文件時間晚于要備份的文件。(不覆蓋更新的文件)
-l,?--links?保留軟鏈結
-L,?--copy-links?想對待常規文件一樣處理軟鏈結
--copy-unsafe-links?僅僅拷貝指向?SRC?路徑目錄樹以外的鏈結
--safe-links?忽略指向?SRC?路徑目錄樹以外的鏈結
-H,?--hard-links?保留硬鏈結
-p,?--perms?保持文件權限
-o,?--owner?保持文件屬主信息
-g,?--group?保持文件屬組信息
-D,?--devices?保持設備文件信息
-t,?--times?保持文件時間信息
-S,?--sparse?對稀疏文件進行特殊處理以節省?DST?的空間
-n,?--dry-run?現實哪些文件將被傳輸
-W,?--whole-file?拷貝文件,不進行增量檢測
-x,?--one-file-system?不要跨越文件系統邊界
-B,?--block-size=SIZE?檢驗算法使用的塊尺寸,默認是?700?字節
-e,?--rsh=COMMAND?指定使用?rsh、ssh?方式進行數據同步
--rsync-path=PATH?指定遠程服務器上的?rsync?命令所在路徑信息
-C,?--cvs-exclude?使用和?CVS?一樣的方法自動忽略文件,用來排除那些不希望傳輸的文件
--existing?僅僅更新那些已經存在于?DST?的文件,而不備份那些新創建的文件
--delete?刪除那些?DST?中?SRC?沒有的文件
--delete-excluded?同樣刪除接收端那些被該選項指定排除的文件
--delete-after?傳輸結束以后再刪除
--ignore-errors?及時出現?IO?錯誤也進行刪除
--max-delete=NUM?最多刪除?NUM?個文件
--partial?保留那些因故沒有完全傳輸的文件,以是加快隨后的再次傳輸
--force?強制刪除目錄,即使不為空
--numeric-ids?不將數字的用戶和組?ID?匹配為用戶名和組名
--timeout=TIME?IP?超時時間,單位為秒
-I,?--ignore-times?不跳過那些有同樣的時間和長度的文件
--size-only?當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間
--modify-window=NUM?決定文件是否時間相同時使用的時間戳窗口,默認為?0
-T?--temp-dir=DIR?在?DIR?中創建臨時文件
--compare-dest=DIR?同樣比較?DIR?中的文件來決定是否需要備份
-P?等同于?--partial
--progress?顯示備份過程
-z,?--compress?對備份的文件在傳輸時進行壓縮處理
--exclude=PATTERN?指定排除不需要傳輸的文件模式
--include=PATTERN?指定不排除而需要傳輸的文件模式
--exclude-from=FILE?排除?FILE?中指定模式的文件
--include-from=FILE?不排除?FILE?指定模式匹配的文件
--version?打印版本信息
本地拷貝
當 SRC 和 DES 路徑信息都不包含有單個冒號 “:” 分隔符時就啟動這種工作模式。
將jdk.tar.gz拷貝到目錄
>?rsync?-avhz?jdk.tar.gz?rumenz
將src目錄拷貝到目錄
將/opt/src 目錄下的文件同步發送到目錄下。記住如果目標地址沒有src目錄,rsync 會自動創建該文件夾。
>?rsync?-azhv?/opt/src?rumenz/
將src目錄下的所有文件拷貝到目錄
>?rsync?-azhv?/opt/src/?rumenz/
SRC 路徑末尾的 / 表示不自動創建 DEST 文件夾如何讓兩個文件夾同步,在 man rsync 中的解釋就是末尾的 / 表示”拷貝當前目錄下的文件”如何讓兩個文件夾同步,而不是”拷貝當前的目錄”.
遠程拷貝
使用一個遠程 shell 程序(如 rsh、ssh) 來實現將本地機器的內容拷貝到遠程機器。當 DES 路徑地址包含冒號:或::分隔符時啟動該模式。
將本地/opt/src/目錄下 所有文件同步備份到遠程 /opt// 目錄
>?rsync?-avhz?/opt/src/?root@rumenz.com:/opt/rumenz/
將本地/opt/src/目錄同步備份到遠程 /opt// 目錄
>?rsync?-avhz?/opt/src?root@rumenz.com:/opt/rumenz/
將遠程/opt/目錄拷貝到目錄(ssh模式,單冒號)
>?rsync?-avhz?root@rumenz.com:/opt/rumenz?rumenz/
將遠程/opt/目錄下所有的文件拷貝到目錄(ssh模式,單冒號)
>?rsync?-avhz?root@rumenz.com:/opt/rumenz/?rumenz/
將遠程/opt/目錄拷貝到目錄(rsync模式,雙冒號)
>?rsync?-avhz?root@rumenz.com::/opt/rumenz?rumenz/
將遠程/opt/目錄下所有的文件拷貝到目錄(rsync模式,雙冒號)
>?rsync?-avhz?root@rumenz.com::/opt/rumenz/?rumenz/
列遠程機的文件列表
>?rsync?-v?rsync://rumenz.com?/www
rsync 使用非標準端口
>?rsync?-avz?-e?"ssh?-p?$port"?/opt/src/?root@rumenz.com:/opt/rumenz/
顯示備份進度
>?rsync?-zhve?ssh?--progress?jdk.tar.gz?root@rumenz.com:/opt/rumenz/
限制備份文件最大值
>?rsync?-zhve?ssh?--max-size='2000k'?jdk.tar.gz?root@rumenz.com:/opt/rumenz/
備份結束后自動刪除本地文件
>?rsync?--remove-source-files?-zvh?jdk.tar.gz?root@rumenz.com:/opt/rumenz/
設置備份帶寬
>?rsync?--bwlimit=100?-avzhe?ssh?/opt/src/?root@rumenz.com:/opt/rumenz/