windows文件同步实践心得

本文记录对一次Windows之间文件同步的过程。

目的

将两个A电脑上100g的文件同步到B电脑上, A、B两台电脑都是Windows操作系统。

工具

  1. syncthing
  2. rsync(cwrsync)

过程

  • 尝试过将整个数据压缩, 但是通过7zip工具压缩后的zip文件,在解压时提示The Compressed Zipped Folder Is Invalid Error错误。可能是因为压缩文件太大吧, 笔者的文件系统是NTFS。
  • 尝试网上比较推崇的syncthing, 一通操作下来实在太卡了。 用的是有界面的版本SyncTrayzorPortable
  • 最后还是使用rsync, 最开始想用来着, 发现windows版本不好搞, Linux可直接apt或yum进行安装。 最后使用了Windows版本的cwrsync

下文着重讲一下cwrsync的配置使用过程。

cwrsync使用过程

rsync 是一个用于在本地或远程系统之间同步文件和目录的命令行工具。它能够快速、灵活地传输数据,并支持增量同步,只传输文件的变化部分,从而减少数据传输量。

rsync是C/S架构, 所以一般一端安装服务程序, 其他端安装客户端程序。 windows版本下载

安装服务程序

解压下载的安装程序进行安装。

安装cwrsync需要提供一个用户名密码, 该用户名密码将会创建一个windows账号密码, 用于运行cwrsync程序的。

安装后其目录结构如下:

│  fstab.txt
│  rsyncd.conf
│  uninstall_cwRsyncServer.exe
│  uninstall_ICW_Base.exe
│  uninstall_ICW_RsyncServer.exe
│
├─bin
│      rsync.exe
|      ...
├─doc
├─etc
└─tmp

配置cwrsync server

配置根级目录下存在rsyncd.conf配置文件, 修改文件内容:

use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
port = 8173
uid = 0
gid = 0

# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[sandbox]
path = /cygdrive/H/
read only = false
transfer logging = yes
hosts allow = *

新增项:

port = 8173  # 用于配置rsync服务端口, 默认端口为873
uid = 0      # 配置用户id, 如果不配置会报错`invalid uid nobody`
gid = 0      # 配置组id

注意项:

  • [***]及其下面的配置仅用于配置某个模块,代表一个资源的配置。 其中模块名称[sandbox]中的内容可调整, 默认为[test], 可更改为任意你想定义的名称。
  • 模块中的路径配置path需要按照cygwin的命名约定, 上述配置的/cygdirve/H/表示路径为H盘根目录, 该路径为服务端同步的目录。多个目录需要配置在不同的模块中。
  • hosts allow用于限定访问的主机, 可直接指定ip地址, 多个用英文逗号相隔。
  • 还可添加auth users, 用于数据同步时的用户认证, 多个可用逗号相隔。
  • 如果配置了用户认证,需要对应配置密码文件secrets file, 该选项指定的文件包含了用户密码, 形如username:password
  • 其他配置可参考rsync的配置, 其配置项目是一样的。

笔者并未配置用户认证

启动服务

配置完成后, 需要在windows 服务中找到RsyncServer, 并启动。之后就可以通过客户端进行文件同步了。

安装客户程序

找到对应的安装包, 指定安装目录进行安装。 安装后其目录结构如下:

│  cwrsync.cmd
│  license.txt
│  uninstall.exe
├─bin
│      chmod.exe
│      plink.exe
│      puttygen.exe
│      rsync.exe
│      rsync.exe.stackdump
│      sechaw.exe
│      SecureChannelWizard.exe
│      ssh-keygen.exe
│      ssh-keyscan.exe
│      ssh.exe
|      ...
└─doc

使用客户端进行同步

打开命令行工具, 打开客户端安装目录的bin目录, 执行同步命令。

笔者使用的同步命令如下

rsync.exe -avz rsync://192.168.x.x:8173/sandbox  /cygdrive/G/

该命令用于将服务端模块sandbox指定的目录中的文件, 递归同步到当前机器的G盘根目录下。

其他方式

rsync.exe -avz username@192.168.x.x::模块名称  /cygdrive/G/

指定了用户名, 还可以指定密码等

更多命令及选项参考rsync 用法教程

注意

  1. 注意防火墙配置
  2. 查看服务是否启动

结论

同步文件还得是rsync

posted @   汗牛充栋  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示