使用 rsync 同步跳板機代碼到內網機器

多臺阿里雲的機器,只有一臺跳板機有外網地址,所以在跳板機上pull代碼, 而後用 rsync 同步到其餘內網的機器。此處用跳板機作rsync客戶端, 其餘機器作rsync服務端, 從跳板機往內網機上推文件。html

基本用法shell

從本地傳輸到遠程 
rsync source host:destination 
rsync source host::destination

從遠程傳輸到本地 
rsync host:source destination
rsync host::source destination

rsync有2種不一樣的工做模式:vim

  • shell模式:使用遠程shell程序(如ssh或rsh)進行鏈接。當源路徑或目的路徑的主機名後面包含一個冒號分隔符時使用這種模式,rsync安裝完成後就能夠直接使用了,無所謂啓動。
  • daemon模式:使用TCP直接鏈接rsync daemon。當源路徑或目的路徑的主機名後面包含兩個冒號,或使用rsync://URL時使用這種模式,無需遠程shell,但必須在一臺機器上啓動rsync daemon,默認端口873,這裏能夠經過rsync --daemon使用獨立進程的方式,或者經過xinetd超級進程來管理rsync後臺進程。

 

將source目錄下的內容複製到destination目錄下
rsync -r source/ destination
rsync -r source/. destination

若是source後不跟斜線,則會在destination下新建一個名爲source的目錄. 
destination後有無斜線結果不受影響
使用時二者後都加上斜線,便於記憶
$ tree a
a
├── b
│   ├── c
│   └── cc.data
├── b.data
└── bb.data

$ rsync -r a a1
$ tree a1
a1
└── a
    ├── b
    │   ├── c
    │   └── cc.data
    ├── b.data
    └── bb.data

$ rsync -r a/ a2    #(或 rsync -r a/. a2)
$ tree a2
a2
├── b
│   ├── c
│   └── cc.data
├── b.data
└── bb.data

 

 

經常使用選項:segmentfault

-a  等於 -rlptgoD
        -r 是遞歸 
        -l 是連接文件,意思是拷貝連接文件;
        -p 表示保持文件原有權限
        -t 保持文件原有時間;
        -g 保持文件原有用戶組
        -o 保持文件原有屬主;
        -D 至關於塊設備文件
-z 傳輸時壓縮;
-P 等於 --partial --progress
       --partial 保留那些因故沒有徹底傳輸的文件,以是加快隨後的再次傳輸
       --progress 進度       
-v 詳細輸出信息

 

 

rsync 服務端配置bash

vim  /etc/rsyncd.confssh

uid=用戶名user1
gid=用戶組group1
use chroot=yes
max connections=10
timeout=600
strict modes=yes
port=873
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file=/var/log/rsyncd.log

[模塊名mod1]
path=/home/user1/code/
comment=註釋 code file needed sync
read only=no
hosts allow=10.0.3.2
hosts deny=0.0.0.0/32

[模塊名mod2]
path=/home/user1/pypi/
comment=pip source file
read only=no
hosts allow=10.0.3.2
hosts deny=0.0.0.0/32

vim  /etc/rsyncd.secrets, 密碼和用戶的系統密碼沒有關係socket

user1:password

vim /etc/xinetd.d/rsync, 用xinetd 管理 rsync 服務ui

service rsync
{
        disable = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

 

chkconfig rsync on阿里雲

service xinetd restartrest

 

客戶端配置

vim /etc/rsync_client.pwd

填入rsync服務端的密碼

 

手動同步

rsync -avzP --delete  --password-file=/etc/rsync_client.pwd /home/user1/code/ user1@10.0.3.3::mod1
rsync -avzP --delete  --password-file=/etc/rsync_client.pwd /home/user1/pypi/ user1@10.0.3.3::mod2

 

 

參考文章:

http://seanlook.com/2014/12/12/rsync_inotify_setup/

https://download.samba.org/pub/rsync/rsyncd.conf.html

http://ltblog.blog.51cto.com/1263616/859216

https://segmentfault.com/a/1190000000444614

相關文章
相關標籤/搜索