使用rsync上传文件或同步数据到windows

rsync是一个在Linux下运行的同步数据工具,cwRsyncServer是windows下对rsync进行封装的一款软件,使得在windows下也能方便使用rsync的功能。


具体原理的话,可以概括为以下几点:
cwRsyncServer会启动一个rsync服务,该服务会维持在指定的目录(例如系统目录)和运行cwRsyncServer的账户的权限。
你可以通过修改配置文件rsyncd.conf来设置同步规则,这个配置文件定义了rsync服务器的行为,包括哪些文件可同步,哪些用户可以访问等。
当你需要同步数据时,只需要连接到rsync服务器(即运行cwRsyncServer的机器),并按照适当的规则指定要同步的文件或目录即可。

https://developer.aliyun.com/article/1502063
https://cloud.tencent.com/developer/article/1871769

linux 默认已经安装rsync客户端

作为接收文件的windows服务端,windows需要安装cwRsync服务端
1、下载链接:
https://github.com/dennis-zheng/cwRsync

2、解压安装cwRsync
安装默认路径为C:\Program Files (x86)\ICW
安装时 可修改输入 Rsync服务的启动账号的密码。该账号只给该服务使用

3、需要再创建一个windows账户,用于rsync客户端连接使用,对接收文件的存储目录设置该账户的所有权限,以及设置对密码文件的所有权限

4、修改配置文件 C:\Program Files (x86)\ICW\rsyncd.conf

use chroot = false
uid = 0        #需要增加
gid = 0        #需要增加
strict modes = false
hosts allow = *
log file = rsyncd.log

# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[backup]          #修改模板名称,客户端rsync命令中需要指定该模板名
path = /cygdrive/I/DataBak    #指定接收文件的存储目录,需要/cygdrive开头,路径使用/,I盘DataBak目录
read only = false
transfer logging = yes
auth users = backup             #需要创建一个windows账户,账户名自定义
secrets file = /etc/cwrsync.passwd    #子目录下C:\Program Files (x86)\ICW\etc 创建密码文件  格式为  用户名:密码
gid = 0
uid = 0


5、保存配置文件后,修改服务RsyncServer为自动启动,然后启动服务

6、配置防火墙,开放873端口

到此windows服务端配置完成

linux端客户端:
需要在自己的目录添加密码文件,其中只指定 上面创建好的windows账户的密码
对密码文件设置权限  
chown 600 密码文件

然后使用命令即可上传文件
rsync -avzP --port=873 --password-file=/home/data/pwd  /home/uploadfile.xb  windows账户@windowsIP::模板名/子路径
命令中的windows账户指的是接收端windows中服务端配置的账户名
模板名为服务端配置的模板名
子路径为自定义的路径

windows客户端推送文件或目录
安装windows客户端后,默认安装目录在 C:\Program Files (x86)\cwRsync
也需要创建一个密码文件password.txt ,文件名自定义,并设置权限
cd /d C:\Program Files (x86)\cwRsync\bin
chmod.exe -c 600 /cygdrive/e/databak/password.txt
chown.exe administrator /cygdrive/e/databak/password.txt

默认客户端上没有chown.exe这个命令,直接从cwrsync-server的安装路径里拷贝一个过来就可以用了。
windows的默认用户一般都是administrator,如果你不是以administrator登录的,请将上面命令中的administrator改成你当前使用的用户名。

同步目录
rsync -avzP --port=873 --delete --password-file=/cygdrive/e/databak/password.txt  /cygdrive/E/xampp/zentao/www/data/upload  backup@192.168.0.2::backup/192.168.0.149/zentao/upload

注意路径必须用/,并且前面加/cygdrive

rsync具体参数及其含义请自行查找资料
 

### 配置和使用 RsyncWindows 系统中的解决方案 #### 1. 使用 Cygwin MSYS2 安装 Rsync 为了在 Windows使用 `rsync`,可以通过安装支持 Unix 工具的环境来获取它。以下是两种常见的方法: - **Cygwin**: 提供了一个完整的类 Unix 环境,其中包含了 `rsync` 工具。 - **MSYS2**: 另一个流行的工具集,也提供了 `rsync`。 安装完成后,在终端中验证 `rsync` 是否可用: ```bash rsync --version ``` 如果成功显示版本信息,则说明已正确安装[^1]。 --- #### 2. 结合 Git for Windows 使用 Rsync 另一种简单的方法是利用已经广泛使用的 Git for Windows 来集成 `rsync` 功能。具体操作如下: ##### (1) 复制必要的文件 将预编译的 `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` 版本: ```bash rsync --version ``` 确认其正常工作[^2]。 --- #### 3. 基于 SSH 的跨平台同步配置 当需要从 Linux 主机同步数据Windows 反之亦然时,可以借助 SSH 实现更安全的数据输。以下是一个典型场景的例子: ##### (1) 从本地 Windows 同步至远程 Linux 服务器 假设目标路径为 `/cygdrive/D/temp/rsync/receive`,则可执行以下命令: ```bash rsync -e ssh -avz /source/directory/ user@remote_host:/destination/directory/ ``` ##### (2) 从远程 Linux 服务器同步至本地 Windows 同样地,也可以反向同步: ```bash rsync -e ssh -avz user@remote_host:/source/directory/ /local/destination/directory/ ``` 注意:需指定 `-e ssh` 参数以启用基于 SSH 的加密通信[^3]。 --- #### 4. 解决常见错误 某些情况下可能会遇到连接失败等问题。针对此类问题,建议显式定义所用的 SSH 路径。例如: ```bash rsync -e 'C:\ProgramData\Chocolatey\lib\rsync\tools\bin\ssh.exe' -av --progress --stats '/source/file/path' '/local/destination/path' ``` 这样能够有效规避因默认路径不匹配而导致的功能障碍[^4]。 --- #### 5. 推荐参数详解 实际应用过程中可根据需求调整选项组合。一些常用的标志及其作用包括但不限于: | 参数 | 描述 | |------------|----------------------------------------------------------------------| | `-a` | 归档模式,保留原始属性如权限、时间戳等 | | `-v` | 显示详细过程 | | `-z` | 对数据进行压缩 | | `--exclude` | 指定排除特定类型的文件 | | `--delete` | 如果目标中有源不存在的文件,则删除 | 示例脚本展示如何排除 `.git` 目录并自动忽略版本控制系统产生的临时文件: ```bash rsync -av --exclude '.git/' --cvs-exclude /data/source/ root@192.168.x.x:/data/target/ ``` 此外还可以通过自定义路径创建必要目录后再上传文件[^5]。 --- #### 总结 以上介绍了多种方式让开发者能够在 Windows 平台上顺利部署和运用 rsync 达成高效的文件同步目的。无论是单独依赖第三方组件还是结合现有开发套件扩展功能均各有优劣,请依据实际情况灵活选用最佳实践方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值