简介
rsync 是一个在类 Unix 系统(如 Linux、macOS)中广泛使用的命令行工具,用于 同步文件和目录。它的核心功能是在本地或远程系统之间高效地复制、备份和同步数据。是一个快速 + 增量 + 安全 + 灵活的文件同步工具
美中不足的是在 Windows 环境下并没有原生的官方支持,所以在 Windows 下安装 rsync 会显得很麻烦。
网上搜罗了很多教程,都是不可用的,再次怀疑他们是否成功过,并且内容高度相仿。
在我的努力下,最终实现了轻量级在 Windows 平台下使用 rsync
在开始之前,我先总结我踩过的坑:
- WSL,WSL 是 Windows 的子系统 Linux,能够提供原生 Linux 的体验,由于 rsync 是一个类 Unix 的软件,自然在 WSL 上安装较为流畅,缺点是什么呢?自然是太重了,为了使用 rsync 要启动 WSL,内存占用一大截,在我的新系统自然是没有安装 WSL 的。也不想为了使用 rsync 安装 WSL,如果你本身就有使用 WSL 的需求,在 WSL 下使用 rsync 是一个好的选择
- Git bash,提供了一个类似 Unix 的终端体验,其基于 MSYS2 模拟的终端环境,集成了 git,和常用的 Unix 命令。
- 基于以上情况,在 git bash 下安装 rsync 不失为一个选择?然后就开始了安装之路,首先就遇到了一个问题,没有包管理器?意味着需要手动下载,然后开始了漫长的依赖处理,见后文错误记录。。。
- 最终 rsync 可以在 cmd 下使用了,输入
rsync --version能够出现提示,但是!由于 cmd 下盘符路径是这样的C:,D:传输的时候显示都是远程路径, 此处失败。 - 既然 cmd 提示下使用
C:路径有问题,那就在 git bash 下使用,毕竟在 git bash 下路径是这样的/c,/d,结果在传输的时候,提示依旧失败,具体错误没记录,好像是dump() faild...,此处失败。但是处理这个问题的时候,想到了一个方案,后续的成功就是吸取了此处。 - rsync-win,这是一个开源项目,也是一位作者在 Window 上使用 rsync 出现问题时,重新使用 rust 编写的一个方案,下载使用后,传输倒是能传输,但是毕竟和原本有差距,命令也不一样,遂即放弃了。
经过了上述的尝试,身心已经疲惫,但是依旧尚未成功,还需继续努力。
在处理最后一个尝试的时候,想到了既然 git bash 是基于 msys2 的,它没有包管理器,msys2 远程是否自带包管理器?毕竟曾经问过 ai,ai 的回答是有 pacman的,在我的印象里,这是 Arch Linux 的包管理器,想到了 git bash 安装 rsync 是手动下载的,git bash,rsync,依赖版本就无法控制,失败极有可能是版本兼容的问题,既然如此,msys2 自带包管理器,这个问题就有可能解决。就此开始
安装
进入 msys2 官网,下载msys2
或者直接 点击下载 msys2-x86_64-20251213.exe
安装后,进入安装目录,点击 msys2.exe 会出现类似于 git bash 终端的界面,使用 pacman -S rsync可以直接安装rsync,自动处理依赖,就此安装完成。就是这么简单!
接下来在 msys2终端下就可以正常使用 rsync 了。
集成到 Windows terminal
在安装好 msys2 以后,如何更加方便的在 Windows11 下使用呢?
借助于 Windows11 自带的 terminal 终端,将 msys2 集成到里面。
- 随便一个位置右键打开终端
- 新建标签旁下来箭头,打开设置(Ctrl + ,)
- 左侧菜单下来,找到配置文件,新建一个配置文件
- 名称可自定义,为了方便见名知意,就叫为
msys2 - 命令行为
msys2安装目录\msys2_shell.cmd -defterm -no-start -use-full-path -here -mingw64 - 图标改为 msys2.ico 即可,在 msys2 安装目录下可以找到
- 保存
退出,重新打开 Windows termial, 现在新建标签旁的下来菜单就会出现 msys2
如果你想把 msys2设置为终端默认值,也就是右键打开就是 msys2,在 Windows terminal 设置界面,将:启动》默认配置文件,设置为 msys2 即可
错误记录
Git bash
git bash 下安装 rsync
安装 git for windows
下载 rsync-3.4.1-1-x86_64.pkg.tar.zst获取rsync.exe,移动到 git 下的bin目录
下载 libopenssl-3.6.0-1-x86_64.pkg.tar.zst获取msys-cypto-3.dll,移动到 git 下的bin目录
下载 libiconv-1.18-1-x86_64.pkg.tar.zst获取msys-iconv-2.dll,移动到 git 下的bin目录
下载 liblz4-1.10.0-1-x86_64.pkg.tar.zst获取msys-lz4-1.dll,移动到 git 下的bin目录
下载 msys-2.0获取msys-2.0.dll,移动到 git 下的bin目录
下载 msys-xxhash-0获取msys-xxhash-0.dll,移动到 git 下的bin目录
下载 msys-zstd-1获取msys-zstd-1.dll,移动到 git 下的bin目录