十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

FreeFileSync跨平台同步实战:Windows与Linux文件备份指南

FreeFileSync跨平台同步实战:Windows与Linux文件备份指南 1. 为什么我最终选择了 FreeFileSync 做跨平台同步1.1 从一次惨痛的备份事故说起三年前我还在用某款商业同步软件做 Windows 和 Linux 服务器之间的数据备份结果有一次同步过程中网络抖动软件直接把源目录里没传完的文件标记成了已同步等我发现的时候一批设计稿已经变成了 0 字节的空文件。那次事故之后我开始认真找一款能看得见、控得住、可回滚的同步工具最后落在了 FreeFileSync 上一直用到现在。FreeFileSync 是一款开源的文件同步与备份工具支持 Windows、Linux、macOS 三大平台核心能力是对比两个目录的差异然后按照你设定的规则把文件从一边复制到另一边。它最打动我的地方有三个第一同步前会先做完整的对比分析把要新增什么、要覆盖什么、要删除什么全部列出来给你看确认之后才动手第二支持双向同步、镜像同步、更新同步等多种模式覆盖了绝大多数备份场景第三跨平台Windows 和 Linux 之间互相同步完全没问题配置文件还能通用。这篇文章主要面向两类人一类是手里有 Windows 电脑、想把重要资料备份到另一块硬盘或 NAS 的普通用户另一类是需要在 Windows 开发机和 Linux 服务器之间同步代码、配置、日志的运维或开发人员。不管你是哪种只要跟着走一遍基本都能把同步这件事跑通。1.2 它到底解决了什么问题很多人第一次接触同步工具时会问我直接用复制粘贴不行吗行但有几个场景复制粘贴会要命。第一个场景是增量同步。你有一个 200GB 的资料库每天只改动其中几个文件如果每次都全量复制一次要跑几个小时硬盘寿命也扛不住。FreeFileSync 只处理有差异的文件几秒钟就能完成。第二个场景是双向同步。你在公司电脑上改了文档回家又在笔记本上改了同一份两边都有新内容这时候你需要的是把两边的改动合并而不是用一边覆盖另一边。FreeFileSync 的双向模式能识别出左边新增右边新增两边都改了这几种情况分别处理。第三个场景是跨平台路径差异。Windows 用D:\ProjectsLinux 用/home/user/projects路径分隔符、大小写敏感性、权限模型都不一样。FreeFileSync 在跨平台同步时会自动处理这些差异你只需要在图形界面里把两边目录选好就行。第四个场景是可审计。同步完之后它会生成一份日志告诉你哪些文件被复制了、哪些被删除了、耗时多久。出问题的时候这份日志就是救命稻草。1.3 版本选择与安装包获取FreeFileSync 官网提供两种版本标准版和捐赠版。标准版免费功能已经足够日常使用捐赠版多了并行复制、自动更新等特性如果你经常同步几十万个小文件捐赠版的并行复制能明显提速。我个人建议先用标准版觉得不够再考虑捐赠。Windows 端下载下来是一个 exe 安装包双击一路下一步就行。安装过程中会问你要不要装 RealTimeSync这是一个配套的实时监控工具建议勾上后面会用到。Linux 端官网提供的是 tar.gz 压缩包解压之后直接运行里面的可执行文件即可不需要编译。注意 Linux 端需要系统里有 GTK3 运行库大部分桌面发行版都自带如果是纯命令行服务器需要额外装一下。提示Linux 端从官网下载的压缩包解压后第一次运行可能会提示缺少依赖用发行版自带的包管理器补一下 GTK 相关库即可不要去找第三方源。2. Windows 与 Windows 之间的同步实操2.1 建立第一个同步任务假设你有两块硬盘C 盘里有一个D:\Work目录想完整备份到移动硬盘的E:\Backup\Work。打开 FreeFileSync界面分成左右两栏左边点浏览选D:\Work右边选E:\Backup\Work。如果目标目录不存在它会问你要不要创建选是。选好之后点界面上方的比较按钮它会扫描两边目录把差异用颜色标出来。绿色是左边有右边没有蓝色是右边有左边没有黄色是两边都有但内容不同红色是冲突。第一次同步的时候右边是空的所以左边所有文件都会显示绿色。这时候先别急着点同步先看一眼对比结果确认没有意外。比如你发现某个大文件不该同步可以右键把它排除掉。确认无误后点同步它会弹出确认框列出将要执行的操作再点一次开始才真正动手。2.2 同步模式的选择逻辑FreeFileSync 提供几种同步模式选错了会出大事这里必须讲清楚。双向模式两边互相同步左边新增的传到右边右边新增的传到左边两边都改了的会提示冲突让你选。适合两台电脑之间保持资料一致。镜像模式以左边为准把右边变成和左边一模一样右边多出来的文件会被删除。适合做备份但要注意——如果你误删了左边的文件同步之后右边的备份也会被删掉。更新模式只把新的或改动过的文件从左边复制到右边右边多出来的文件保留不动。适合做增量备份不会误删。自定义模式可以针对不同情况分别设置比如左边新增的复制到右边右边新增的保留不动。我个人的习惯是做备份用更新模式做两台机器同步用双向模式几乎不用镜像模式因为镜像模式的删除行为太危险。2.3 过滤器与排除规则实际使用中你不可能同步整个目录总有些东西要排除。比如node_modules、.git、临时文件、系统缓存。FreeFileSync 的过滤器功能就是干这个的。点界面上的漏斗图标打开过滤器可以按文件名、扩展名、路径来排除。比如排除所有.tmp文件就写*.tmp排除某个目录写\node_modules\。支持通配符和正则具体语法在过滤器窗口里有说明。这里有个坑过滤器的路径匹配是相对于同步根目录的不是绝对路径。比如你同步D:\Work想排除D:\Work\cache过滤器里写\cache\就行不要写完整路径。注意过滤器设置是保存在同步任务配置里的换一个任务就要重新设。如果你有多个任务共用一套排除规则可以先把规则存成模板新建任务时导入。2.4 保存配置与批量执行配置好一个同步任务之后点文件菜单里的另存为把它存成一个.ffs_gui文件。下次直接双击这个文件就能打开配置好的任务不用重新选目录。如果你有多个同步任务比如工作资料备份照片备份代码备份可以分别存成不同的配置文件。更进一步FreeFileSync 支持批处理把多个配置文件放进一个批处理文件里一次执行全部。具体做法是新建一个.ffs_batch文件在里面列出要执行的配置文件路径然后用命令行调用。命令行调用格式大致是这样FreeFileSync.exe D:\Sync\work.ffs_batchWindows 下可以写一个.bat脚本把几个批处理串起来再配合任务计划程序设置每天定时执行。这样你人不在电脑前备份也能自动跑。2.5 实时监控RealTimeSync 的用法RealTimeSync 是 FreeFileSync 的配套工具作用是监控指定目录一旦有文件变动就自动触发同步。安装 FreeFileSync 时会一起装上。用法很简单打开 RealTimeSync把要监控的目录拖进去设置一个空闲时间比如 10 秒意思是目录停止变动 10 秒后才触发同步避免你正在编辑文件时频繁触发。然后指定要执行的同步配置文件保存。这个工具适合改完就想立刻备份的场景比如你写代码每次保存都希望同步到备份盘。但要注意如果监控的目录文件变动非常频繁RealTimeSync 会一直触发同步反而拖慢系统。这种情况建议还是用定时任务。3. Windows 与 Linux 之间的同步实操3.1 跨平台同步的三种连接方式Windows 和 Linux 之间同步首先要解决Linux 那边的目录怎么让 Windows 访问到这个问题。常见有三种方式。方式一SMB 共享。在 Linux 上装 Samba把要同步的目录共享出来Windows 通过网络路径访问比如\\192.168.1.100\share。这种方式最直观FreeFileSync 直接选这个网络路径就行。缺点是 SMB 在小文件多的时候性能一般。方式二SSHFS 挂载。在 Windows 上装 SSHFS 客户端把 Linux 的目录挂载成本地盘符然后 FreeFileSync 当本地目录处理。这种方式走 SSH 协议安全性好性能也比 SMB 稳定。缺点是挂载断了之后同步会失败需要重新挂载。方式三先同步到中间盘。如果两边网络不稳定可以先把 Linux 的数据同步到一块移动硬盘再把移动硬盘接到 Windows 上同步。这种方式最笨但最可靠适合一次性大批量迁移。我平时用方式二居多因为 SSH 本来就开着不用额外配 Samba。下面重点讲这种方式。3.2 SSHFS 挂载的完整步骤Windows 端我用的是一款叫 WinFsp 加 SSHFS-Win 的组合都是开源免费的。先装 WinFsp再装 SSHFS-Win装完之后在文件资源管理器里就能看到映射网络驱动器的选项。映射的时候填的路径格式是这样的\\sshfs\user192.168.1.100\home\user\projects其中user是 Linux 用户名192.168.1.100是 Linux 的 IP后面是远程路径。映射成功之后Windows 里会多出一个盘符比如Z:里面就是 Linux 的目录内容。这时候打开 FreeFileSync左边选 Windows 本地目录右边选Z:\下的对应目录就可以像本地同步一样操作了。注意SSHFS 挂载默认走的是密码认证每次重启都要重新输密码。建议配置 SSH 密钥认证把公钥放到 Linux 的~/.ssh/authorized_keys里这样挂载时就不用输密码了。密钥生成用ssh-keygen命令具体步骤网上很多这里不展开。3.3 路径与权限的坑跨平台同步最容易出问题的地方是路径和权限。路径分隔符Windows 用反斜杠\Linux 用正斜杠/。FreeFileSync 在图形界面里会自动转换但如果你用命令行调用配置文件里的路径要写对。建议统一用正斜杠FreeFileSync 在 Windows 上也能识别。大小写敏感Linux 的文件系统区分大小写File.txt和file.txt是两个不同的文件Windows 不区分。如果你在 Windows 上同步一个包含File.txt和file.txt的目录到 Linux可能会出问题。FreeFileSync 在检测到这种情况时会提示你需要手动处理。文件权限Linux 的文件有 rwx 权限位Windows 没有。同步到 Linux 时FreeFileSync 会按默认权限创建文件通常是 644文件和 755目录。如果你需要特定权限比如可执行脚本要 755需要在同步后手动改或者在 FreeFileSync 的设置里指定权限掩码。文件名非法字符Windows 文件名不能包含: * ? |这些字符Linux 可以。如果 Linux 那边有这类文件名同步到 Windows 会失败。FreeFileSync 会把这些文件标红你需要先在 Linux 上改名。3.4 用命令行做自动化同步图形界面适合手动操作但如果你要定期自动同步命令行更靠谱。FreeFileSync 在 Linux 端也提供命令行版本叫FreeFileSync用法和 Windows 端类似。先在图形界面里配好一个同步任务存成.ffs_batch文件然后在 Linux 上写一个 shell 脚本调用它#!/bin/bash /path/to/FreeFileSync /path/to/config.ffs_batch再用 crontab 设置定时执行比如每天凌晨 2 点跑一次0 2 * * * /home/user/sync.sh /home/user/sync.log 21日志重定向到文件里方便出问题的时候查。提示Linux 端跑 FreeFileSync 命令行需要图形环境支持因为它的核心还是依赖 GTK。如果是纯命令行服务器可以用xvfb-run包一层虚拟显示或者干脆用 rsync 替代。FreeFileSync 的优势在图形界面和跨平台配置纯命令行场景 rsync 更合适。3.5 一个真实的跨平台同步配置案例我现在的配置是这样的Windows 开发机上有一个D:\Code目录Linux 服务器上有一个/home/dev/code目录两边通过 SSHFS 挂载同步。同步模式选的是双向因为两边都可能改代码。过滤器排除了node_modules、.git、__pycache__、*.log这些不需要同步的东西。同步前会先比较确认没有冲突再执行。配置文件存成code_sync.ffs_gui放在桌面上每天上班第一件事就是双击打开点比较点同步。周末的时候会用 RealTimeSync 挂着改完代码自动同步。这套配置跑了两年多除了偶尔 SSHFS 挂载断掉需要重连没出过什么大问题。关键是每次同步前都会看一眼对比结果确认没有意外删除这个习惯救过我好几次。4. 常见问题与排查技巧实录4.1 同步速度慢怎么办同步速度慢通常有几个原因按可能性从高到低排小文件太多。几万个几 KB 的文件同步时间主要花在建立连接和元数据操作上而不是传输数据。这种情况可以开捐赠版的并行复制或者把文件打包成压缩包再同步。网络带宽不够。跨平台同步走网络如果带宽被占满速度自然慢。可以在同步时暂停其他大流量任务或者设置 FreeFileSync 的带宽限制。磁盘 IO 瓶颈。如果源盘或目标盘是机械硬盘随机读写性能差同步大量小文件会很慢。换成 SSD 能明显改善。对比阶段耗时。FreeFileSync 默认会对比文件内容不只是时间戳这需要读取文件。如果文件很大对比阶段就很慢。可以在设置里改成只对比文件大小和修改时间速度快很多但准确性略降。4.2 同步后文件丢失怎么恢复这是最吓人的情况但 FreeFileSync 有内置的版本控制功能可以救你。在同步设置里有一个版本控制选项可以设置删除或覆盖的文件移到哪里。比如设置成移到D:\Backup\Versions目录这样每次同步时被删除或覆盖的文件都会先移到这个目录而不是直接删掉。万一同步错了可以从这里找回。我强烈建议所有做备份的同步任务都开启版本控制尤其是用镜像模式的时候。多占一点硬盘空间换的是安心。如果没开版本控制文件已经被删了那就只能靠数据恢复软件了。所以这个设置一定要提前开事后补救很麻烦。4.3 权限错误与访问被拒绝Windows 端常见的权限错误是访问被拒绝通常是因为目标文件正在被其他程序占用或者你没有目标目录的写权限。如果是文件被占用关掉相关程序再同步。如果是权限问题检查目标目录的属性确保当前用户有写权限。有时候是杀毒软件在拦截把 FreeFileSync 加入白名单。Linux 端的权限错误通常是 SSH 用户对目标目录没有写权限。用ls -l看一下目录权限必要时用chmod或chown调整。如果是通过 SSHFS 挂载的还要确认挂载时用的用户和权限设置。4.4 中文文件名乱码跨平台同步中文文件名乱码根源是编码不一致。Windows 默认用 GBKLinux 默认用 UTF-8。FreeFileSync 在同步时会尽量转换但有时候还是会出问题。预防的办法是统一用 UTF-8。Windows 端可以在系统设置里开启使用 Unicode UTF-8 提供全球语言支持Linux 端确认 locale 设置是zh_CN.UTF-8或en_US.UTF-8。如果已经出现乱码先别急着同步把乱码文件在源端改名成正常中文再重新同步。已经同步过去的乱码文件手动删掉。4.5 常见问题速查表问题现象可能原因排查方向解决方法同步速度极慢小文件多、网络差、磁盘慢看日志里对比和传输各占多少时间开并行复制、换 SSD、打包同步文件同步后丢失镜像模式误删、未开版本控制检查同步模式和版本控制设置开启版本控制改用更新模式访问被拒绝文件占用、权限不足、杀软拦截看具体是哪个文件报错关程序、改权限、加白名单中文乱码编码不一致检查两端 locale 和系统编码统一 UTF-8手动改名SSHFS 挂载断掉网络抖动、SSH 超时看挂载点是否还在重新挂载配 SSH 保活同步任务不执行配置文件路径错、权限问题看命令行报错检查路径用绝对路径对比结果异常时间戳差异、时区问题看文件修改时间统一时区改用内容对比4.6 几个我踩过的坑第一个坑是时区问题。Windows 和 Linux 的时区设置不一样导致文件修改时间差了几个小时FreeFileSync 误判为文件有改动每次都全量同步。解决办法是两端统一时区或者在 FreeFileSync 设置里放宽时间戳容差。第二个坑是符号链接。Linux 里有很多符号链接同步到 Windows 时会被当成普通文件或目录处理可能造成循环引用。FreeFileSync 有跟随符号链接的选项默认是关的跨平台同步时保持关闭比较安全。第三个坑是长路径。Windows 默认路径长度限制是 260 字符Linux 没有这个限制。如果 Linux 那边有很深的目录结构同步到 Windows 会失败。解决办法是开启 Windows 的长路径支持或者把同步目标设在路径较短的目录下。第四个坑是同步过程中断电。这个最要命可能导致目标文件损坏。FreeFileSync 有安全复制选项会先复制到临时文件再改名降低损坏风险。建议开启尤其是同步重要数据的时候。5. 进阶技巧与效率提升5.1 用变量让配置更灵活FreeFileSync 的配置文件里支持一些变量比如%DATE%、%TIME%可以用在版本控制目录的命名上。比如设置版本目录为D:\Backup\Versions\%DATE%每次同步被删除的文件会按日期分目录存放找起来方便。这个功能在需要保留多个历史版本的时候特别有用。比如你每天同步一次一周之后就有 7 个日期目录每个目录里是当天被覆盖或删除的文件。想恢复到某一天的状态直接去对应目录找就行。5.2 多任务编排与依赖处理如果你有多个同步任务而且它们之间有依赖关系比如先同步 A 到 B再同步 B 到 C可以用批处理文件按顺序调用。FreeFileSync 的批处理文件支持串行执行前一个任务完成后再执行下一个。如果某个任务失败了想中止后续任务可以在批处理里加错误检查。不过 FreeFileSync 的批处理本身不提供条件判断需要借助外部的脚本语言比如用 Python 调用 FreeFileSync 命令行检查返回码再决定是否继续。5.3 日志分析与监控FreeFileSync 每次同步都会生成日志默认存在配置文件的同目录下文件名类似xxx.ffs_log。日志里记录了同步的开始时间、结束时间、处理的文件数、错误信息等。如果你做的是自动化同步建议把日志收集起来定期检查。简单的做法是用脚本扫描日志文件发现Error关键字就发邮件告警。复杂一点可以接入监控系统把同步成功率、耗时等指标可视化。我自己的做法是每周看一次日志重点看有没有错误和警告。大部分时候都是正常的偶尔会有几个文件因为权限问题失败手动处理一下就行。5.4 与其他工具的配合FreeFileSync 专注同步但有些场景需要和其他工具配合。压缩归档同步之前先把目录打包成 tar.gz 或 zip同步压缩包而不是散文件能大幅提升小文件场景的速度。Linux 端用tar命令Windows 端用 7-Zip 命令行。校验完整性同步完成后用md5sum或sha256sum校验关键文件的哈希值确认传输无误。FreeFileSync 本身不做哈希校验需要额外工具。加密敏感数据如果同步的数据包含敏感信息可以先用 VeraCrypt 之类的工具创建加密容器把数据放进去再同步。这样即使同步目标被访问数据也是加密的。5.5 性能调优的几个参数FreeFileSync 有一些隐藏的性能相关设置在工具菜单的高级设置里可以找到。并行文件操作数控制同时处理多少个文件默认是 1。捐赠版可以调到 4 或 8小文件多的时候提速明显。但调太高会增加磁盘和网络压力建议从 4 开始试。复制缓冲区大小控制每次读写的数据块大小默认是 512KB。大文件多的时候可以调到 4MB 或更大减少 IO 次数。小文件多的时候反而要调小。对比方式前面提过改成只对比大小和时间能大幅提速。如果对准确性要求不高比如同步的是日志文件可以用这个设置。这些参数没有万能值需要根据你的实际场景调。建议先用默认值跑一遍看瓶颈在哪里再针对性调整。6. 我的实际使用体会FreeFileSync 用了三年多从最初的 Windows 单机备份到后来的 Windows-Linux 跨平台同步再到现在的多任务自动化它一直是我数据管理工具箱里的核心工具。它不完美比如图形界面在 Linux 上偶尔会卡命令行版本依赖图形环境跨平台同步的权限处理还不够智能。但它的核心功能——对比、确认、同步——做得足够扎实而且完全免费开源没有理由不用。如果你刚开始用我的建议是先从最简单的本地备份开始熟悉对比和同步的流程然后尝试跨平台同步把 SSHFS 挂载跑通最后再考虑自动化和性能调优。不要一上来就搞复杂的配置容易出错也容易放弃。最后分享一个小技巧每次同步前不管多急都先看一眼对比结果。这个习惯看起来浪费时间但能帮你避免 99% 的同步事故。我见过太多人因为手快点了同步结果把重要文件覆盖了。多花十秒钟确认省的是几个小时的恢复时间。
返回列表