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置。

一般采用源安装,安装后可能没有配置文件(只有服器端才需要配置文件,客端是不需要配置配置文件的),需要在/etcrsyncd.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  是指示出详细度情况

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐