Windows下配置及使用Git+rsync构建文件同步工具

背景(了解):

公司的前端项目里有bash脚本,开发人员在开发完,可以跑bash脚本自动发布部署到测试环境。但是windows是没办法直接跑bash脚本的,最便捷的做法就是借用git bash这个终端来跑项目里的bash脚本。但是windows的源里并没有rsync,所以我们需要借助一些手段来安装rsync。以下我们将站在巨人的肩膀上,教大家怎么安装rsync,并且怎么处理一些报错情况。

一、原理(了解):

如何在 Windows 下跑 rsync ?

rsync 是 Linux 平台的程序,要在 Windows 运行,要么就是拿源码在Windows环境下重新编译一遍,那么就会用到 MinGW 这类的编译工具,并且改动源码肯定是少不了的;要么就是在 Windows 下搞一个 Linux 的虚拟环境,那么可以考虑 Cygwin, WSL 这类东西。有没有更简单的方法呢?想到在 Windows 下使用 Git Bash 工具的时候,也经常会使用到 ls, grep 这类 Linux 下的命令,那么这个又是如何实现的?

找了一些资料,发现 Git for Windows 是基于 MSYS 做出来的。以下引用一段来自知乎网友的话:

(来源:在windows下为什么装了git bash等工具后就能执行linux命令? - 知乎)

MSYS

当 MinGW 出现之后,程序员们发现光有 GCC 不行啊,面对着如此 naive 的 Windows 命令行也照样不能干活,Cygwin 又太大了。所以 MinGW 的一群人再次 fork 了 Cygwin,把它精简了一番,就成了 MSYS。后来,MinGW 咕咕咕了,MSYS 也随之咕咕咕了,又一群程序员 fork 了新版本的 Cygwin,精简了一番,给它加上了 Pacman 包管理器(没错就是 Arch Linux 用的那个),最后给 MSYS 的名字后面加了个 2,成了 MSYS2。

Git for Windows

随着 Git 的快速完善,将 Git 移植到 Windows 的呼声越来越高,可是 Git 需要很多 Linux 下的命令行工具,所以不想重复造轮子的 Git 开发者们找到了 MSYS2,又将 MSYS2 做了一番精简和针对 Git 的修改,把 Git 放了进去。

ls, grep 这些程序包正是通过 Pacman 去管理的。而在 Git 的安装目录下也是可以找到这些程序包的 exe 文件的(在 Git/usr/bin 目录下)。

那么,是不是找到了 rsync 在 Windows 平台的 pacman package,同样就可以实现在 Windows Git Bash 中运行 rsync 呢?

答案确实是如此的。这篇文章就将介绍这个实现过程。

二、下载安装包

可在此处下载 windows 环境下的 Pacman package: Index of /~nickoe/msys2-mirror/msys/x86_64
我们需要使用到以下的两个 package: zstd 和 rsync。(zstd 是用来解压 rsync 的程序包的)

zstd:

rsync:

选择其中最新的版本来下载即可(ps:如果有的版本有问题,也可以更换其他版本,不需要拘泥一格)。
如,我将 zstd-1.4.5-2-x86_64.pkg.tar.xz 和 rsync-3.2.3-1-x86_64.pkg.tar.zst 下载到 D:\tools 目录下。

三、使用 zstd

使用 7zip 等Windows下的解压工具解压 zstd-1.4.5-2-x86_64.pkg.tar.xz。
将 zstd 的相关文件复制到 Git 安装目录的对应位置,如:
D:\tools\zstd-1.4.5-2-x86_64.pkg\usr\bin --> D:\Program Files\Git\usr\bin
D:\tools\zstd-1.4.5-2-x86_64.pkg\usr\share --> D:\Program Files\Git\usr\share
使用 zstd 来解压 rysnc 包。打开 Git Bash,执行:

cd  /d/tools/
mkdir rsync-3.2.3-1
tar -I zstd -xvf /d/tools/rsync-3.2.3-1-x86_64.pkg.tar.zst  -C /d/tools/rsync-3.2.3-1

四、使用 rsync

将 rsync 的相关文件复制到 Git 安装目录的对应位置,如:
D:\tools\rsync-3.2.3-1\usr\bin --> D:\Program Files\Git\usr\bin
D:\tools\rsync-3.2.3-1\usr\lib --> D:\Program Files\Git\usr\lib
D:\tools\rsync-3.2.3-1\usr\share --> D:\Program Files\Git\usr\share
在 Git Bash 中使用 rsync:

# 查看版本号
rsync --version
# 查看帮助信息
rsync -h
#  同步文件
rsync -avP <src_dir> <dest_dir>

五、异常情况处理办法

package下载:下载 rsync-3.2.3-2-x86_64.pkg.tar.zst 、 libzstd-1.4.9-1-x86_64.pkg.tar.zst (可选)、 libxxhash-0.8.0-1-x86_64.pkg.tar.zst (可选)、 liblz4-1.9.3-1-x86_64.pkg.tar.zst (可选)

配置

  1. rsync 文件夹里的 bin 和 lib 的内容分别复制到 Git/usr/bin 和 Git/usr/lib 下
    如上面已操作过,可忽略第1点
  2. 打开 Git Bash ,运行 rsync -v ,如果报 msys-zstd-1.dll not found ,则将 libzstd 文件夹里的 bin 的内容复制到 Git/usr/bin 下
  3. 重新运行,如果报 msys-xxhash-0.dll not found ,则将 libxxhash 文件夹里的 bin 的内容复制到 Git/usr/bin 下,并将其重命名为 msys-xxhash-0.dll
  4. 重新运行,如果报 msys-lz4-1.dll not found ,则将 liblz4 文件夹里的 bin 的内容复制到 Git/usr/bin 下
  5. 重新运行,如果报 msys-crypto-1.1.dll not found ,则将 Git/usr/bin 文件夹里的 msys-crypto-1.0.0.dll 复制到当前目录,并重命名为 msys-crypto-1.1.dll
    第5点中,有的人的msys-crypto的版本并不是1.0.0,但是不影响,如我的是 msys-crypto-3.dll,复制出一份,原有的不要删,然后更名为msys-crypto-1.1.dll

 参考:

Windows下使用Git+rsync构建文件同步工具_rsync在windows编译-CSDN博客
Windows配置rsync - sjmuvx - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/294515.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

conda使用记录

linux 使用conda创建新一个新的python环境过程 conda create -n recommendation_env python3.8.18 # 指定python版本 conda env list # 查看所有的环境 conda activate recommendation_env # 激活创建的新环境 pip install flask # 安装依赖 或者 pip install flask版本号 或者…

Python+requests+Pytest+logging+allure+pymysql框架详解

一、框架目录结构 1&#xff09;tools目录用来放公共方法存储&#xff0c;如发送接口以及读取测试数据的方法&#xff0c;响应断言 数据库断言 前置sql等方法&#xff1b;2&#xff09;datas目录用例存储接口用例的测试数据&#xff0c;我是用excel来存储的数据&#xff0c;文…

简单说清楚什么是SQL Injection?

最近看完了《The Pragmatic Programmer: 20th Anniversary Edition, 2nd Edition: Your Journey to Mastery》&#xff0c;在第7章&#xff1a;While You Are Coding的footnotes中&#xff0c;提到了一幅漫画&#xff1a; 这不仅用简单的方式说清楚了什么是SQL Injection&#…

顶顶通呼叫中心中间件-声音编码自适应配置方法(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-声音编码自适应配置方法讲解(mod_cti基于FreeSWITCH) 声音编码自适应介绍 声音编码自适应&#xff0c;通常在语音通信和音频处理领域中指的是一种能够根据信号特性和传输环境自动调整编码参数的技术。其目的是在不同的网络状况和音质要求下&#xff0c;…

uniapp开发App(一)登陆流程 判断是否登陆,是,进入首页,否,跳转到登录页

一、登陆流程 文字描述&#xff1a;用户进入App&#xff0c;之后就是判断该App是否有用户登陆过&#xff0c;如果有&#xff0c;直接进入首页&#xff0c;否则跳转到登陆页&#xff0c;登陆成功后&#xff0c;进入首页。 流程图如下&#xff1a; 二、在uniapp项目中代码实现 实…

【数据结构】AVL 树

文章目录 1. AVL 树的概念2. AVL 树节点的定义3. AVL 树的插入4. AVL 树的旋转5. AVL 树的验证6. AVL 树的删除7. AVL 树的性能 前面对 map / multimap / set / multiset 进行了简单的介绍【C】map & set&#xff0c;在其文档介绍中发现&#xff0c;这几个容器有个共同点是…

oracle19c安装-aarch64

建议 参考oracle官方文档提供的软硬件要求 https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/operating-system-checklist-for-oracle-database-installation-on-linux.html#GUID-E5C0A90E-7750-45D9-A8BC-C7319ED934F0 建议使用OracleLinux8.6及以上操作…

RWKV_Pytorch:支持多硬件适配的开源大语言模型推理框架

亲爱的技术探索者们&#xff0c;今天我要向大家隆重推荐一个在开源社区中崭露头角的项目——RWKV_Pytorch。这是一个基于Pytorch的RWKV大语言模型推理框架&#xff0c;它不仅具备高效的原生Pytorch实现&#xff0c;而且还扩展了对多种硬件的适配支持&#xff0c;让模型的部署和…

Django创建多app应用

目录 1. 引言 2. 多app创建的两种方式 2.1 多个app结构 2.2 单个apps多个app 3. 最后 1. 引言 在平常业务开发中&#xff0c;我们遇到的功能可能会有很多&#xff0c;单个app的应用可能无法满足我们 这个时候&#xff0c;我们就需要多app应用&#xff0c;例如&#xff1a…

docker 部署 gitlab-ce 16.9.1

文章目录 [toc]拉取 gitlab-ce 镜像创建 gitlab-ce 持久化目录启停脚本配置配置 gitlab-ce编辑 gitlab-ce 配置文件重启 gitlab-ce配置 root 密码 设置中文 gitlab/gitlab-ce(需要科学上网) 拉取 gitlab-ce 镜像 docker pull gitlab/gitlab-ce:16.9.1-ce.0查看镜像是不是有 Vo…

docker容器添加新端口映射的步骤及`wsl$`目录的作用

在Docker容器已经创建后&#xff0c;需要添加新的端口映射&#xff0c;即对已经存在的Docker容器添加新的端口映射&#xff0c;可以通过以下步骤来添加&#xff0c;即通过修改配置文件的方法。 如何新增端口映射&#xff1f; 查找容器的hash值 docker inspect [容器id或名称…

Rust 机器学习图形库 petgraph

一、介绍 Petgraph 是一个开源的图数据结构库&#xff0c;提供了非常丰富的图形类型和算法&#xff0c;并且支持将图形以 Graphviz 格式输出&#xff0c;还允许你为图的节点和边赋予任意类型的数据&#xff0c;从而能够灵活地处理和表示复杂的数据关系。 Petgraph 支持边的方…

【threejs】较大物体或shape的贴图较小问题处理方法

问题 有的场景内相对体型差距过大的物体&#xff08;如山地 海洋等&#xff09;由于尺寸问题&#xff0c;加载贴图过于小&#xff0c;同时shader也无法完全展示&#xff0c;如图 我们可以获取物体的uv&#xff0c;进行缩放使得贴图可以完全展开 如果uv是乱的 可以用xyz坐标最…

【新手适用】手把手教你从零开始实现一个基于Pytorch的卷积神经网络CNN二: 如何训练模型,内附详细损失、准确率、均值计算

手把手教你从零开始实现一个基于Pytorch的卷积神经网络CNN&#xff08;新手适用&#xff09;一&#xff1a; model.py&#xff1a;创建模块-CSDN博客 从零开始实现一个基于Pytorch的卷积神经网络 - 知乎 目录 1 设备device定义 2 训练模型定义 3 开始训练 3.1 step、batch…

使用filezilla连接Ubuntu22.04虚拟机

获取电脑IP和虚拟机IP ① 在windows下ctrlR再输入cmd&#xff0c;打开指令窗口&#xff0c;输入 ipconfig 虚拟机连接电脑用的是NAT模式&#xff0c;故看VMnet8的IP地址 ② 查看虚拟机IP地址 终端输入 ifconfig 如果没安装&#xff0c;按提示安装net-tools sudo apt install …

物联网学习2、MQTT 发布/订阅模式介绍

MQTT 发布/订阅模式 发布订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;它将发送消息的客户端&#xff08;发布者&#xff09;与接收消息的客户端&#xff08;订阅者&#xff09;解耦&#xff0c;使得两者不需要建立直接的联系也不…

使用CMake搭建简单的Qt程序

目录结构 代码 CMakeLists.txt&#xff1a; cmake_minimum_required(VERSION 3.15)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)# set the project name project(xxx)# 设置Qt的路径 # 例如 E:/Qt/Qt/aaa/msvc2019_64 # aaa 为Qt的版本号 set(QT_PATH…

【工具-MATLAB】

MATLAB ■ MATLAB-简介■ MATLAB-应用领域■ MATLAB■ MATLAB■ MATLAB■ MATLAB ■ MATLAB-简介 MATLAB是matrix&laboratory两个词的组合&#xff0c;意为矩阵工厂&#xff08;矩阵实验室&#xff09; 美国MathWorks公司出品的商业数学软件, MATLAB和Mathematica、Maple并…

高风险IP来自哪里:探讨IP地址来源及其风险性质

在网络安全领域&#xff0c;高风险IP地址是指那些可能涉及恶意活动或网络攻击的IP地址。了解这些高风险IP地址的来源可以帮助网络管理员更好地识别和应对潜在的安全威胁。本文将探讨高风险IP地址的来源及其风险性质&#xff0c;并提供一些有效的应对措施。 风险IP查询&#xf…

物联网技术在数字化工厂中的应用研究——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的不断进步和数字化浪潮的推动&#xff0c;物联网&#xff08;IoT&#xff09;技术在各个领域中得到了广泛应用。其中&#xff0c;数字化工厂作为现代制造业的重要代表&#xff0c;物联网技术的应用更是为其带来了革命性的变革。…