您的位置:首頁>正文

Linux之rsync遠程同步

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 root@192.168.78.192::www /databack

5)從本地機器拷貝檔到遠端rsync伺服器中。 當DST路徑資訊包含"::"分隔符號時啟動該模式。 如:rsync -av /databack root@192.168.78.192::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 root@172.17.256.211:/DEST #-a 檔宿主變化, 時間戳記不變 -z:壓縮資料傳輸

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

rsync -avz /SRC -e "ssh -p36000" root@172.17.256.211:/DEST #修改了ssh 協議的埠, 預設是22

2. rsync 認證協定

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

rysnc 認證協定

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示