天天看點

rsync的應用實踐詳解

【背景】

rysnc的優點

1 可作為差異性傳輸   節省帶寬和傳輸時間

2 可以作為服務運作 資料備份中心(運作在873端口)

3 作為服務的時候,rsyncd.conf的子產品下的配置檔案更改不需要要重新開機-daemon

[rsync的選項]

-a

-v 

-z  傳輸過程中進行壓縮,如果傳遞的是檔案,圖檔壓縮前後檔案大小有很大的差異就可以加上!

-P

-L, --copy-links            transform symlink into referent file/dir

-H --hard-links

--exclude=PATTERN       exclude files matching PATTERN

常用1

rsync -avz

常用2

rsync -zvH 

因為-a選項中沒有保留硬連接配接是以需要-H參數

常用3

rsync -avH --delete-after --exclude='.~tmp~'

--delete-after 

預設情況下,rsync是先清理目的端的檔案再開始資料同步;如果使用此選項,則rsync會先進行資料同步,都完成後再删除那些需要清理的檔案。

參考:

<a href="http://roclinux.cn/?p=2643" target="_blank">http://roclinux.cn/?p=2643</a>

案例一:  host1----&gt; host2 ,兩個主機之間不知道root密碼,是以scp不友善,可以sudo到root但又不能更改root。此時兩個主機之間copy就可以使用rsync了!  如果有定時任務copy rsync是最好的選擇了。

host2 作為服務 運作,最簡單的的/etc/rsyncd.conf 的配置檔案編寫

[root@log_server src]# cat /etc/rsyncd.conf 

<code>[src]</code>

<code>path=/usr/local/src</code>

<code>read only = no</code>

<code>uid = root </code>

<code>gid = root</code>

作為服務運作rsync有兩種方式

1: 獨立運作

<code>rsync</code> <code>--daemon</code>

2: 寄托在xinetd服務下面

[cat /etc/xinetd.d/rsync | grep disa

        disable = no

/etc/init.d/xinetd start啟動即可

rsync監聽端口873

host1将本地/usr/local/src下的檔案 傳遞到host2的src子產品下(即/usr/local/src下)

<code>rsync</code> <code>-avz  </code><code>/usr/local/src/php-5</code><code>.3.27.</code><code>tar</code><code>.gz 192.168.100.20::src</code>

注意:

1 這個傳輸過程這是不需要任何密碼的

2 uid gid指定為root是因為寫在/usr/local/src下面是需要root權限的

3 read only =no是因為預設是隻讀

4 作用隻是把檔案copy過去,目标端有檔案則起到覆寫的作用(即同步)

案例二: 和案例一樣,隻不過是要認證密碼的(注意是虛拟賬号(rsync中的賬号認證),和系統賬号不是同一個) 并且把一些預設的配置參數到詳細的寫上和寫在全局中,非子產品下面

cat /etc/rsyncd.conf 

<code>port = 873</code>

<code>uid =root</code>

<code>gid =root</code>

<code>user chroot = no</code>

<code>max connections = 20</code>

<code>timeout = 600</code>

<code>pid file = /var/run/rsyncd.pid</code>

<code>lock file = /var/run/rsyncd.lock</code>

<code>log file = /var/run/rsyncd.log</code>

<code>ignore errors</code>

<code>auth users= root</code>

<code>secrets file = /etc/rsyncd.secrets</code>

編寫rsync的賬号密碼檔案

<code>cat</code> <code>/etc/rsyncd</code><code>.secrets</code>

<code>root:123456</code>

更改權限(權限一定要是600)

<code>chmod</code> <code>600 </code><code>/etc/rsyncd</code><code>.secrets</code>

傳輸檔案

[root@slave src]# rsync -avz  /usr/local/src/libmcrypt-2.5.8 [email protected]::src

Password: 

或者使用指定密碼檔案,而非互動式的進行檔案傳輸

首先編輯一個密碼檔案(權限一定要是600 其他人不可讀,才能生效)

<code>cat</code> <code>/etc/rsyncd</code><code>.password</code>

123456

<code>chmod</code> <code>600 </code><code>/etc/rsyncd</code><code>.password</code>

密令進行傳輸到host2

<code>rsync</code> <code>-avz  --password-</code><code>file</code><code>=</code><code>/etc/rsyncd</code><code>.password </code><code>/usr/local/src/libmcrypt-2</code><code>.5.8 [email protected]::src</code>

[其他端口]

rsync -av --port=10873 vim/ dev-mon001::salt-base/vim

[排查目錄/檔案]

rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/  www@xxx-ctr001::salt-base/

rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/  www@xxx-db003::salt-base/

rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/  www@xxx-vctr001::salt-base/

rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/  www@xxx-mon001::salt-base/

1 如果rysnc --daemon的用xinted托管的話,如果改變監聽的端口一定要改變 /etc/service中的rsync預設端口,否則是不生效的,無論你是寫在 /etc/rsyncd.conf中或者其他地方

本文轉自殘劍部落格51CTO部落格,原文連結http://blog.51cto.com/cuidehua/1786217如需轉載請自行聯系原作者

cuizhiliang