之前发现公司同步代码使用的是一个叫Rsync的工具。最近遇到了一个场景,我在github上面的一个项目需要放在公司的gitlab上面,但是公司的代码和开源的代码涉及到一些脱敏的转化。如果只是单纯的文件复制,发现会太麻烦了。于是想到了这个工具。
简单的查询了之后,发现这个工具在MacOS上默认自带。所以使用起来无需安装。
Rsync,是一个文件同步工具,可以进行文件增量同步,能够在多台支持Remote sync
的设备上面进行远程同步,公司发布代码就是使用了这样一个工具。
使用他来进行本地代码不同仓库的同步有点杀鸡用牛刀的感觉。但是我的原则是,只要使用起来简单方便,能够节省时间与成本,那么这个工具就该使用。
Rsync在本地文件同步中的主要使用方式是:
rsync [OPTION] SRC DEST
其中主要的操作可以自行查阅https://baike.baidu.com/item/rsync/8086338?fr=aladdin
通过阅读文档,我们发现如果要做到一些数据的脱敏,我们只需要利用好--exclude
和--include
这两个配置就能够做到了。如果涉及到的文件过多可以使用--exclude-from=FILE
和
--include-from=FILE
的写法来排除或者指定包含的文件列表。文件列表的书写格式几乎和.gitignore
的格式一模一样。
综上所述,我们最后只需要通过这样一条命令加上一个文件配置,就能简单的完成两个不同的git仓库的相同代码之前的同步了。
rsync -aq --exclude-from="./.rsync-exclude.list" --include-from="./.rsync-include.list" ~/github_project/test/ ~/gitlab_project/test/
是不是超级简单,今后只需要在其中一边开发,完成之后只需要运行下脚本就能进行同步操作了。