Host1:
首先建立本機的公私密鑰
用戶哪個用戶登錄就切換至哪個目錄,本文以jenkins爲例:
(如沒有jenkins則建立屬組屬主,創建用戶組和用戶:
#groupadd-g 1212 jenkins //創建用戶組jenkins ,id隨便用的1212
#useradd -m -s /bin/bash -g 1212 -u 1212 jenkins //創建jenkins用戶,並加入jenkins用戶組
#mkdir /home/jenkins/.ssh //爲jenkins創建.ssh目錄
#chown jenkins:jenkins /home/jenkins/.ssh //給權限屬組屬主
#chown jenkins:jenkins /usr/jenkins/test //給準備上傳的文件夾權限)
#su Jenkins
$ssh-keygen -t dsa
一路回車
然後將公鑰文件傳送到需要登陸的服務器
scp .ssh/id_dsa.pub root@host2:id_dsa.pub
(scp id_dsa.pub root@ host2:test_id_dsa.pub)
如要密碼輸入繼續
$ssh root@host2(登錄遠程服務器)
#cat id_dsa.pub >> /root/.ssh/authorized_keys(把剛才的公鑰文件內容添加到用戶的.ssh目錄下的authorized_keys文件中)
# chmod 600 /root/.ssh/authorized_keys(然後更改該文件權限)
#exit(退出)
再次登陸即不再需要密碼了,測試一下:
$ ssh host2
配置好ssh密匙驗證後,【現在記錄一下rsync的設置。
一般採用源碼安裝,安裝後可能沒有配置文件(只有服務器端才需要配置文件,客戶端是不需要配置配置文件的),需要在/etc下創建rsyncd.conf文件,其內容:
secrets file=/etc/rsyncd.secrets
motd file=/etc/rsyncd.motd
read only=yes
list=yes
uid=root
gid=root
use chroot=no
max connections=3
log file=/var/log/rsyncd.log
pid file=/var/log/rsyncd.pid
lock file=/var/run/rsync.lock
[share]
comment=share file
path=/home/www
以上配置都是指在服務器端配置】,配置完畢後還需要在客戶端安裝該軟件但是不用配置,只需要在客戶端執行rsync命令,如下測試shell腳本:
#!/bin/bash
SOURCE_DIR=/home/jenkins/.jenkins/workspace/${JOB_NAME}/
DEST_DIR=/home/wwwroot/default
REMOTE_IP=Host2
/usr/bin/rsync -e "ssh -p 22" -avpgolr --delete--exclude=.git --exclude=env $SOURCE_DIRroot@$REMOTE_IP:$DEST_DIR
說明:
SOURCE_DIR 指客戶端的目錄,記得一定要在後面加"/";
DEST_DIR指服務器端的目錄;
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD。
-v, --verbose 詳細模式輸出
-p, --perms 保持文件權限。
-g, --group 保持文件屬組信息。
-o, --owner 保持文件屬主信息。
-l, --links 保留軟鏈結。
-r, --recursive 對子目錄以遞歸模式處理。
--delete 刪除那些DST中SRC沒有的文件。
--exclude=PATTERN 指定排除不需要傳輸的文件模式。
--progress
是指顯示出詳細的進度情況