链接文件和文件夹、快捷方式等可以让我们保持原文件的单一,而同时在不同的地方或电脑上(使用Git同步文件,然后在不同的电脑上创建链接使其同步)使用相同的文件。在Linux系统下创建链接的方式是使用ln命令,而在windows下我们使用最多的是快捷方式。然而快捷方式在链接文件的时候并不能达到引用源文件的目的,幸好windows也有一个mklink的命令供我们使用。

Linux下的链接就不多做介绍了(基本上用的最多的就是lnln -s),windows下有符号链接,硬链接和快捷方式这几种链接的类型。接下来一一介绍。

Windows下链接的类型

  • 执行命令 mklink link_name target_name
  • 创建链接后的图标和快捷方式很像
  • 在系统中不占用空间
  • 在文件系统中不是一个单独的文件
  • 在操作系统层解析(!?)
  • 如果源文件被删除了,链接就没用了
  • 移除源文件不会影响符号链接
  • 移除链接文件也不会影响源文件
  • 执行命令 mklink /H link_name target_name
  • 在系统中占用的空间与源文件相同,但在系统中引用的是相同的对象(不是拷贝)
  • 在操作系统层解析(!?)
  • 图标和创建快捷方式的图标不同
  • 移除源文件不会影响硬链接
  • 移除硬链接不会影响源文件
  • 如果源文件被删除,它的内容依然通过硬链接存在
  • 硬链接文件的任何更改都会影响到源文件

快捷方式(Shortcut)

  • 在选择的源文件上鼠标右键,通过下拉菜单创建
  • 快捷方式在系统中跟源文件是完全分离的
  • 只有那些懂得快捷方式的程序知道它们
  • 如果源文件删除,链接就没用了
  • 移除源文件不会移除快捷方式
  • 移除快捷方式不会影响到源文件

其区别可以参照下图:

实际应用示例

由于我有多台电脑,而我的多台电脑都会玩火炬之光2,但是我每次用不同的电脑玩火炬之光的时候我希望是一打开就是我上次的存档,而不是每台电脑里面都是不同的存档。在此,我就以火炬之光的存档在不同电脑的同步来说明链接的使用方式。

源文件在不同电脑的同步

首先,我们需要将源文件在不同的电脑之间进行同步,这里可以使用网盘、git等工具,最好使用自动同步的工具,不然这种链接的意义就不存在了。推荐使用Google Drive或者Dropbox等网盘。我的示例使用的是Google Drive。我将火炬之光的存档(save文件夹)放在E:\gdrive96\etc\Torchlight 2\save

创建本地的链接

火炬之光默认的存档文件夹路径在C:\Users\UserName\Documents\My Games\Runic Games\Torchlight 2\save

所以接下来我要做的就是把google drive目录下的save文件夹链接到默认存档位置(C盘文档目录下)。这里我们采用符号链接的方式,因为快捷方式无法达到目的,而我不喜欢使用硬链接,在源文件丢失后虽然链接依旧有效,但是就不知道同步的情况了。

使用管理员身份运行cmd,运行如下命令:

mklink /d "C:\Users\UserName\Documents\My Games\Runic Games\Torchlight 2\save" "E:\gdrive96\etc\Torchlight 2\save"

此处也可使用/j参数,其区别看这里

参考链接

Windows下硬链接、软链接和快捷方式的区别

Mklink in Windows

解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)

windows系统下的文件夹链接功能mklink/linkdhttps://www.cnblogs.com/plusium/archive/2010/03/17/1688511.html)