Linux之rsync遠程同步

Sync Linux UNIX 軟件 達人科技 2017-06-18

rsync is a utility for efficiently transferring and synchronizing files across computer systems, by checking the timestamp and size of files.It is commonly found on Unix-like systems and functions as both a file synchronization and file transfer program. The rsync algorithm is a type of delta encoding, and is used for minimizing network usage. Zlib may be used for additional compression,and SSH or stunnel can be used for data security.

Rsync is typically used for synchronizing files and directories between two different systems. For example, if the command rsync local-file user@remote-host:remote-file is run, rsync will use SSH to connect as user to remote-host.Once connected, it will invoke the remote host's rsync and then the two programs will determine what parts of the file need to be transferred over the connection.

Rsync can also operate in a daemon mode, serving files in the native rsync protocol (using the "rsync://" syntax).

rsync是類unix系統下的數據鏡像備份工具——remote sync。一款快速增量備份工具 Remote Sync,遠程同步 支持本地複製,或者與其他SSH、rsync主機同步。

rsync,remote synchronize顧名思意就知道它是一款實現遠程同步功能的軟件,它在同步文件的同時,可以保持原來文件的權限、時間、軟硬鏈接等附加信息。 rsync是用 “rsync 算法”提供了一個客戶機和遠程文件服務器的文件同步的快速方法,而且可以通過ssh方式來傳輸文件,這樣其保密性也非常好,另外它還是免費的軟件。

rsync特性如下:

可以鏡像保存整個目錄樹和文件系統。

可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。

無須特殊權限即可安裝。

快速:第一次同步時 rsync 會複製全部內容,但在下一次只傳輸修改過的文件。rsync 在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。

安全:可以使用scp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。

支持匿名傳輸,以方便進行網站鏡象。

rsync有六種不同的工作模式:

1)拷貝本地文件。當SRC和DES路徑信息都不包含有單個冒號":"分隔符時就啟動這種工作模式。如:rsync -a /data /backup

2)使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號":"分隔符時啟動該模式。如:rsync -avz *.c foo:src

3)使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號":"分隔符時啟動該模式。如:rsync -avz foo:src/bar /data

4)從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啟動該模式。如:rsync -av [email protected]::www /databack

5)從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啟動該模式。如:rsync -av /databack [email protected]::www

6)列遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。如:rsync -v rsync://192.168.78.192/www

rsync 命令來同步系統文件之前要先登錄remote 主機認證,認證過程中用到的協議有2種:ssh 協議和rsync協議

1. ssh 認證協議

rsync server 端不用啟動rsync的daemon進程,只要獲取remote host的用戶名和密碼就可以直接 rsync 同步文件

rsync server 端因為不用啟動daemon進程,所以也不用配置文件 /etc/rsyncd.conf

ssh 認證協議跟scp 的原理是一樣的,如果在同步過程中不需要收入密碼就 用 ssh-keygen -t rsa 打通通道

這種方式默認是省略了 -e ssh 的,與下面等價:

rsync -avz /SRC -e ssh [email protected]:/DEST #-a 文件宿主變化,時間戳不變 -z:壓縮數據傳輸

當遇到要修改端口的時候,我們可以:

rsync -avz /SRC -e "ssh -p36000" [email protected]:/DEST #修改了ssh 協議的端口,默認是22

2. rsync 認證協議

rsync 認證協議,需要在rsync server端啟動daemon進程,並設置對應的配置文件: /etc/rsyncd.conf

rysnc 認證協議

相關推薦

推薦中...