V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
darklinden
V2EX  ›  Windows

吐槽: Windows 竟然没有 rsync...

  •  
  •   darklinden · 2022-06-12 19:57:00 +08:00 · 12453 次点击
    这是一个创建于 927 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天终于闲了会儿,突发奇想把媳妇闲置很久的本子拿来折腾。
    为了不挨打先备份资料,把闲置很久的小米硬盘路由拎出来挂了个 smb ,然后 Windows 下挂载网络磁盘
    复制粘贴简直要命,中间 wifi 抽风断了下,40g 的文件夹复制了 20g 过去,看着就蛋疼
    掏出 powershell ,rsync ,命令不认识,掏出 mingw64 ,rsync 不认识,网上一查,各种收费版,一个 power shell 版的 github 上 10 年前的,装了还报错...
    于是装个 python 然后写个遍历文件夹判断大小不同重新复制

    Windows 下同步文件夹都用什么?总不至于都是各自造的轮子吧?简直了
    92 条回复    2022-06-14 20:07:59 +08:00
    v2tudnew
        1
    v2tudnew  
       2022-06-12 20:00:47 +08:00   ❤️ 1
    syncthing ... 说慢的只是你们没公网 IP ,打洞又不行,连上了公共中继池罢了,毕竟是免费软件,中继肯定比不上收费软件的。
    darklinden
        2
    darklinden  
    OP
       2022-06-12 20:02:48 +08:00
    @v2tudnew 呃,内网同步过外网流量我是看不懂的
    BeautifulSoap
        3
    BeautifulSoap  
       2022-06-12 20:04:32 +08:00
    同步用 syncthing 就行了啊
    v2tudnew
        4
    v2tudnew  
       2022-06-12 20:05:44 +08:00
    @darklinden #2 我没见过,会绕外网。
    zhihuichan
        5
    zhihuichan  
       2022-06-12 20:07:19 +08:00 via iPhone
    Freefilesync
    woctordho
        6
    woctordho  
       2022-06-12 20:11:04 +08:00
    mingw64 (其实是 msys2 )可以用 pacman 装上 rsync

    https://packages.msys2.org/base/rsync
    hcql
        7
    hcql  
       2022-06-12 20:12:14 +08:00 via iPhone
    试试 Deltacpoy 基于 Rsync 的
    huangsen365
        8
    huangsen365  
       2022-06-12 20:15:15 +08:00   ❤️ 5
    robocopy
    HansZimmer
        9
    HansZimmer  
       2022-06-12 20:17:08 +08:00
    用群晖自家的
    heyjei
        10
    heyjei  
       2022-06-12 20:23:39 +08:00
    有的吧,我的电脑不知道怎么装了一个,不过印象中不太好用。
    victorc
        11
    victorc  
       2022-06-12 20:23:48 +08:00
    是的,这是我还用 mac 的唯一理由
    clf
        12
    clf  
       2022-06-12 20:25:37 +08:00
    syncthing 是最佳解决方案。

    有电脑一直不关机能一直同步的,那就用 Zerotier 组网,这样 Syncthing 能互相发现。

    没电脑一直不关机的,手机上也装一个,这样可以 A 电脑同步到手机,你在用 B 电脑的时候,手机会同步到 B 电脑上。
    sutra
        13
    sutra  
       2022-06-12 20:30:49 +08:00
    cygwin 里头有吧。
    dawangyezi
        14
    dawangyezi  
       2022-06-12 20:31:49 +08:00
    windows 有 robocopy
    shiny
        15
    shiny  
       2022-06-12 20:32:44 +08:00
    choco install rsync
    Tyanboot
        16
    Tyanboot  
       2022-06-12 20:34:19 +08:00
    @clf syncthing 也自带了 nat 相关工具,基本上不用 zt 也能自己打个洞。
    PrinceofInj
        17
    PrinceofInj  
       2022-06-12 21:14:22 +08:00 via Android
    单纯根据题主的需求,直接在复制粘贴一次,跳过已有文件就行了。如果不放心,贴完之后跑一遍 winmd5 就足够了。
    siknet
        18
    siknet  
       2022-06-12 21:18:26 +08:00 via Android
    本坛搜 rathole ,rust 写的打洞工具,我用了,不错
    nicholasxuu
        19
    nicholasxuu  
       2022-06-12 21:24:00 +08:00   ❤️ 1
    ubuntu subsystem 呀,硬盘什么的都直接 mount 了。
    vmebeh
        20
    vmebeh  
       2022-06-12 21:25:32 +08:00 via iPhone
    用 total commander
    fatigue
        21
    fatigue  
       2022-06-12 21:30:36 +08:00
    用 wsl 就行了,
    Linux:xxx 工具真好用!
    Win: 拿来吧你!
    Osk
        22
    Osk  
       2022-06-12 21:38:03 +08:00
    方法 1:Windows 资源管理器再复制一遍, 到最后的时候, 会提示文件已存在, 勾选 “跳过相同时间和大小的文件”, 解决.


    方法 2:
    robocopy /mir /z src dst

    /z: 中断后可续传
    /mir : 镜像 src 文件目录树到 dst, 注意此选项会删除 dst 中多余的文件!
    其他选项: 日志文件, 重试次数, 重试前等待等.

    robocopy 的问题在于, 官方文档没有说明默认情况下判定相同文件的逻辑, 网友们实测的逻辑是: 文件若有相同的修改时间和大小则认为是一样的, 会自动跳过.



    所以, 也许一开始就不该用 Linux 的想法考虑, 走偏啦.🤣
    ilylx2008
        23
    ilylx2008  
       2022-06-12 21:42:01 +08:00
    rsync 有 win 版本

    不过还是 wsl 里方便
    exip
        24
    exip  
       2022-06-12 21:42:49 +08:00 via Android
    有个 cwrsync 可以用
    cpstar
        25
    cpstar  
       2022-06-12 21:43:30 +08:00
    感觉非得在 windows 系统上拧巴 linux 的东西。
    windows 的复制粘贴虽然不好用,但是带着文件校验等各种东西,稳妥。复制粘贴,外加新版本的跳过,完全没有问题,印象上新版本也具有断点恢复的能力。或者就谨慎态度,一个目录一个目录或者几个几个地分头弄。
    啥,你用的 windows7 ?好吧,还好不是 xp ,还好不是 2k ,还好不是 98 。。。
    sidkang
        26
    sidkang  
       2022-06-12 21:44:44 +08:00
    = =Wi-Fi 抽疯,WIN:这锅我不背
    Yadomin
        27
    Yadomin  
       2022-06-12 21:45:01 +08:00
    PS> choco search rsync
    Chocolatey v1.1.0
    rsync 6.2.4 [Approved]
    dirsyncpro 1.53 [Approved] Downloads cached for licensed users
    2 packages found.
    xJogger
        28
    xJogger  
       2022-06-12 21:50:11 +08:00
    命令行:rclone
    客户端:Syncbackfree
    订阅制:GoodSync
    kennir
        29
    kennir  
       2022-06-12 21:50:35 +08:00
    total commender, 切换到 mac 后十几年了 mac 上也没个像样的仿品出来
    12101111
        30
    12101111  
       2022-06-12 21:54:04 +08:00   ❤️ 6
    你猜微软为什么内置 ssh 不内置 rsync, 因为 ssh 全称 OpenSSH, 是 OpenBSD 做的
    https://github.com/openbsd/src/blob/master/usr.bin/ssh/LICENCE
    OpenSSH contains no GPL code.
    而 rsync 呢
    https://github.com/WayneD/rsync/blob/master/COPYING
    GNU GENERAL PUBLIC LICENSE
    Version 3

    微软要死敢内置这个, 第二天 FSF 就得让整个 Windows 开源

    OpenBSD 搞了一个 OpenRsync, 说不定可以内置进 Windows
    https://www.openrsync.org/
    Buges
        31
    Buges  
       2022-06-12 21:54:05 +08:00 via Android
    我记得有个通过 cygwin 兼容层运行的 rsync 可以用。
    MasterMonkey
        32
    MasterMonkey  
       2022-06-12 21:55:37 +08:00 via iPhone
    mobaxterm 你值得拥有
    dcsuibian
        33
    dcsuibian  
       2022-06-12 22:00:01 +08:00   ❤️ 1
    不要用 Unix/Linux 的思想去操作 Windows ,会很难受的。

    话说为啥不把硬盘插电脑上直接烤?
    qiubangzhu
        34
    qiubangzhu  
       2022-06-12 22:39:31 +08:00
    @v2tudnew syncthing 端口是多少 是不是要做端口映射才可以
    celeron533
        35
    celeron533  
       2022-06-12 22:54:02 +08:00
    robocopy 就行了
    flynaj
        36
    flynaj  
       2022-06-12 23:02:52 +08:00 via Android
    syncthing 全平台同步,要用 rsync wsl1
    yfugibr
        37
    yfugibr  
       2022-06-12 23:09:45 +08:00 via Android
    有一个 cygwin 的版本,但是我尝试的时候发现文件权限会出问题,就放弃了

    也用过 robocopy ,但是在备份一个大文件夹时多次导致部分源文件丢失,没找到原因,也放弃了

    现在备份文件用的 wsl1 里的 rsync ,不怎么舒服,但没更好的方案(需求特殊,自己写的备份脚本),也只能凑合用
    fuis
        38
    fuis  
       2022-06-12 23:12:28 +08:00
    用 rclone 就好了
    mmtromsb456
        39
    mmtromsb456  
       2022-06-12 23:18:12 +08:00
    推荐使用 rclone bisync,配合 sftp 后端使用即可
    ClericPy
        40
    ClericPy  
       2022-06-12 23:52:49 +08:00
    呃... 有没有一种可能, 我有个固态移动硬盘...
    seanzxx
        41
    seanzxx  
       2022-06-13 00:21:02 +08:00
    用 Windows 的话,你就再复制一次呀,如果一个文件已经存在,他会提示你是要覆盖还是要跳过,也可以跳过所有存在的文件,你直接选跳过所有文件就好了,不用 rsync ,也不用 python 去写个小工具
    sulfoh6
        42
    sulfoh6  
       2022-06-13 00:55:29 +08:00
    Freefilesync +1
    hxy100
        43
    hxy100  
       2022-06-13 01:06:35 +08:00
    Cygwin 或者 Msys2 有 rsync 可以用,性能马马虎虎,WSL 也可以安装 rsync ( WSL2 往 Windows 磁盘读写文件速度略慢,指往 /mnt/下读写),本人常年在 Cygwin 下使用 rsync ,并无任何不适;

    documentzhangx66
        44
    documentzhangx66  
       2022-06-13 01:28:19 +08:00
    楼上这些神童们,居然还有人推 syncthing 这种大雷...

    1.Windows 在高速健康环境下,第一反应的确应该是 SMB ,因为方便。

    2.但如果环境不健康,比如会经过高损坏风险的 U 盘、移动硬盘、非 ECC 或 RECC 内存,应该使用 WinRAR + 恢复记录 + 恢复卷,或者类似的带有检验功能的方案。

    3.如果传输环境是容易断网或失败的情况,专业一点的做法是带自动恢复的 VPN 通道 + 接收端开 FTP 服务 + 发送端使用专门的能自动恢复传输的 FTP 客户端。更专业一点用 Sync Back Pro 来充当 FTP 客户端,并且勾选传输后验证。
    documentzhangx66
        45
    documentzhangx66  
       2022-06-13 01:29:37 +08:00
    另外,大文件传输,尽量别用 WIFI ,无论设备有多贵,无论协议是否最新。老老实实走有线。
    v2tudnew
        46
    v2tudnew  
       2022-06-13 01:34:44 +08:00
    @qiubangzhu #34 默认会用 UPNP 自动映射,你也可以手动映射 22000 TCP/UDP 端口,可以更改端口( NAT 转发时内外端口必须一致)。


    @documentzhangx66 #44 啊对对对,你好棒棒哦。
    yaoyao1128
        47
    yaoyao1128  
       2022-06-13 03:02:11 +08:00 via iPhone
    @documentzhangx66 syncthing 我感觉不算雷……不过前提是打开阶段性文件版本……至于校验并不适合实时同步而是适合冷备份……
    @fatigue 同意 并且针对 server 系统需要付比 desktop 高 n 倍费用的软件也可以用 wsl 曲线救国……

    @darklinden syncthing 如果有内网固定 IP 可以指定一下 正常情况下内网会自动,如果特别慢打洞了看下 windows 的防火墙……
    mingl0280
        48
    mingl0280  
       2022-06-13 04:09:34 +08:00 via Android
    1. Robocopy+Windows 共享
    2. WSL1 随便用 rsync
    Eytoyes
        49
    Eytoyes  
       2022-06-13 07:28:56 +08:00
    fastcopy 同步过 50T 的数据
    crab
        50
    crab  
       2022-06-13 07:29:02 +08:00
    一直用 robocopy 递增备份
    xinshidai
        51
    xinshidai  
       2022-06-13 08:13:11 +08:00
    我昨天刚用 msys2 中的 rsync 同步 centos 的仓库.
    slrey
        52
    slrey  
       2022-06-13 08:22:04 +08:00
    windows 就要用 robocopy 啊
    cat9life
        53
    cat9life  
       2022-06-13 08:23:05 +08:00
    robocopy 或者 xcopy 都能达到你的要求
    bsfmig
        54
    bsfmig  
       2022-06-13 08:48:48 +08:00
    @12101111 也未必,微软可以把 rsync 作为一个单独的 exe 模块放进去组成一个“系统”,按 GNU 的定义这并不会导致系统的其他部分被迫开源,因为其他部分并不依赖 rsync 。其实这也是 Android 整合 Linux kernel 的做法。
    encro
        55
    encro  
       2022-06-13 08:59:47 +08:00
    Windows 也有 FileSystemWatcher ,相当于 inotify 。实现同步也不太难。
    kokutou
        56
    kokutou  
       2022-06-13 09:03:39 +08:00
    msys2 里面有 rsync 啊

    vopsoft
        57
    vopsoft  
       2022-06-13 09:27:25 +08:00
    windows 有 robocopy 这个速度无敌
    610915518
        58
    610915518  
       2022-06-13 09:41:56 +08:00
    可以看一下我写的教程,如何在 Windows 上使用 Rsync

    https://acbetter.com/posts/use-rsync-by-git-bash-on-windows/
    gogogo1203
        59
    gogogo1203  
       2022-06-13 09:47:11 +08:00
    谁跟你说 windows 没有 rsync? https://prasaz.medium.com/add-rsync-to-windows-git-bash-f42736bae1b3 git bash 里装 rsync, 在 vscode 里直接用。
    scegg
        60
    scegg  
       2022-06-13 09:50:08 +08:00
    1996 年之前用 xcopy ,之后 robocopy 替代了前者。

    另外根据 wikipedia 信息,使用 rsync 且支持 windows 的软件有:
    BackupAssist
    cwRsync
    Grsync (免费)
    GS RichCopy 360
    LuckyBackup (免费)
    rclone (免费)
    Syncrify
    tym (米阿尼分)
    root01
        61
    root01  
       2022-06-13 09:50:48 +08:00
    filesync 用这个就行了
    raptor
        62
    raptor  
       2022-06-13 09:52:38 +08:00
    没装 cygwin 的 windows 我都不会用
    treizeor
        63
    treizeor  
       2022-06-13 09:57:00 +08:00
    verysync 挺好用的
    qW7bo2FbzbC0
        64
    qW7bo2FbzbC0  
       2022-06-13 10:01:56 +08:00
    Resilio Sync
    botman
        65
    botman  
       2022-06-13 10:03:41 +08:00
    看起来 lz 用 win 有点上火了,哈哈,话说回来,一直在用 wsl 的,之前用过一个从 cygwin 提取的独立小包,几 M 的样子,解压就能用,也可以看下 fastcopy ,经典神器了,win 这类工具还是蛮丰富的。
    palxex
        66
    palxex  
       2022-06-13 10:03:58 +08:00
    这么说 win 没有的多了,还没有 dd 呢。
    libook
        67
    libook  
       2022-06-13 10:10:00 +08:00
    通常 Linux 兼容需求首推 WSL2 ,Windows 的分区会自动挂载到 WSL2 文件系统里,可以对这些文件进行操作。
    特殊需求必须用 Windows 原生运行方式的,可以考虑 Cygwin ,我稍微查了一下,是有 rsync 软件包的。我此前想在 Windows 上原生运行 XServer 再把 WSL2 里的 GUI 程序投上来当做 Windows 程序用,就是用 Cygwin 装的 XServer ,自己找第三方的不是闭源就是收费。
    xz410236056
        68
    xz410236056  
       2022-06-13 10:28:51 +08:00   ❤️ 1
    两台电脑中间拉根网线,共享文件夹。windows 的逻辑就是你别整那花里胡哨的,GUI 天下第一
    vhus
        69
    vhus  
       2022-06-13 10:41:33 +08:00
    还是别费劲儿了,先同步到 onedirve 吧。
    折腾一顿,又不是每天都用。
    HankAviator
        70
    HankAviator  
       2022-06-13 10:51:02 +08:00
    试用 wsl 后果断弃坑 mingw ,但正如上面说的,同步文件如果在 /mnt 下文件系统读写性能不够,会很蛋疼。
    msg7086
        71
    msg7086  
       2022-06-13 11:21:01 +08:00
    你跟我说 mingw64 里没有 rsync 我可就乐了(狗头
    Googlefan
        72
    Googlefan  
       2022-06-13 11:59:38 +08:00
    Resilio Sync
    est
        73
    est  
       2022-06-13 12:01:17 +08:00
    windows 别人主推的是 shadow copy 。。。你要硬套一个 rsync 。。。wsl 里装一个呗
    Tink
        74
    Tink  
       2022-06-13 12:01:54 +08:00
    有单文件版本的,直接编译成 rsync 了
    googl8812
        75
    googl8812  
       2022-06-13 12:02:11 +08:00
    用 Beyond Compare 啊
    documentzhangx66
        76
    documentzhangx66  
       2022-06-13 12:55:49 +08:00
    @yaoyao1128

    1.我前几年用 Syncthing ,同步逻辑鬼一样,该同步的不同步,什么时候开始同步也不知道。从那时开始就觉得这软件有问题。

    2.是否校验,并不是取决于是否是实时同步或冷备份,而是取决于数据重要性。

    比如说,如果你觉得电影、视频之类的文件,不重要,那复制时就不需要校验。

    但日常文档、备份、包括实时迁移,我都是要进行校验,因为我注重数据安全,不希望什么时候突然发现文件不对了。

    另外,你觉得实时同步不需要校验,我觉得你大概率也没 ECC 或 RECC 内存条。
    wdssmq
        77
    wdssmq  
       2022-06-13 13:21:52 +08:00
    这种单次备份以防万一的场景,直接插上电脑复制就好吧。。移动硬盘版空间够的话直接克隆分区或全盘。。
    madao2015
        78
    madao2015  
       2022-06-13 14:16:17 +08:00
    git bash 下装个 rsync 还挺好用的; 同步几百 g 都没啥问题
    newmlp
        79
    newmlp  
       2022-06-13 14:38:44 +08:00
    Freefilesync
    ByteCat
        80
    ByteCat  
       2022-06-13 16:04:11 +08:00
    scoop install cwrsync 行不行,同步用 Resilio Sync 其实更好,速度挺快的
    silvernoo
        81
    silvernoo  
       2022-06-13 17:17:00 +08:00
    费那劲干啥? u 盘就能搞定的事
    shabbyin
        82
    shabbyin  
       2022-06-13 18:00:17 +08:00 via iPhone
    wsl 里面有啊
    Xusually
        83
    Xusually  
       2022-06-13 18:03:01 +08:00
    WSL 里面 apt 或者 MinGW 里面 Pacman 装一下就行了
    psyer
        84
    psyer  
       2022-06-13 18:50:54 +08:00 via Android
    @clf resilio sync 和 syncthing 啥区别?
    Bingchunmoli
        85
    Bingchunmoli  
       2022-06-13 19:48:09 +08:00
    smb ,NFS ,rdp ,HTTP SERVER, 直接 C+V
    clf
        86
    clf  
       2022-06-13 20:00:51 +08:00
    @psyer
    resilio sync 前身 BT Sync ,国内我试过可以免代理就 P2P 同步(早的时候好像不行),相对来说,可以配置的东西会少一些,然后和外部的版本控制之类的无法集成的样子;免费版够用。

    Syncthing 开源,没有商业化运营,局域网发现比较简单,可以设置回收策略和版本控制;权限控制的粒度会更好一些,同步也可以有黑白名单。
    codefun666
        87
    codefun666  
       2022-06-13 22:36:22 +08:00
    Windows 的 shell 能用? Windows 玩游戏还不错。
    thtznet
        88
    thtznet  
       2022-06-13 22:52:34 +08:00
    没人了解 Windows 公文包 么?虽然在 Win10 里砍了。
    catalysia
        89
    catalysia  
       2022-06-13 22:58:40 +08:00
    我没看懂是想要同步文件 还是只是复制粘贴过去
    复制粘贴的话 用 hfs 或者 ftp 协议呀 随便一个下载软件都支持断点续传呀
    12101111
        90
    12101111  
       2022-06-13 23:30:21 +08:00
    @bsfmig 任何 exe 事实上动态链接了 ntdll.dll user32.dll 之类的动态链接库, 微软允许其他人动态链接这些库, 但如果自身发布的一个 exe 链接了这些库, 并作为一个整体(Windows 操作系统)向外发布, 那也会受到 GPLv3 的影响
    bsfmig
        91
    bsfmig  
       2022-06-13 23:45:29 +08:00
    @12101111 原来如此。
    yaoyao1128
        92
    yaoyao1128  
       2022-06-14 20:07:59 +08:00 via iPhone
    @documentzhangx66 三个相互同步的存储设备两个 ecc 一个普通的 我说不需要校验是因为同步过程不需要,开启版本控制后同步定期校验对比足够了,同步是一直在后台进行而不是一次性的复制粘贴所以随时可以补救。不知道你对版本控制是什么设置方式,我对版本控制是保留 365 天并且每周 zfs 快照,数据两地三机五副本(不包括冷备份)。同步造成五个副本全部出错还找不回来那只能说你版本控制有问题而不是同步过程有问题。用最基础的校验去选择准确文件还能出问题的话肯定是有三个副本都是错误且还出现了同样的错误,一个 1 字节的文件在同样位置出现相同的错误的概率都是在出错的情况下的 256 分之一。与其在意同步过程中的校验冗余性质不如考虑好怎么增加副本数让同步过后的单副本错误危害性降低。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 21:30 · PVG 05:30 · LAX 13:30 · JFK 16:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.