使用软链接解决STEAM更新下载到机械硬盘的问题

橘子 发布于 1 天前 22 次阅读


问题起因

STEAM的垃圾更新机制!

可以确定的是,至少从2018年开始,STEAM的更新机制就是这么垃圾:他总是在下载游戏的时候找那个剩余空间最大的磁盘作为缓存盘,而不考虑任何其他因素!

如果,恰好,你同时拥有固态硬盘和机械硬盘,并且机械硬盘剩余空间更大,那完了,STEAM很有可能在使用空间更大的机械硬盘来下载文件!

这还不是最坏的,这意味着:

  • 文件会下载到机械硬盘,因此机械硬盘读写会几乎完全占满;
  • STEAM的更新机制导致边下载边更新,所以非常慢的机械硬盘速度会拖慢整体更新速度。换句话说,网络带宽跑不满,需要磁盘操作完成才能执行网络下载,然后这个过程交替进行……
  • 即使你把游戏安装在最快的固态硬盘,STEAM也完全无视这一点!它会在机械硬盘上下载完所有文件,执行更新,然后复制到固态硬盘……

众所周知,如果文件移动位于同一磁盘那么移动操作极小,特别是在固态硬盘上;所以STEAM的垃圾更新机制百害而无一利!

参考解决方法

我是找了很多方法尝试解决了……

首先是在b站看到有人有相同的困扰:

然后就发现他说的太对了。你在百度、谷歌、必应等搜索引擎基本找不到真正的解决办法,他们要么推荐你买加速器,要么告诉你风马牛不相及的垃圾回复。

然而这个视频也只是指出问题,没有解决,但是却基本辅助确定了问题所在。

最后还是在STEAM社区找到了真正有用的回复:Any way to change where steam downloads the update files? :: Help and Tips

没错,这也是本篇文章想要推荐的解决方法!

解决方案

简单来说,使用软链接!以下方法主要适用于Windows。(Mac一般就一个盘,不会遇到这种问题吧……至于linux,你都敢用linux打游戏了,linux的软链接不还是手到擒来?)

软链接

什么是软链接?简单来说,数据库中的视图;别名;昵称。就是这样的东西。

比如说,你想要邮寄一个快递到清华大学,那么实际的地址是,“北京市海淀区双清路30号”。谁会记这么复杂的玩意啊,说了别人也记不住。然而,我们可以记住“清华大学”,“清华大学”的实际地址就是“北京市海淀区双清路30号”,而“北京市海淀区双清路30号”有一个名为“清华大学”的别称、软链接。这么解释是不是就理解了?

现在,假设我们有:

  • G盘,一个机械硬盘(HDD)。
    • STEAM库路径是:G:\STEAM移动游戏库
    • STEAM在该盘的下载缓存是:G:\STEAM移动游戏库\steamapps\downloading
    • 这个盘非常慢,你不希望STEAM把文件下载到这里
  • F盘,一个固态硬盘(SSD)。
    • STEAM库路径是:F:\Game\Steam
    • STEAM在该盘的下载缓存是:F:\Game\Steam\steamapps\downloading
    • 这个盘非常快,你希望STEAM把文件都下载到这里

那么,现在构建一个从G盘下载文件夹指向F盘下载文件夹的软链接,就可以啦!换句话说,STEAM想要把文件下载到G盘的时候,他觉得是把文件放到G盘了,但实际上G盘的文件只是一个虚拟的,实际文件存储在F盘。

具体操作

你需要知道以下几件事:

  • 你应该使用CMD,也就是命令提示符来输入指令。PowerShell对本次使用的一些工具命令不支持。
  • 你必须以管理员权限调用CMD终端。
  • 你在操作时,需要注意你位于那个一个磁盘目录。比如,你想要在G盘操作,就需要先使用G:这个命令切换到G盘再操作。

接下来是操作步骤:

  1. 确认STEAM没有任何正在进行中的更新。
  2. 完全关闭STEAM。
  3. 确认你希望替换掉的目录。
    • 也就是你不希望STEAM把文件下载到这里,你想创建一个软链接目录替换它,这样STEAM就会把文件下载到你指定的源目录了。
    • 在本例子中,它是G:\STEAM移动游戏库\steamapps\downloading
  4. 你需要手动删除掉希望替换掉的目录,因为稍后你会使用软链接替换它。
  5. 确认你希望使用的源目录。
    • 以后STEAM实际下载文件都下载到这里了
    • 在本例子中,它是F:\Game\Steam\steamapps\downloading
    • 你可以自己选定一个其他的非STEAM目录,比如说F:\Cache\什么的,可以自定义的。
  6. 准备工作完毕,在CMD终端使用接下来的代码创建软链接。

以下是创建软链接的代码:

G:
cd G:\STEAM移动游戏库\steamapps
mklink /D downloading F:\Game\Steam\steamapps\downloading

然后终端应该会提示如下:

> 为 downloading <<===>> F:\Game\Steam\steamapps\downloading 创建的符号链接

这样,软链接就创建完成了。软链接文件夹的图标上会有一个小箭头,并且在属性一栏中可以看到它指向的目标文件夹。

至此,问题解决!!!