FreeFileSync 一款开源的文件同步软件

同步软件展望

FreeFileSync 登上 SourceForge 软件月榜后,软件作者 Zenju 分享了他关于本软件的历史、目标和方向。

给我们介绍一下软件 FreeFileSync 。

FreeFileSync 是一款图形化的文件(夹)同步和对比工具。
它主要功能是对比两个文件夹之间的差异,然后同步差异的文件,快速完成文件的备份。 不像其他克隆/镜像软件,我们每次仅仅复制改动过的文件。
你可以轻松的创建同步任务,轻松的把重要文件备份到另外一个文件夹,不需要任何的网络服务。
第二个重要功能是文件夹比较:使用 FreeFileSync ,采用二进制格式对比整个文件夹,找出具体的变更文件。
这很像文件对比工具,只不过是文件夹级别的。 另外你手中的文件对比工具也可以集成到 FreeFileSync 。

你是怎么开始做这个软件的?

当年我需要异地办公,经常在两个地方来回穿梭,我需要在两台电脑之间来回复制几十 G 的文件。
我这个需求还是很简单的,但是呢,我找到的软件都非常复杂,并且很慢,还没有错误汇报和处理。
经过很多次的”未知错误“之后,我决定自己写一款需要的软件,并且把解决这个复制文件过程中的”未知错误“作为最基础的需求。

当然我又整理了几条其他需要解决的需求:

  1. 简单易用,没有复杂的界面
    把常用的一些选项做成集合,只需要选一下正好合适的就可以了。
    在没有文件损失的情况下让软件智能选择如何同步。

    找到这款同步软件功能合集的最优组合方案,我经常在考虑如何才能把软件最优组合:
    如果软件功能太少,那么软件很难满足客户的需求。
    如果软件功能太多,那么客户就会有太多的选项需要处理。

    最理想的情况是:软件的功能数量是刚刚好,也就是说功能之间有最小的相互依赖,并且能解决最多的问题。

  2. 做到极速同步
    如果我发现了另外一款同步软件同步速度比我们快,我会把这当成我的挑战,不超越或者追平这个速度,我是不会善罢甘休的。

    其实同步的速度主要被硬盘或者是存储设备的 I/O 速度所限制,这个挑战就变成了如何用最少得 I/O 读写次数完成同步,CPU 运算速度很快,它占用的时间可以忽略不计。

  3. 完美的错误处理方法
    每一个操作都会完整检查,以防真的会发现错误,这样才能在错误发生的时候反馈最完整的错误信息。
    在 FreeFileSync 之前,出名的同步软件缺少持续的错误检查和准确的错误信息这让人很难接受。
    可靠性是同步软件的重要指标,我可以向大家保证:如果没有提示错误,那么同步操作就没有错误。

之前规划的功能都实现了吗?


在软件中增加哪些功能是个艰难的选择。
个人的重要需求对于所有 FreeFileSync 用户可能就没有那么重要,我们非常审慎的做出选择。 我们倾向于选择那种只需要简单的调整就能满足很多人需求的功能,往往这些功能不需要增加一个选项或者复选框。
完全理解用户需求是很困难的,这需要时间沉淀,也需要有开放的心态等待用户的反馈。
尽管距离最初的构想已经很多年,我非常自豪的说 FreeFileSync 在软件设计理念和构想方面没有做过妥协。 也没有历史遗留的问题阻碍软件的发展。

我没有找到比我们更快的软件。性能测试结果显示,除了必要的 I/O 读写时间,其他的时间占比微乎其微。 另外呢,FreeFileSync 会尝试用多线程、多任务尽快的完成同步任务。
举个例子,软件会尝试同时扫描所有需要扫描的文件,如果使用单线程、单任务,那么就需要等待文件夹一个一个的完成扫描。多现场,多任务减少了等待时间。

FreeFileSync 的错误提示极大的降低了用户的无助感,大部分情况下用户都可以根据错误提示自己解决问题。
软件的提示消息分为多个等级:首先会概述出现了什么问题,然后会提供更详细的上下文信息,甚至是返回操作系统的错误代码,这些尽可能的详细描述问题的细节。
所有的错误信息都是可复制的,并且在搜索引擎搜索相关问题的时候会有较详细的解决方案。
这也极大的降低了论坛的压力,用户也能够更快的找到解决办法。

哪些用户在您这个项目中收益最多?

FreeFileSync 适合每一个想定期备份文件的用户。 我们软件能做到一次设置,长期可用。 我们能简化到只需要双击设置文件就可以同步您的文件(夹)。
当然如果您有需求的话也可以实现定时运行或者实时同步,软件有实时同步功能。
数据备份当然非常重要,可能您也需要文件的版本控制,FreeFileSync 可以帮您实现多版本备份。
在生活的角度讲,FreeFileSync 让您睡的更香甜,因为它帮您保存了文件的最近更新版本。反正对我有很大的帮助。
就技术而言,使用 FreeFileSync 不需要额外的知识 无论是普通用户还是计算机专家,他们都能找到合适的使用方法。
我也非常坚信,计算机专家也喜欢简单易用的软件。 所以为什么要提供“简单模式”和“专家模式呢”?

你觉得频繁的发布新版本是否有助于您建立用户社区?

FreeFileSync 从第一个版本开始就是每个月发布新版本。 在开发者的角度来看,短发布周期是有很多优点的:能快速的修复问题,在用户反感之前解决问题。这增加了软件的稳定性,并且能很好的维护用的信心。
当然重大错误一般也不会发生,毕竟每次版本的修改都比较小。
同时月度发布也迫使我们遵循严格的发布流程,包括代码提交、软件打包、软件测试和软件本地化。 所有的这些都需要很多的精力,当然这也有相应的回报:如果有严重错误,我们会发布紧急修复版本,用户会收到更新提示。 这是软件的必要部分,我们需要通知到大部分的用户,因为有可能有用户就非常需要这个出问题的功能。
考虑到我们一直是按月发布软件,这件事可以为用户带来软件可靠的信心,也有助于建立用户群。

FreeFileSync 下一步的计划是什么?

现在需求最高的是智能手机文件的同步。这也是我们放在靠前的需求。
但是呢,我没法做出完全的保证。
[备注: FreeFileSync 7.0 开始已经支持 MTP 设备文件的同步。]

如果你要重新做这款软件,你会怎么做?

FreeFileSync 采用非常激进的开放方式:如果有问题,无论是界面设计还是底层源码,无论是多么微不足道还是多么看起来无关紧要,我们都会尽快修复它。 这听起来是我们为微小的问题花费了大量的时间,但是从长期来看,这是值得的。 不仅仅是 FreeFileSync,我的所有软件项目都匹配我现在的专业水平。 当我学习了新技术,我会应用和更新我用过的每一处。
随着我对技术和用户界面的不断研究,我需要修复的问题会越来越少,相应的需要花费的时间也会越来越少。 FreeFileSync 代码库没有历史包袱,这让我的工作更快乐,这也是我们的一个巨大的战略优势。
重构代码带来的优点是非常明显的,FreeFileSync 的重构证明了这一点。
最近对软件影响最大的是 C++ 11 标准库。 [备注: 现在已经使用 C++23],底层代码有很大的变动。
随着 Windows、macOS 和 Linux 上的编译器支持,FreeFileSync 源码已经逐渐合并最新的库版本,这也改进了我们的编程方式。
软件是看表面功夫的,如果有需要去调整,那么现在开始做就不会晚。

还有其他您想表达给大家的吗?

我想感谢所有贡献过本项目的人。
尤其是感谢捐赠我们项目的人和长期为软件提供翻译的朋友们!
还想感谢为我们提供需求和错误反馈的朋友们!
感谢你们让 FreeFileSync 做的更好,走的更远!

Zenju
December, MMXIV(2014年12月)
(December = 12月, MMXIV = MM + X + IV = 2000 + 10 + 4 = 2014)