1、什么是rsync
Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件。Rsync使用所謂的“Rsync算法”來使本地和遠 程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。
2、rsync服務器端架設
2.1:rsync下載 https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz
cd /home/software
wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz
tar -zxvf rsync-3.1.2.tar.gz
2.2:安裝rsync
cd rsync-3.1.2
./configure --prefix=/usr/local/rsync
make
make install
2.3:配置rsync-server
2.3.1:配置rsyncd.conf (手動創建 touch /usr/local/rsync/rsyncd.conf )
vim /usr/local/rsyncd.conf
### 全局參數 ###
port=873
motd file=/usr/local/rsync/rsyncd.motd
log file=/usr/log/rsyncd.log
pid file=/var/run/rsyncd.pid
### 模塊參數 ###
[hometest]
path=/home/test
use chroot=true
uid=0
gid=0
read only=false
exclude=/readme.txt /runtime
auth users=markdeng
secrets file = /usr/local/rsync/rsyncd.secrets
2.3.2:配置rsyncd.secrets(手動創建 touch /usr/local/rsync/rsyncd.secrets ) //此文件權限必須設置:600
vim /usr/local/rsync/rsyncd.secrets
markdeng:123
dxh:321
chmod 600 /usr/local/rsync/rsyncd.secrets
2.3.3:配置rsyncd.motd (手動創建 touch /usr/local/rsync/rsyncd.motd )
vim /usr/local/rsync/rsyncd.motd
welcome use rsync service
2.3.4:啟動rsyncd
/usr/bin/rsyncd --daemon --config=/usr/local/rsync/rsyncd.conf
2.3.5:查看rsyncd進程
ps aux | grep rsyncd
3、rsync客戶端同步數據(通過rsync命令)
3.1:命令語法
1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
2. rsync [OPTION]... [USER@]HOST:SRC DEST
3. rsync [OPTION]... SRC [SRC]... DEST
4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync有六種不同的工作模式:
1. 拷貝本地文件;當SRC和DES路徑信息都不包含有單個冒號":"分隔符時就啟動這種工作模式。
2.使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號":"分隔符時啟動該模式。
3.使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號":"分隔符時啟動該模式。
4. 從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啟動該模式。
5. 從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啟動該模式。
6. 列遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可
3.2:rsync中的參數
-r 是遞歸
-l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有權限;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當於塊設備文件;
-z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等信息,和-P有點關系,自己試試。可以看文檔;
-e ssh的參數建立起加密的連接。
-u只進行更新,防止本地新文件被重寫,注意兩者機器的時鍾的同時
--progress是指顯示出詳細的進度情況
--delete是指如果服務器端刪除了這一文件,那么客戶端也相應把文件刪除,保持真正的一致
--password-file=/password/path/file來指定密碼文件,這樣就可以在腳本中使用而無需交互式地輸入驗證密碼了,這里需要注意的是這份密碼文件權限屬性要設得只有屬主可讀。
3.3:實例操作如下
方法一(手動輸入密碼):rsync -avtop markdeng@127.0.0.1::hometest /home/test2
方法二(自動輸入密碼):rsync -avtop markdeng@127.0.0.1::hometest /home/test2 --password-file=/home/pwd.secrets /home/pwd.secrets 這里是客戶端存於markdeng的密碼 權限同樣是:600
參考:
RSync實現文件備份同步詳解 http://www.linuxidc.com/Linux/2014-09/106967.htm
利用inotifywait監控主機文件和目錄 http://www.linuxidc.com/Linux/2013-03/81075.htm
利用inotify+rsync實現Linux文件批量更新 http://www.linuxidc.com/Linux/2012-01/52132.htm
inotify-tools+rsync實時同步文件安裝和配置 http://www.linuxidc.com/Linux/2012-06/63624.htm
rsync同步完整配置 http://www.linuxidc.com/Linux/2013-06/85781.htm
CentOS 6.5下Rsync遠程同步 http://www.linuxidc.com/Linux/2014-05/101084.htm
Linux文件夾對比並提取的差分文件技巧-rsync的妙用 http://www.linuxidc.com/Linux/2016-02/128307.htm