项目介绍-flk

跨平台文件链接管理器,让配置同步更简单

本项目接入了 DeepWiki,欢迎在 DeepWiki 上与之对话,以获取最精准的信息和解答:Ask DeepWiki

开发路线

当前软件正在积极地开发,采用了多个阶段的开发路线,计划逐步完善功能和用户体验:

  • 0.2:开发完 server 功能,实现完整的 WebUI 管理
  • 0.3:开发国际化功能,为软件内所有字符串添加抽象 i18n 层

0.1 版本的近期开发重点是:

  1. 将参数配置化,支持通过配置文件或环境变量来设置默认参数值,减少命令行输入的复杂度,如使用 Viper 集成。
  2. 简化命令行参数,约定优于配置,提供更智能的默认值和参数推断,减少用户需要输入的参数数量(低优先级,穿插开发)

演示

演示

项目概述

flk(FileLinK)是一款跨平台命令行工具,基于符号链接与硬链接技术,核心目标是解决多设备、多软件的配置文件分散管理与同步难题。它通过将各类软件的文件型配置存放至统一的 Git 仓库,实现配置的集中存储、多设备同步与一键恢复,同时支持灵活调整配置路径,适配不同使用场景下的配置管理需求,目前已可满足日常使用,处于持续迭代优化阶段。

该项目主要解决的痛点

配置同步如果采用手动复制粘贴的方式,效率极低且易出错。尤其是用户有大量的、跨平台的配置文件时,管理和同步的复杂度会大幅增加。采用复制粘贴思想为底层,但做了封装和优化的软件是存在的,但是这样的配置同步显然不够优雅,且不够高效。

使用符号链接和硬链接的方式来管理配置文件,可以实现真正意义上的“配置同步”,即所有设备上的配置文件都指向同一个位置,修改自动同步到中心仓库,中心仓库的修改也会自动同步到所有设备。flk 通过命令行工具的形式,提供了一个统一的接口来创建、检查和修复这些链接,极大地简化了配置管理的流程。

有用户提出,这种方式和写一个脚本来管理配置文件的方式有什么区别?确实,理论上任何功能都可以通过脚本来实现,但 flk 的优势在于:

  • 跨平台。flk 设计之初就考虑了 Windows、Linux、macOS 等不同平台的兼容性,提供了统一的命令行接口,用户无需关心底层实现细节。
  • 安全性。flk 内置了安全检查机制,防止用户误操作导致数据丢失,例如禁止使用 --force 删除根目录或家目录。
  • 交互性。flk 提供了交互式的检查和修复功能,用户可以在命令行中直观地查看链接状态,并选择修复方案,而不需要编写复杂的脚本逻辑来处理各种边界情况。
  • 可维护性。flk 通过记录链接信息形成配置清单,便于用户后续检查和维护,而脚本可能需要额外的日志记录和错误处理来实现类似功能。

前置知识——符号链接与硬链接

推荐阅读文章:https://sspai.com/post/66834

这是必备的知识,若您不了解符号链接与硬链接,之后的文章内容将会对您造成困扰。

安装

下载预编译二进制

GitHub Releases 下载对应平台的二进制文件,赋予执行权限后使用。

建议:下载后统一将文件重命名为 flk(或 flk.exe),方便后续的使用和升级。

从源码编译(不建议普通用户采取该方式)

确保安装 Go 1.21+,然后运行:

1
2
3
git clone https://github.com/Jy-EggRoll/flk.git
cd flk
go build -o flk ./main.go

自动升级

flk 内置自动升级功能:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
flk up

# 检查并升级 flk 到最新版本

Usage:
  flk upgrade [flags]

Aliases:
  upgrade, update, up

Flags:
      --check   仅检查版本,不升级
      --dev     检查开发版本
      --force   强制升级
  -h, --help    help for upgrade

核心功能

链接创建与管理

  • 语义化的链接创建,舍弃了传统的“源”“目标”链接这样的表述方式,使用“主要”“次要”这样的语义化参数来指定文件,创建文件链接时更直观。
  • 支持符号链接(软链接)和硬链接两种类型创建,通过命令行指定真实配置路径与软件读取的虚拟路径,一键完成链接替换。
  • 自动记录所有创建的链接信息,形成配置清单,便于后续检查与维护,支持强制覆盖已有配置文件(--force参数)。

多设备配置同步

  • 配置集中存储于 Git 仓库,多设备间通过拉取仓库即可同步配置资源。
  • 适配跨平台场景:对于 .gitconfig 等通用配置文件,可实现 Windows、Linux 等不同系统间的无缝同步;对于 MyKeymap 等系统专属软件配置,仅支持同系统内同步。
  • 支持按设备过滤检查/修复链接,便于管理多设备配置。

灵活适配与扩展

  • 支持任意以文件形式存储配置的软件(如 PixPin、Sandboxie Plus 等),无需软件本身支持导出/导入功能,通过链接机制直接接管配置。
  • 可实现“奇技淫巧”级用法:例如将微信文件目录、软件缓存目录等通过链接转移至指定位置,优化存储管理。

使用示例

用前必读

  • 查看软件帮助:flk --help flk -h flk help
  • 查看特定命令的帮助:flk help <命令> flk <命令> --help flk <命令> -h

软件中的子命令通常有各种别名,可以简化输入,您可以自行用 help 来查看。例如,upgrade update up 命令三者完全等价。

创建符号链接

1
2
3
4
5
# 创建符号链接,将真实配置文件链接到软件读取位置
flk create symlink --real ~/.config/myapp/config.json --fake ~/Library/Application Support/MyApp/config.json --device laptop

# 采用别名和短参数
flk cr sm -r ~/.config/myapp/config.json -f ~/Library/Application Support/MyApp/config.json -d laptop

对于 Windows 用户,需要使用管理员权限运行。建议启用 Windows 平台的 sudo,此处不再赘述。

创建硬链接

1
2
3
4
5
# 创建硬链接,要求文件在同一分区
flk create hardlink --prim /path/to/source --seco /path/to/target --device desktop

# 采用别名和短参数
flk cr hd -p /path/to/source -s /path/to/target -d desktop

检查链接状态

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 检查所有链接
flk check

# 采用别名
flk ck

# 检查特定设备的链接
flk check -d laptop,desktop

# 检查特定目录的链接
flk check --dir ~/.config

修复无效链接

1
2
3
4
5
6
7
8
# 交互式修复
flk fix

# 采用别名
flk fx

# 修复特定设备的链接
flk fix -d laptop,desktop

查看版本

1
2
flk version
flk ver

最佳实践

1. 统一配置管理

  • 将所有配置文件存放在 Git 仓库中,使用 flk 创建链接到软件默认位置。
  • 示例:将 .gitconfigvimrc 等文件集中管理,多设备同步。

2. 设备命名规范

  • 设备名不能包含逗号或空格,用于过滤时使用逗号分隔多个设备。
  • 建议使用简单名称如 laptopdesktopserver

3. 安全使用 --force

  • --force 会删除目标路径的现有文件,确保路径不指向重要目录。
  • flk 已内置安全检查,禁止删除根目录或家目录。

4. 定期检查与维护

  • 使用 flk check 定期验证链接有效性。
  • 对于硬链接,因其失效风险,建议定期修复。

5. 备份重要配置

  • 在使用前备份现有配置,防止意外丢失,尤其是使用 --force 参数会增加该风险。

安全注意事项

  • 路径验证:flk 禁止使用 --force 删除根目录(/C:\)或用户家目录,防止灾难性数据丢失。
  • 权限管理:Windows 创建符号链接需管理员权限,避免权限不足导致失败。
  • 设备名限制:创建链接时设备名不能含逗号或空格,以免影响过滤功能。
  • 硬链接限制:硬链接无法跨文件系统,确保主、次文件在同一分区。

适用场景

  • 多设备办公/开发人群:需在台式机、笔记本等设备间保持一致的软件配置(如编辑器设置、Git 配置、各种软件配置等)。
  • 技术爱好者:追求配置管理的标准化与高效化,希望通过轻量化工具实现配置的集中管控。
  • 跨平台使用者:需要在 Windows、Linux 等不同系统间同步通用配置,减少重复设置成本。

flk 以“本地链接中转+云端同步”为核心设计理念,用极简的技术方案解决了配置管理的核心痛点。随着后续可视化界面与适配库的完善,将进一步降低使用门槛,成为多设备配置同步的高效工具。

常见问题

为什么创建符号链接失败了

在 Windows 中,必须 用管理员权限运行 flk 才可以创建符号链接。简单来说,请使用管理员权限打开终端或 cmd、PowerShell,再执行 flk.exe。

为什么创建硬链接失败了?

硬链接要求主文件和从文件位于 同一个 盘符下,且硬链接具有失效风险,需要适时维护。

发表了 54 篇文章 | 总计 47566 字
本博客已稳定运行
使用 Hugo 构建
主题 StackJimmy 设计,由 蛋卷儿 深入修改