• 你的文件同步软件可能正在删除你的备份


    1 序言

    我电脑上有超过 2T 的数据需要备份,但是这么多数据使用 windows 文件历史记录来做多版本备份实在太消耗空间了。我用 FreeFileSync 镜像同步一份数据到移动硬盘来作为单版本备份使用,为了节约移动硬盘空间,删除文件的方式使用“永久”。有一天,我修改了电脑上 500GB 的文件,并且把他们移动到了另外一个文件夹,然后打开 FreeFileSync 开始镜像同步。在 FreeFileSync 漫长的拷贝数据的过程中,我随手点开移动硬盘的属性页面,发现了一件很奇怪的事情:移动硬盘已用空间大小怎么少了500GB?经过一番检查,我发现 FreeFileSync 居然是先把目标文件夹原来目录中的文件给删除了,然后才是拷贝新增的数据到新的文件夹。所以在镜像同步的过程中,我居然一个版本的备份数据都不存在!拷贝 500GB 的文件可是需要 60 分钟啊,这 60 分钟的过程中,我的数据居然没有备份的保护!本来以为同步一下能提升数据安全性,没想到在同步的过程中,数据居然变得更加不安全了!

    2 测试结果

    根据我对一堆同步软件的测试结果,它们默认都会先移除掉目标目录下的文件,然后才是把新的文件拷贝过去。如果你移动了一堆的文件,会导致在同步的过程中,目标目录下面的文件不完整,此时如果源目录所在的硬盘发生故障,所有数据都会丢失。
    许多软件有一个使用“回收站”存放被删除的文件的选项,但是“回收站”满了的时候,它们会静悄悄地把文件永久删除了,非常不可控。所以 "回收站" 并不是解决方案。
    有些同步软件有 “历史版本” 的功能,但是用同步软件本来就只想要一个版本,如果要历史版本,为什么不直接用 windows 自带的 “文件历史记录” 呢?
    软件 长路径 原子性同步 价格
    FreeFileSync 11.17 需要手动模拟 免费
    AllwaySync 21.1.5 免费但是限制文件数量
    Microsoft SyncToy 2.1 免费
    DirSync Pro 1.54b1 免费
    Syncovery 9.46k build 358  可以调整参数变成先拷贝文件,然后删除文件 收费
    ⭐️ FileGee 免费版 11.0.9 ✗ 不管是"镜像同步"还是"增量备份",都没法正确做单版本备份。 免费
    长路径:windows 上的历史遗留问题,很多软件没法处理 > 260 路径长度的文件。如果备份/同步软件不支持长路径,那在备份/同步的时候,会丢失一部分数据。
    原子性同步:保证只有新版本的数据同步完成之后,老版本的同步数据才会被自动删除掉。也就是这篇文章讲的内容。

    3 DIY 一个靠谱的方案

    FreeFileSync 默认的"镜像同步",并且设置 "永久" 删除文件也是不安全的,但是可以通过调整选项,让它变得安全。
    注意它的设置中的 "无风险的文件复制" 功能只对于文件名不变,单纯修改了文件内容有效。如果你像我一样改了文件内容,然后改了下文件名,那这个选项是没法保护你的备份数据的。
    需要按照下图的方式设置,才能安全同步数据。
     
    上面的设置的工作原理:镜像同步的时候,被删除和修改的文件先移动到历史版本文件夹,然后在任务成功完成的时候,自动执行一个命令,删除历史文件夹里面的内容。注意,失败或者任务中断的时候,命令不会执行,所以历史版本是安全的。同时日志也放到了目标磁盘下,如果源硬盘同步到一半的时候坏掉,可以根据日志手动回滚这次失败的同步。

    3.1 在成功时执行的命令

    (1) 如果直接从资源管理器里面拷贝路径,获得的是下面的以盘符开头的路径。
    "E:\Revisions-freefilesync\atomic mirror"
    (2) 但是重新插上移动硬盘后,盘符可能会变化,所以不能使用盘符,需要使用 volume GUID
    在"命令提示符"执行下面的命令,在输出结果的最后几行,会显示盘符和 volume GUID 的映射关系。
    mountvol.exe
    (3) 然后可以拼接出下面这种以 volume GUID 开头的文件路径
    "\\?\Volume{576f2736-1404-46b6-b46e-cf34cc7260f0}\Revisions-freefilesync\atomic mirror"
    (4) 把上面的路径放到 rmdir 命令的参数里面,就是完整的命令了。把类似下面的结果直接贴到上图中的 “在成功时” 执行的命令后面的框里就行了。
    rmdir /s /q "\\?\Volume{576f2736-1404-46b6-b46e-cf34cc7260f0}\Revisions-freefilesync\atomic mirror"

    4 了解更多

    1. 不同电子设备之间传输和备份文件的方案    这个博客里面写了详细的测试过程和结果
  • 相关阅读:
    装饰者模式【结构模式】
    代理模式【结构模式】
    原型模式【构建模式】
    建造者模式【构建模式】
    抽象工厂模式【构建模式】
    工厂模式【构建模式】
    单例模式【构建模式】
    设计原则
    Collector 源码分析
    Maven 包命令
  • 原文地址:https://www.cnblogs.com/cmicat/p/15939117.html
Copyright © 2020-2023  润新知