關於rsync的斷點續傳shell
關於rsync的斷點續傳 常常copy大文件,因爲服務器、路由等網絡的不肯定性,總是出現 remote server not responding. 因而查了下資料,發現rsync這個工具支持斷點續傳功能,這裏介紹一下。 rsync也分服務器端和客戶端,使用man查看幫助信息,咱們發現rsync有六種不一樣的工做模式: Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST List remote files: rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] 1. 拷貝本地文件;當SRC和DES路徑信息都不包含有單個冒號":"分隔符時就啓動這 種工做模式。 2.使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器 。當DST 路徑地址包含單個冒號":"分隔符時啓動該模式。 3.使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器 。當SRC 地址路徑包含單個冒號":"分隔符時啓動該模式。 4. 從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啓動 該模式。 5. 從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啓 動該模式。 6. 列遠程機的文件列表。這相似於rsync傳輸,不過只要在命令中省略掉本地機信 息便可。 下面以實例來講明: # rsync -vazu -progress cnangel@10.1.6.160:~/works/ ~/works v:詳細提示 a:以archive模式操做,複製目錄、符號鏈接,等價於 -rlptgoD 。 z:壓縮 u:只進行更新,防止本地新文件被重寫,注意二者機器的時鐘的同時 -progress:指顯示 以上命令是保持客戶機10.1.6.160上的$HOME/works目錄和當前機器的$HOME/works目錄同 步。 這常常是咱們所說的鏡像同步就是這麼來的,若是斷點續傳呢?rsync徹底能夠作到這一點。man手冊再次告訴咱們: --partial By default, rsync will delete any partially transferred file if the transfer is interrupted. In some circumstances it is more desirable to keep partially transferred files. Using the --partial option tells rsync to keep the partial file which should make a subsequent transfer of the rest of the file much faster. --partial-dir=DIR A better way to keep partial files than the --partial option is to specify a DIR that will be used to hold the partial data (instead of writing it out to the destination file). On the next transfer, rsync will use a file found in this dir as data to speed up the resumption of the transfer and then delete it after it has served its purpose. 默認的狀況下,當rsync傳輸中斷後,新的rsync傳輸將刪除全部的未完成的殘餘文件片斷,而後開始新的傳輸。而使用--partial後,將會進行咱們所說的斷點續傳。 值得注意的是-P這個參數是綜合了--partial --progress兩個參數,因此rsync的斷點續傳能夠用下面的例子來講明: # rsync -avzP /tmp/bigfile cnangel@10.1.6.160:/tmp/bigfile 另外,還有兩個參數也常常用到: t:修改次數 r:遞歸方式