rsync实现服务器之间同步目录文件
阅读原文时间:2023年07月11日阅读:1

一般情况下

服务环境一般有三种

  1. dev   开发环境
  2. test   测试环境
  3. prod    生产环境

环境多了,不可避免的事是一些重复的操作,部署什么的

能不能在开发环境打包后,直接同步到测试环境呢?(毕竟重复的事干的多了是会烦的)

是可以的

linux下可以直接使用rsync命令

windows下可以安装cygwin来实现

copy一张图片 

这里记录下同步到远程服务器的操作,也就是图上的push推

拿两台服务器

本地:192.168.1.10

远程:192.168.1.130

需求:将192.168.1.10的/opt/vue/index.html文件 和 /opt/vue/static目录同步到远程192.168.1.130的/opt/dist目录下

操作:

rsync -avP -e "ssh -i ~/.ssh/130/my.pem" /opt/vue/static /opt/vue/index.html root@192.168.1.130:/opt/dist

参数说明

  • -a --archive  :归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"
  • -v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息
  • -P:显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)
  • my.pem文件是登录192.168.1.130服务器的私钥,生成方式可以查看这篇文章 ssh通过pem文件登陆服务器

既然想实时操作,并不想每次都执行这么个脚本怎么办

配合linux定时任务 crontab,定时执行即可

方式:将命令写入一脚本中,定时执行即可

cd /root

vim rsync-vue-.sh //写入rsync -avP -e "ssh -i ~/.ssh/130/my.pem" /opt/vue/static /opt/vue/index.html root@192.168.1.130:/opt/dist
// crontab -e 编辑定时任务,写入,如下为每两分钟同步一次

*/ * * * * /root/rsync-vue-.sh

如果是windows环境的话,需要安装cygwin,这样就会在windows平台提供了linux环境了

如图:

安装可以参考https://blog.csdn.net/heshushun/article/details/78664384

perfect!!!