介绍一款文件同步工具,是基于C++开发的。
工具名叫FreeFileSync,支持 windows、linux 和 苹果系统。下载地址为:
https://freefilesync.org/download.php

网站上有打包好的源代码,github上并没有该项目的源码,github只有一个flatpak编译环境的repo,并不是FreeFileSync的源码库。flatpak是下一代的linux桌面程序的编译发布方式。

flatpak 编译环境的github项目地址为:
https://github.com/flathub/org.freefilesync.FreeFileSync
该工具支持图形化和命令行两种方式运行。工具界面:

工具支持中文设置,简单的使用就是选择源目录和目的目录即可执行。
其中同步方式有三种方式:
双向同步(最终两个目录会相同)
镜像(单向,会删掉目的目录中多出来的文件)
更新(单向,只更新缺少或变动的文件)

执行过程中会有进度窗口,显示同步进度和速度。

同步完成后会给出日志,显示出错的文件

每个任务都需要保存为一个配置文件,方便后续调用。

图形化的配置文件可以转为批处理配置文件。批处理类型的配置文件可以在命令行执行。

在命令行执行时,如果允许弹出进度对话框,最终执行时会弹出对话框。
FreeFileSync.exe "D:\filesyncjob\desktop.ffs_batch"
配置文件是一个XML文件,里面定义了任务的参数,比如源目录,目的目录,同步类型,过滤文件列表等:
$ cat desktop.ffs_batch<?xml version="1.0" encoding="utf-8"?><FreeFileSync XmlType="BATCH" XmlFormat="17"><Compare><Variant>TimeAndSize</Variant><Symlinks>Exclude</Symlinks><IgnoreTimeShift/></Compare><Synchronize><Variant>Update</Variant><DetectMovedFiles>false</DetectMovedFiles><DeletionPolicy>RecycleBin</DeletionPolicy><VersioningFolder Style="Replace"/></Synchronize><Filter><Include><Item>*</Item></Include><Exclude><Item>\System Volume Information\</Item><Item>\$Recycle.Bin\</Item><Item>\RECYCLE?\</Item><Item>*\thumbs.db</Item><Item>*ScanPort.exe</Item></Exclude><TimeSpan Type="None">0</TimeSpan><SizeMin Unit="None">0</SizeMin><SizeMax Unit="None">0</SizeMax></Filter><FolderPairs><Pair><Left>C:\Users\Administrator\Desktop</Left><Right>G:\sync8</Right></Pair></FolderPairs><Errors Ignore="true" Retry="0" Delay="5"/><PostSyncCommand Condition="Completion"/><LogFolder/><EmailNotification Condition="Always"/><Batch><ProgressDialog Minimized="false" AutoClose="false"/><ErrorDialog>Show</ErrorDialog><PostSyncAction>None</PostSyncAction></Batch></FreeFileSync>
同步参数中可以调整比较文件的方式,可以比较文件时间和大小,也可以比较文件内容,类似对比md5值。如果为了提升速度,可以只比较文件大小。

在比较文件列表的过程中,可以设置过滤条件,忽略文件或目录,可以使用通配符模糊匹配:

文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




