使用rsync實現客戶端與服務器端的文件同步與傳送,重點是原理和參數解釋


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

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

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

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

2、本人操作的時候使用的具體的環境是:客戶端:Mac+服務器端:Ubuntu
iOS系統和Ubuntu是默認已經安裝好rsync環境的,客戶端可以直接打開 終端,使用rsync的相關命令就能進行操作;Ubuntu在使用rsync的時候需要先通過一系列的設置來打開rsync的服務。

其他環境下關於rsync的安裝和配置可參考以下鏈接:

https://rsync.samba.org

https://rsync.samba.org/ftp/rsync/rsyncd.conf.html

https://rsync.samba.org/ftp/rsync/

3、關於服務器端Ubuntu下的rsync的相關配置
主要是創建配置文件 rsyncd.conf列表內容
1、 修改/etc/default/rsync,讓rsync服務在開機的時候啟動:
$ sudo vim /etc/default/rsync

將RSYNC_ENABLE=false改為RSYNC_ENABLE=true

2、創建並修改rsyncd.conf,缺省安裝中是沒有這個文件的
先創建並編輯配置文件:

$ sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc

$ sudo vim /etc/rsyncd.conf

3、去掉
log file=/var/log/rsyncd
pid file=/var/run/rsyncd.pid
syslog facility=daemon

前面的注釋符號#

4、修改rsync需要同步的路徑:
path = /var/www/pub
(修改成客戶端需要同步到的服務器端的的路徑即可)

5、修改rsync使其可讀可寫:
read only = false

6、修改rsync用戶:

auth users = rsync_user
secrets file = /etc/rsyncd.secrets

7、創建rsync用戶密碼文件:

sudo touch /etc/rsyncd.secrets

使其內容如下(例子):

rsync_user:rsync_password

8、修改用戶密碼文件權限:

$ sudo chmod 0600 /etc/rsyncd.secrets

9、啟動rsync

$ sudo /etc/init.d/rsync start

4、將客戶端相關文件夾中的內容同步到服務器端設置路徑下的相關命令的使用
$ rsync -avz local_filename server_username@server_ip:server_filename

5、rsync的相關命參數
-v,--verbose //詳細模式輸出;

-a,--archive //歸檔模式,表示以遞歸的方式傳輸文件,並保持所有文件屬性不變,相當於使用了組合參數-rlptgoD;

-r, --recursive //對子目錄以遞歸模式處理;

-l, --links//保留軟鏈結;

-p, --perms //保持文件權限;

-t, --times//保持文件時間信息;

-g, --group //保持文件屬組信息;

-o, --owner //保持文件屬主信息;

-D, --devices //保持設備文件信息;

-H, --hard-links //保留硬鏈結;

-S, --sparse //對稀疏文件進行特殊處理以節省DST的空間;

--delete //刪除那些DST中SRC沒有的文件;

-z, --compress //對備份的文件在傳輸時進行壓縮處理;

6、rsync六種不同的工作模式:
1.拷貝本地文件,將/home/coremail目錄下的文件拷貝到/cmbak目錄下

$ rsync -avSH /home/coremail/ /cmbak/

2.拷貝本地機器的內容到遠程機器

$ rsync -av /home/coremail/ 192.168.11.12:/home/coremail/

3.拷貝遠程機器的內容到本地機器

$ rsync -av 192.168.11.11:/home/coremail/ /home/coremail/

4.拷貝遠程rsync服務器(daemon形式運行rsync)的文件到本地機

$ rsync -av root@172.16.78.192::www /databack

5.拷貝本地機器文件到遠程rsync服務器(daemon形式運行rsync)中。當DST路徑信息包含”::”分隔符時啟動該模式

$ rsync -av /databack root@172.16.78.192::www

6.顯示遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可

$ rsync -v rsync://192.168.11.11/data

7、rsync配置文件說明:
cat/etc/rsyncd.conf //內容如下

port = 873 //端口號

uid = nobody //指定當模塊傳輸文件的守護進程UID

gid = nobody //指定當模塊傳輸文件的守護進程GID

use chroot = no //使用chroot到文件系統中的目錄中

max connections = 10 //最大並發連接數

strict modes = yes //指定是否檢查口令文件的權限

pid file = /usr/local/rsyncd/rsyncd.pid //指定PID文件

lock file = /usr/local/rsyncd/rsyncd.lock //指定支持max connection的鎖文件,默認為/var/run/rsyncd.lock

motd file = /usr/local/rsyncd/rsyncd.motd //定義服務器信息的,自己寫 rsyncd.motd 文件內容

log file = /usr/local/rsyncd/rsync.log //rsync 服務器的日志

log format = %t %a %m %f %bsyslog facility = local3timeout = 300
[conf] //自定義模塊

path = /usr/local/nginx/conf //用來指定要備份的目錄

comment = Nginx confignore errors//可以忽略一些IO錯誤

read only = no //設置no,客戶端可以上傳文件,yes是只讀

write only = no //no為客戶端可以下載,yes 不能下載

hosts allow = 192.168.2.0/24 //可以連接的IP

hosts deny = * //禁止連接的IP

list = false //客戶請求時,使用模塊列表

uid = root

gid = root

auth users = backup //連接用戶名,和linux系統用戶名無關系

secrets file = /etc/rsyncd.pass //驗證密碼文件

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

Rsync 的詳細介紹請點這里
Rsync 的下載地址請點這里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM