You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows如何用硬链接实现备份?Linux rsync备份方案解析

Awesome that you're leveraging hard links to cut down on backup space with rsync on Linux—replicating that space-efficient workflow on Windows is totally doable, and you’ve got a few great options depending on whether you prefer built-in tools or want to stick with something familiar like rsync. Let’s dive in:

方法1:用Windows自带的Robocopy(推荐,无需额外软件)

Robocopy is Windows' built-in, powerful file sync utility, and when paired with NTFS's hard link support, it can mirror rsync’s space-saving magic.

分步操作:

  1. 第一次全量备份
    First, create your initial full backup to establish a baseline:

    robocopy "C:\your\source\folder" "D:\backups\1" /MIR /COPYALL /R:3 /W:5
    
    • /MIR:镜像源目录(删除备份中源目录已不存在的文件)
    • /COPYALL:复制所有文件属性(权限、时间戳等),与原文件保持一致
    • /R:3 & /W:5:复制失败时重试3次,每次间隔5秒(可按需调整)
  2. 后续增量备份
    日常备份时,我们只同步修改过的文件到新备份文件夹,再为未修改的文件创建指向上次备份的硬链接(避免占用额外空间)。以下是自动化的批处理脚本:

    @echo off
    set "source=C:\your\source\folder"
    set "dest_root=D:\backups"
    
    rem 获取最新的备份编号(假设备份文件夹以数字命名:1、2、3...)
    for /f "delims=" %%i in ('dir /b /ad /o-n "%dest_root%" ^| findstr /r "^[0-9]*$" ^| head -n 1') do set "last_backup=%%i"
    set /a "new_backup=last_backup+1"
    mkdir "%dest_root%\%new_backup%"
    
    rem 仅将修改/新增的文件同步到新备份
    robocopy "%source%" "%dest_root%\%new_backup%" /MIR /COPYALL /R:3 /W:5 /XL /XO /XN
    
    rem 为未修改的文件创建指向上次备份的硬链接
    for /f "delims=" %%f in ('robocopy "%source%" "%dest_root%\%last_backup%" /L /IS /NFL /NDL /NJH /NJS') do (
        if not exist "%dest_root%\%new_backup%\%%f" (
            mklink /H "%dest_root%\%new_backup%\%%f" "%dest_root%\%last_backup%\%%f"
        )
    )
    
    • /XL, /XO, /XN:排除与上次备份中完全相同的文件(时间戳、大小一致),只复制有变化的内容
    • mklink /H:创建硬链接——让新备份中的未修改文件"指向"上次备份的对应文件,而非重复复制,彻底节省空间

方法2:用Windows版rsync(cwRsync)

如果你想沿用Linux下熟悉的rsync语法,cwRsync(rsync的Windows移植版)完全适用。NTFS支持硬链接,所以--link-dest选项的表现和Linux上一模一样。

操作步骤:

  1. 下载并安装cwRsync(选择与你的Windows架构匹配的版本)。
  2. 编写批处理脚本,复刻你的Linux备份逻辑:
    @echo off
    set "source=C:\your\source\folder"
    set "dest_root=D:\backups"
    
    rem 获取最新的备份编号
    for /f "delims=" %%i in ('dir /b /ad /o-n "%dest_root%" ^| findstr /r "^[0-9]*$" ^| head -n 1') do set "last_backup=%%i"
    set /a "new_backup=last_backup+1"
    mkdir "%dest_root%\%new_backup%"
    
    rsync.exe --checksum --recursive --link-dest="%dest_root%\%last_backup%" "%source%" "%dest_root%\%new_backup%"
    
    这个脚本和你在Linux上用的几乎完全一致——未修改的文件会硬链接到上次备份,所以3GB的文件夹哪怕只改了一个小文件,所有备份加起来依然只占3GB空间。

方法3:用第三方工具FastCopy

如果你偏好GUI工具而非命令行,FastCopy是一款轻量高效的选择,原生支持硬链接复制。

  1. 打开FastCopy,设置源文件夹和目标备份目录。
  2. 在「选项」菜单中勾选硬链接复制(注意:仅当目标与源/上次备份在同一NTFS分区时可用)。
  3. 用Windows任务计划程序设置每日自动备份,替代Linux的cron功能。

关键注意事项:

  • 仅支持NTFS:硬链接只能在NTFS文件系统上使用,且所有备份目录必须在同一分区——跨驱动器或非NTFS卷无法创建硬链接。
  • 不要删除旧备份:新备份依赖旧备份的硬链接,若删除旧备份中的文件,新备份里对应的硬链接会失效。
  • Windows任务计划程序:用它替代cron来每日执行备份脚本——只需设置触发时间,指向你的批处理文件即可。

内容的提问来源于stack exchange,提问作者Volker Weißmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:33:52