Syncthing 中文文档 下载 App

文件版本控制总览:被覆盖或删除的旧文件去了哪里

它解决什么问题

默认情况下,远端改动覆盖本地文件、或远端删除某文件时,本地的旧版本直接消失。开启文件版本控制(file versioning)后,这些旧版本先被归档再让位——归档位置默认是同步文件夹里的 .stversions 目录。

这不是完整备份系统,但给「同步把我的文件覆盖了」这类事故留了一手,与[同步不等于备份(../01-认识同步方式/03-sync-vs-backup.md)的观念问题直接相关。

关键限制:只归档远端带来的变化

官方文档用了一整段强调:版本控制只处理从其他设备同步过来的改动。官方文档的例子:Alice 开了版本控制,Bob 改了文件——Alice 收到变化时旧版本归档;但 Alice 自己在本机改文件,程序不会也无法归档她的旧版。本机改坏的文件要靠真正的备份工具。

四种策略

在文件夹 Edit → File Versioning 标签里选择:

策略行为适合
回收站式(Trash Can)旧版移入 .stversions,可按天数定期清空最省心,防误删保底
简单式(Simple)同回收站式,外加「每文件最多保留 N 个版本」想限制占用的场景
交错式(Staggered)按时间梯度自动精简:30 秒→1 小时→1 天→1 周→最大年龄长期留档,NAS 落点首选
外部式(External)旧版交给外部命令处理(可送回收站、可上传异地)有定制管道的用户

各策略细节:[回收站式与简单式(02-trash-can.md)、[交错式(03-staggered.md)、外部式在本文末尾。找回旧版的操作见[从 .stversions 找回旧文件(05-restore-version.md)。

外部式一句话

配置一条外部命令,程序在文件被替换前调用它,传入 %FOLDER_PATH% 与 %FILE_PATH% 两个参数(2.1.2 起也提供同名环境变量),由脚本决定归档动作(示例脚本见官方文档,包括送 Windows 回收站的 PowerShell 写法)。注意官方警告:文件路径要当不可信输入对待,别把未加引号的参数拼进 shell。

存放路径的讲究

版本目录默认在文件夹内部,可改为其他路径,但官方提醒必须与同步文件夹同一分区/文件系统——归档是移动操作,跨分区移动会失败。