关于FreeFileSync
同步文件和文件夹
FreeFileSync 是一款文件夹比较和同步软件,可以创建和管理所有重要文件的备份副本。它不会每次都复制所有文件,而是检测源文件夹和目标文件夹之间的差异,仅传输所需的最小数据量。FreeFileSync 是开源软件,适用于 Windows、macOS 和 Linux 系统。

介绍一下FreeFileSync项目。
FreeFileSync 是一款图形化的文件同步和文件夹比较工具。它的主要目的是通过检查源文件夹和目标文件夹之间的差异来加速备份操作,并仅复制真正需要的内容,而不是像磁盘克隆/映像工具那样每次都复制所有内容。
由于同步通常非常快速,并且可以通过创建批处理作业来实现自动化,因此可以轻松地将重要文件备份到第二个位置——完全不需要任何云服务。
第二个核心功能是文件夹比较:使用 FreeFileSync,您可以对整个文件夹进行二进制比较,并准确地查看差异所在。这类似于文件差异比较工具的功能,但作用于文件夹级别。顺便一提,文件差异比较工具也可以集成到 FreeFileSync 中。
是什么促使你开始做这件事的?
项目启动之初,我需要一款文件同步工具,因为我经常往返于两个地点,需要两台电脑上几GB的数据保持同步。所以从概念上讲,我的需求很简单,但我对找到的工具并不满意:它们大多过于复杂,速度通常很慢,而且缺乏良好的错误处理机制。在看到太多次“未知错误”信息后,我决定从根本上解决这个问题。因此,我为FreeFileSync设定了一系列目标:
避免不必要的用户界面复杂性:许多选项可以通过找到一个更小、更适合当前任务的选项集来避免。还有很大一部分选项可以通过让软件在无风险的情况下自行做出智能决策来完全避免。
我拥有数学学术背景,我认为好的软件设计就是找到问题域的基向量:如果“向量”(即程序能力)太少,软件就无法充分满足用户的需求;如果太多,软件就会被冗余选项所累赘。理想情况下,就像向量空间的一组好的基向量一样,软件的功能应该是正交的,这意味着它们彼此之间的依赖性要最小,同时又能最大限度地扩展到问题域。由于我的专业领域主要集中在软件性能优化方面,因此FreeFileSync的另一个目标是实现卓越的性能。换句话说,如果我发现有文件同步工具比FreeFileSync更快,我会将其视为挑战,并坚持不懈地改进,直到FreeFileSync的速度至少与它持平。由于文件同步本质上是I/O密集型的,因此最佳性能可以定义为完成任务所需的最少I/O操作时间,同时CPU时间应该短到可以忽略不计。
良好的错误处理:每一项操作都应进行严格的错误检查,一旦检测到错误,应向用户返回尽可能多的有用信息。可靠性对于文件同步工具至关重要,在 FreeFileSync 出现之前,我发现流行的工具普遍缺乏一致的错误检查和合理的错误信息,这是无法接受的。FreeFileSync 的理念是:如果没有报告任何错误,用户就可以放心,一切正常。
最初的设想是否已经实现?
决定支持哪些功能是一项艰巨的任务。并非所有对单个用户至关重要的功能都值得向所有 FreeFileSync 用户开放。另一方面,很多时候,只需对软件进行一些小的改动,就能支持高度特定的场景,而不会增加整体的复杂性。用向量空间来比喻,这就像改变一些基本向量的方向。通常,无需简单地添加一个复选框,就能满足新的需求。全面理解问题才是难点,这需要时间,也需要对各种用户反馈持开放态度。如今,在最初构思多年之后,我自豪地说,FreeFileSync 在软件设计方面始终坚持其理念。没有任何历史遗留功能会阻碍未来的软件开发。
我还没有见过比 FreeFileSync 更快的同步软件。FreeFileSync 的性能测试结果表明,除了必要的 I/O 操作之外,额外消耗的时间比例非常低。此外,FreeFileSync 尽可能地并行处理任务,以保持机器的繁忙状态。例如,所有文件夹都会同时扫描,因此如果您一次性扫描十个速度较慢的硬盘,您只需等待扫描单个硬盘所需的时间。FreeFileSync
的错误信息显著降低了整体支持工作量,因为它们使大多数用户能够自助解决问题。错误信息采用多级结构,首先提供故障概述,然后提供更详细的上下文信息,甚至进一步细化到操作系统错误代码,以提供最详尽的信息。所有信息均可复制粘贴,并且格式便于在搜索引擎中搜索。
这大大减轻了 FreeFileSync 支持论坛的压力,因为用户可以更快地找到特定问题的解决方案。
谁能从你的项目中受益最多?
FreeFileSync 适合所有希望定期备份重要文件的用户。它的理念是只需设置一次同步配置,即可长期使用。这大大简化了备份过程,只需单击鼠标(在 FreeFileSync 批处理文件上)即可完成备份。如果您需要更高级别的自动化,可以将 FreeFileSync 添加到任务计划程序中定时运行,或者使用 FreeFileSync 自带的 RealTimeSync 应用,在检测到每次更改时实时同步文件夹。
备份不仅在灾难发生时需要,在您需要特定文件或文档的早期版本时也同样重要。从非技术角度来说,FreeFileSync 让您安心入睡,因为您知道文件的最新版本是安全的。我亲身体验过,它确实帮了我很大的忙。
至于技术方面,FreeFileSync 不需要任何专业知识。无论是普通电脑用户还是 IT 管理员,都能轻松上手。我坚信,专业用户也需要简洁易用的软件,所以为什么要在程序中添加“简易”和“高级”模式呢?
更频繁的版本发布是否有助于扩大用户群体?
FreeFileSync 自首次发布以来,每月都会发布一次更新。从软件开发的角度来看,这带来了如今短发布周期带来的所有优势:错误修复能够迅速送达用户,在问题造成负面影响之前就将其解决。这自然增强了用户对程序稳定性和维护良好的信心。此外,由于版本之间的变更不像采用传统方法(例如瀑布式开发)且可能每年发布一次的软件那样频繁,严重错误的发生概率也更低。
频繁发布迫使开发者严格简化整个开发流程,包括打包、测试和本地化。所有这些都需要大量的初始投入,但最终会带来回报:如果 FreeFileSync 中发现严重错误,开发者可以当天发布一个非按顺序的错误修复版本,同时内置的自动更新程序会通知用户。对于需要扩展到大量用户且用户可能对其功能高度依赖的软件而言,这是一个至关重要的特性。考虑到 FreeFileSync 多年来一直定期发布新版本,这种稳定性帮助建立了一个用户社区,这些用户对他们正在使用的备份软件的质量充满信心。
FreeFileSync 的下一个重大发展方向是什么?
目前用户呼声最高的功能是与智能手机同步。这是我们的首要任务,将在 FreeFileSync 的未来版本中实现。但我无法保证具体上线时间。[更新:FreeFileSync 7.0 版本已支持与 MTP 设备同步]
如果让你重新来过,你会做哪些不同的选择?
FreeFileSync 在软件开发方面采取了一种非常彻底的方法:如果软件设计或源代码出现问题,无论问题多么微小或无关紧要,都必须修复。这听起来似乎是为了解决小问题而投入大量精力,但如果始终坚持这样做,从长远来看,回报将非常丰厚。不仅是 FreeFileSync,我的所有软件项目都始终保持着与我当前专业水平相匹配的完整代码库。每当我学习到新知识,我都会将其应用到各个项目中并进行修复。随着我对技术和人机交互问题的理解不断加深,需要修复的问题数量会逐渐减少,投入的时间也会相应减少。同时,这也是一个巨大的战略优势,因为当没有历史包袱时,开发 FreeFileSync 代码库总是充满乐趣。持续代码重构的优势众所周知,而 FreeFileSync 的案例也充分证明了这一点。
在这方面,对整个软件影响最大的莫过于 C++11 标准 (更新:现在是 C++23),它对代码库产生了深远的影响。一旦 Windows、macOS 和 Linux 上的编译器支持的通用特性集允许,FreeFileSync 代码就逐步迁移到使用最新、更完善的编程方式。
软件开发必须严格按照字面意思来,如果有什么地方本应该做得更好,现在改正也为时不晚。
还有其他需要注意的地方吗?
我要感谢所有为这个项目做出贡献的人!尤其要感谢 所有捐赠者,以及多年来一直支持我的敬业翻译团队。此外,还要感谢所有提交功能请求和错误报告的用户,这些都帮助我们进一步改进了 FreeFileSync。
