如何在 Mac 上让两个文件夹保持同步

访达无法让两个文件夹保持同步。你可以把一个文件夹拷贝到外置磁盘或 NAS 上一次,但文件变化后,没有任何机制去更新这份拷贝,也不会把你已删除的内容从拷贝中移除。要让两个文件夹保持一致,要么在终端里用 rsync 命令,要么用带同步工具的 App。选择之前,先想清楚你需要哪种同步,因为其中一种会删除文件。
拷贝还是镜像:先做这个决定
单向同步总是从源(你平时工作的文件夹)到目标位置(保存拷贝的磁盘、NAS 或服务器)。有两种方式:
- 拷贝:新增和修改过的文件会发送到目标位置,那里的内容永远不会被删除。你在源里删掉一个文件,目标位置中的旧拷贝依然保留。用于存档,这是稳妥的选择。
- 镜像:目标位置变成源的精确副本。你在源里删除的内容,在目标位置也会被删除。拷贝始终整洁,但源中的一次失误(或者源突然变空)会原样扩散到目标位置。
镜像不是备份。如果你在源中删除或损坏了文件,下一次同步会把损坏一并带过去。想找回某个文件昨天的版本,你需要带日期的备份,而不只是同步(文末会讲到)。
系统自带的方法:在终端里用 rsync
macOS 自带 rsync,这是一个只拷贝变化部分的命令行工具。把项目文件夹以拷贝方式同步到已装载的 NAS 共享文件夹,命令如下:
rsync -av ~/Projects/ /Volumes/NAS/Projects/
要改成镜像,加上 --delete。务必先加 --dry-run(或 -n)运行一次,它会列出将要发生的操作,但不改动任何内容:
rsync -av --delete --dry-run ~/Projects/ /Volumes/NAS/Projects/
这样可以用,但有几个坑:
- 末尾的斜杠有讲究。
~/Projects/拷贝的是文件夹里的内容;~/Projects(不带斜杠)会在目标位置里再建一个Projects文件夹。写错了,文件就会放错地方;配合--delete,还可能删掉你想保留的文件。 - 没有安全网。
--delete会直接永久删除,不经过废纸篓,也不询问。如果因为磁盘没有装载或路径写错导致源是空的,镜像会把目标位置清空。 - 定时运行要自己安排。 想每小时运行一次或在每次更改时运行,就得自己写 launchd 任务或 cron 条目,还要自己查看日志。
如果你熟悉终端,并且每次都先用 --dry-run 检查,rsync 完全够用。如果你想要同样的结果,同时能直观看到设置、并在删除前有检查,就用同步工具。
用 Folia Files 同步两个文件夹
Folia Files 内置了同步工具。它可以在两个文件夹之间单向同步:Mac 上的文件夹、外置磁盘、已装载的 NAS 共享文件夹或服务器,或者通过 rclone 连接的云端。

设置一个同步
- 选择工具 › 同步…(⇧⌘Y)。工具会在一个标签页中打开。
- 点按新建同步,然后用选取…设定源和目标位置,也可以把文件夹拖到对应的卡片上。
- 目标位置类型:磁盘或已装载的共享文件夹选文件夹(磁盘、宗卷、装载点);想不装载云端就把文件发过去,选通过 rclone 连接云端。后者需要另外安装 rclone(例如用 Homebrew)。
- 选择模式:拷贝(新增和更改)或镜像(目标完全相同)。再决定目标位置中被移除或替换的项目如何处理:移到废纸篓或永久删除。
- 选择比较方式:
- 大小和日期(快速):文件的大小或修改日期不同,就重新拷贝,和 rsync 的默认行为一样。
- 内容校验和(精确):大小相同的文件按 SHA-256 校验和比较,只是日期变了的相同文件不会被重新拷贝。校验和会被记住,之后的同步只重新读取有变化的文件。
- 选择何时:手动、定期、在指定时间每天,或每当源发生更改时。需要的话,添加用逗号分隔的排除项(
node_modules, *.log, .git)。 - 点按模拟运行,查看同步将做什么:新增、更新、删除的文件和冲突,以及要传输的数据量。然后点按立即同步。
定时同步和由更改触发的同步,要在你用立即同步手动运行过第一次之后才会开始。它们在 Folia Files 打开期间运行;打开工具里的登录时打开 Folia Files开关,重启后也能继续。每个已保存的同步都会显示在左侧列表中,附带其时间安排和上次运行的时间;绿色对勾表示那次运行一切顺利。
删除之前会发生什么
镜像的风险在于删除,所以 Folia Files 在移除任何内容之前都会先检查:
- 不会从空的或缺失的源进行镜像。 如果源里没有文件而目标位置有,或者源所在的磁盘没有装载,同步会被阻止。它也会拒绝源和目标位置相互重叠的情况,以及镜像到云端根目录。
- 你确认实际数量。 手动运行的镜像如果要删除文件,会先询问,并说明文件数量和去向(废纸篓或永久删除),按钮显示为同步并删除。镜像第一次在某个目标位置删除时,对话框会特别说明:源中没有的内容都会被移除,即使那些内容并不是同步放进去的。
- 定时同步不会自行删除。 如果自动镜像要在你从未确认过删除的目标位置删除文件,或者要移除目标位置一半以上的文件,这次同步会被跳过,并通知你。手动运行一次即可确认。
- 有内容读不了,就什么都不删。 如果同步过程中源里的某个文件夹无法读取,同步会拷贝能读取的部分,不做任何删除。
- 目标位置中较新的文件会被保留。 目标位置为文件夹时,在目标位置被修改过(比源中更新)的文件不会被覆盖,而是显示为冲突。
拷贝模式永远不会删除目标位置中的任何内容。
官网版与 Mac App Store 版
Folia Files 有两个版本,同步功能有所不同:
- 官网版:自带同步工具,目标位置可以是文件夹,也可以是云端。
- Mac App Store 版:同步属于免费小 App Folia Files Companion 带来的功能。安装并启用 Companion 后才会出现同步工具;没有它,菜单里就没有**同步…**这一项。有了 Companion,可以同步到文件夹,也可以通过 rclone 同步到云端(云端同步在 Companion 中运行,仍需安装 rclone)。
备份(工具 › 备份…)在两个版本中都可用,无需 Companion,可备份到磁盘或 NAS。
同步还是备份?先核对再信任
同步只给你一份最新的拷贝。如果需要文件的早期版本,请用备份:它会在磁盘或 NAS 上保存所选文件夹的带日期拷贝,未改动的文件不额外占用空间。很多人两者都用:用镜像在 NAS 上保留一份工作拷贝,用备份回到过去。
要核对拷贝是否真的与源一致,打开工具 › 比较…,比较这两个文件夹:新增、删除和修改过的文件会并排列出。

如果目标位置是你没有装载的服务器或云端,请参阅如何在 Mac 上不用 macFUSE 连接 SFTP 和 S3。


