Skip to content

Instantly share code, notes, and snippets.

@xycui
Created July 7, 2020 13:55
Show Gist options
  • Save xycui/7318f83a36e089b70cd264320dd84e57 to your computer and use it in GitHub Desktop.
Save xycui/7318f83a36e089b70cd264320dd84e57 to your computer and use it in GitHub Desktop.

Rsync同步解决方案

背景

rsync用于同步本机与开发机数的据时,由于sync参数较多,每次同步若针对当前目录同步到指定目标目录需要输入参数过多。需要寻找一种配置相对简单, 且同步数据方便的方法。

解决思路

命令自动补全

命令自动补全可避免重复输入,可以选用alias或全局shell脚本。但有以下限制

  1. 对于目录在gopath下的情况,期望自动补全目标项目路径。inline shell配合alias不足以满足条件(需根据gopath取子路径)
  2. 对于shell脚本的情况成本较重
  3. 路径也可能不仅在gopath下的情况。或目标的base路径不相同的情况

全量copy模式

创建alias固定同步目录全集,及目标路径。每次运行命令进行一次同步。
缺点为数据量较大。

建议方案说明

  • 创建alias使用rsync命令,并采用relative(-R)模式配合$pwd,目标目录设为默认远程机home。命令可以对本机任何文件夹操作。且可控为最小集, 对于已同步的目录的父目录再次同步也可以保证数据不冗余。
  • 对于远程机更多为资源管理需求,可以根据需求针对文件夹单独创建软链。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment