logo
2
0
Login
编辑文件 README.md

rsync

通过 SSH 方式的 rsync 将文件同步到远程主机,并在远程主机上执行任意命令

注意:远程主机中需要已安装 rsync。​​无需额外配置 rsync 守护进程​​,直接使用 SSH 通道传输数据

在 云原生构建 上使用

简单示例,将本地 dist 文件夹同步到远程机器的 ~/target 目录:

示例一:使用 SSH 密钥登录远程主机

# .cnb.yml main: push: - stages: - name: rsync image: tencentcom/rsync # 引用密钥仓库配置文件 imports: https://your-git.com/group/secret-repo/-/blob/main/env.yml settings: user: $LOGIN_USER key: $PRIVATE_KEY hosts: - ip1 - ip2 source: ./dist/ target: ~/target/ # 以上为必填参数,以下为可选参数 port: 22 include: - "app.tar.gz" - "app.tar.gz.md5" exclude: - "*" prescript: - cd ~/packages - md5sum -c app.tar.gz.md5 - tar -xf app.tar.gz -C ~/app script: - cd ~/packages - md5sum -c app.tar.gz.md5 - tar -xf app.tar.gz -C ~/app

引用密钥仓库配置文件获取 rsync key 和 rsync user:

# 密钥仓库 env.yml # ssh 登录私钥 PRIVATE_KEY: | -----BEGIN RSA PRIVATE KEY----- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -----END RSA PRIVATE KEY----- # ssh 登录用户 LOGIN_USER: xxx # 声明指定镜像的插件任务能引用该配置文件 allow_images: - tencentcom/rsync # 声明指定仓库的流水线能引用该配置文件 allow_slugs: - groupname/reponame

示例二:使用 SSH 密码登录远程主机

# .cnb.yml main: push: - stages: - name: rsync image: tencentcom/rsync # 引用密钥仓库配置文件 imports: https://your-git.com/group/secret-repo/-/blob/main/env.yml settings: user: $LOGIN_USER password: $PASSWORD hosts: - ip1 - ip2 source: ./dist/ target: ~/target/ # 以上为必填参数,以下为可选参数 port: 22 include: - "app.tar.gz" - "app.tar.gz.md5" exclude: - "*" prescript: - cd ~/packages - md5sum -c app.tar.gz.md5 - tar -xf app.tar.gz -C ~/app script: - cd ~/packages - md5sum -c app.tar.gz.md5 - tar -xf app.tar.gz -C ~/app

引用密钥仓库配置文件获取 rsync key 和 rsync user:

# 密钥仓库 env.yml # ssh 登录用户 LOGIN_USER: xxx # ssh 登录密码 PASSWORD: xxx # 声明指定镜像的插件任务能引用该配置文件 allow_images: - tencentcom/rsync # 声明指定仓库的流水线能引用该配置文件 allow_slugs: - groupname/reponame

参数说明

  • user 用于登录远程机器的用户,默认为 root
  • key 用于访问远程机器的 ssh 私钥,keypassword 二选一,优先使用 password
  • password 用于访问远程机器的 ssh 密码,keypassword 二选一,优先使用 password
  • hosts 远程机器的主机名或 IP 地址
  • port 远程机器的连接端口,默认为 22
  • source 要同步的源文件夹,默认为 ./
  • target 要同步到远程机器上的目标文件夹
  • include rsync 的包含过滤器
  • exclude rsync 的排除过滤器
  • recursive 是否递归同步,默认为 false
  • delete 是否删除目标文件夹的内容,默认为 false
  • args 指定插件使用这些额外的 rsync 命令行参数,例如:"--blocking-io"
  • prescript 在 rsync 执行之前在远程机器上运行的命令列表
  • script 在 rsync 执行之后在远程机器上运行的命令列表
  • log_level SSH 日志级别,默认为安静模式(quiet)

来源说明

drone-rsync 基础上修改

如何配置密钥免密登录

1、生成密钥对

# 生成公钥 id_rsa.pub 和私钥 id_rsa ssh-keygen -t rsa

2、将公钥 id_rsa.pub 文件的内容添加到远程机器的 ~/.ssh/authorized_keys 文件中

可直接将 id_rsa.pub 文件的内容复制粘贴到 ~/.ssh/authorized_keys 文件中,也可使用如下命令:

# windows 机器不支持此命令,mac/linux 机器支持 ssh-copy-id -p 22 root@123.123.123.123

3、将私钥 id_rsa 的内容添加到密钥仓库中,在流水线中传入 PRIVATE_KEY,插件即可使用密钥免密登录。 详见上方示例 123