【背景】
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----> 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