Windows 7虚拟文件夹?


16

我已经安装了Steam。Steam已安装到c:\ Program Files \ Steam。Steam将各种游戏下载到名为SteamApps的子文件夹中。Steam唯一可用的选项是将Steam下载并安装应用程序到与Steam相同的位置。典型的设置如下所示:

C:\Program Files\Steam\SteamApps\common\Game1
C:\Program Files\Steam\SteamApps\common\Game2
C:\Program Files\Steam\SteamApps\common\Game3
C:\Program Files\Steam\SteamApps\common\Game4

等等。

我的驱动器C是SSD,因此空间是个问题。Game1占用大量磁盘,因此我需要将其保留在驱动器C上,但是我要安装一个terrabyte的空间,我希望在其中安装Game2和Game3。

有没有一种方法可以创建一个名为“ Game2”的虚拟文件夹,该文件夹确实指向我的更大硬盘,并以一种使Steam(或其他任何应用程序)能够浏览到驱动器C上的位置而不是甚至意识到它确实在访问驱动器D:虚拟文件夹指向何处?

因此最后,C:\ Program Files \ Steam \ SteamApps \ Common \ Game2将作为文件夹存在,但实际上它映射到D:\ Games \ Game2。


1
我自己也有同样的“问题”。我要做的是备份当前不玩的游戏,然后删除本地内容。当您想再次播放它们时,只需进入菜单“ Steam->备份和还原”并还原它们。这样,您在重新安装时不必再次下载所有数据。但是,这是一个糟糕的设计,您不能在不同的磁盘上进行游戏。
T. Kaltnekar 2011年

1
我还将链接出色的“ Windows中的链接类型” superuser.com/a/347946/24500
surfasb 2012年


1
更好的是...我在下面的新答案中提供了更多详细信息。请看一下。
Flak DiNenno 2014年

Answers:


21

请尝试以下操作:

打开具有管理权限的命令提示符:

mklink / D Virtual_Folder_Here Real_Folder_Here

例如,您想要将某物安装到D:\ Games,但您希望它显示为C:\ Games。

mklink / DC:\ Games D:\ Games

这将创建一个文件夹D:\ Game,该文件夹也显示为C:\ Game。任何引用C:\ Game的内容都将重定向到D:\ Game。

由于我不完全了解Steam,因此我没有提供与您的文件夹完全匹配的示例。如果Steam允许您选择安装到的文件夹(由于您不只是将其安装到其他驱动器,我不确定它是否可以安装。),可以先创建它们的符号链接。如果不是这样,则可能需要进行一些文件传输,将其移动到新位置,然后创建符号链接。例:

Steam将您的游戏安装到:C:\ Program Files \ Steam \ SteamApps \ common \ Game2

现在,您创建文件夹:D:\ GameGoesHere

然后,您复制原始文件夹中的所有文件并将其放在D:\ GameGoesHere中,然后可以创建链接:

mklink / D“ C:\ Program Files \ Steam \ SteamApps \ common \ Game2”“ D:\ GameGoesHere”

注意,由于“程序文件”的间隔,这次我使用了引号。还要注意,在创建链接之前,虚拟文件​​夹一定不能是真实文件夹。因此,如果要链接的文件夹存在,则必须先将其删除(当然,在复制之前,不要删除!)


9

解答:为什么(以及如何)使用此解决方案


如果您需要回收此空间/将使用情况转移到另一个驱动器上,则有很多不错的选择

您可以安全地重定位到任何新的存储位置,例如...

  • 本地/实时存储
  • 线上储存
  • 近线存储
  • 离线存储

...只是,只要在你的旧位置是NTFS和新的位置:

  1. SMB基于
  2. 符合Windows LANman-如果您使用符号链接/想要重定位到网络服务器/设备上(请参阅下文()
  3. 可以添加/分配给该现有的文件系统/ My Computer使用像的工具:
    • DOS / Windows Shell assign命令
    • Windows“计算机管理”(compmgmt.msc
  4. 可以将其挂载到驱动器号或其他挂载点/目录

因此,从今天开始(2014-05-02),我们正在谈论的是:

  • 另一个活动(挂载)分区
  • 具有实时文件系统(如FAT或NTFS)的光盘(CD,DVD等)
  • 外置硬盘
  • USB驱动器
  • 网络驱动器

    注意:

    如果提示您输入介质,或者收到有关丢失文件/丢失位置的任何错误的消息,则只需确保重新安装/重新插入驱动器/介质(如果它还没有活动分区)。

10次​​中有9次是这种情况:

因此,您会发现这非常简单,并且有一些不错的选择,坦率地说,它们产生的结果大致相同:

  1. 创建到新位置的目录连接:

    • 连接点允许一个目录指向另一个目录。
    • 连接只能在本地存储上使用
    • 它们在文件系统级别被识别为文件系统表(FSTAB)中的别名条目。
      • 因此,它对所有程序(包括操作系统本身)都是透明的。
      • 换句话说,它不被视为仅指向另一个位置(如快捷方式)的文件,因此始终可以正常工作。
    • 连接只能具有对文件的绝对引用。因此,即使您移动了整个内部带有结点的目录结构,而该结构完全完好无损,您也必须重新创建结点。
    • 交界处可以命名为任何名称,即它们不必与所指向的文件夹反映相同的名称。
  2. 创建一个指向新位置的符号链接:

    • 符号链接是指向其他文件系统对象的文件系统对象。
    • 它们类似于路口,并且是重定点。
    • 但是,在极少数情况下,对于某些程序,我发现它们无法识别(Windows特殊文件夹有时就是这种情况)。
    • 但是,它们在以下方面更加灵活:
      • 可以将符号链接创建为绝对或相对引用。
      • 可用于指向SMB / LANman网络位置(Windows服务器,SMB设备等)

程序:


因此,将文件和文件夹移动到新位置,然后:

  1. 选项1(本机):只需发出内置的Windows Vista / 7/8命令和cmd提示符:

    • 创建连接(指向目录的“硬”链接):

      mklink /J <oldpath> <newpath>
      
    • 创建一个符号链接(到目录的“软”链接):

      mklink /D <oldpath> <newpath>
      
  2. Option2(使用工具):一个很棒的替代品是我多年来一直在使用的一种便捷实用工具,称为“链接外壳扩展程序”(LSE)(或Google)。

    只需下载,解压缩并运行(无需安装)

    LSE允许您创建:

    • 符号链接
    • 硬链接
    • 路口
    • 智能副本
    • 智能克隆
    • 智能镜子
    • 聪明的举动
    • 接头
    • 多种来源
    • 坦白说,还有其他我从未使用过的东西

    这是一款出色的免费产品,可以创建Windows资源管理器上下文菜单,该菜单可让您右键单击LINK-TARGET文件夹,然后将其拖动到要创建实际链接的位置。

    当然,您可以将链接重命名为所需的任何内容


8

令人震惊的是,有一个专门用于解决此问题的工具,称为蒸汽推动器,可在Windows 7中使用。这确实是一种伪装成容易的符号链接的巧妙方法。基本上,它将自动移动文件并为您建立符号链接,因此在C:中似乎一切都在Steam期望的位置,但实际上它在其他地方。

我要指出,这仅适用于Windows 7和Vista,因为MS在这些版本的Windows中添加了符号链接


1
您可以使用该平台上链接的Win2K资源工具包实用程序,也可以使用WinXP上的Sysinternals工具连接。虽然与这个问题并不真正相关。
Patrick Seymour

1
@帕特里克:技术小。链接不会创建符号链接,但会创建目录连接。
surfasb

2
我相信,路口只能在同一驱动器内工作。对于较旧的系统,与符号链接最接近的事情是狡猾地将驱动器映射为文件夹,我相信
Journeyman Geek

1
@surfasb到底谁继续使用win2k?:)(非常遗憾,我们做到了。)
Patrick Seymour 2012年

1
@JourneymanGeek:否,连接点在本地卷上有效。而是,硬链接不跨卷。
surfasb 2012年

0

无论源是目标磁盘还是目标磁盘,连接点都可以指向任何NTFS文件夹。

由于WinXP Junctions可以与任何直接连接的NTFS分区一起使用,无论它们位于同一磁盘还是位于不同的Diks上。

因此,具有结点是最佳的解决方案(符号化可能会导致一些问题)。

我经常使用它来执行此操作:

  • 在系统分区(通常是C :)上有一些“虚拟”文件夹,它们指向USB磁盘(SSD,HDD,pendrive,存储卡等)上的分区上的文件夹。

因此,我可以在外部媒体上拥有一些应用程序数据,并且可以在多台PC上拥有一个副本,因此无需进行同步等。当然,只有一台PC可以同时看到它。

连接也可以指向NTFS分区上的一个文件夹,该文件夹已通过veraCrypt等加密。

连接点仅需要三件事:

  • 源分区为NTFS
  • 目标分区是NTFS
  • 两个分区都是本地的(物理连接到PC)...始终不是必需的,有一些工具可让您将FTP当作本地驱动器,并视为一个NTFS,因此可以创建指向那个

我的意思是,结需要看到源和目标在NTFS分区内。

  • 对于XP,请使用SysInternals工具junction,链接为:TechNet Junction下载
  • 对于7到10,请使用mklink带有/j参数的本机工具。

两者都是命令行工具,大多数时候需要管理员权限。

连接是最简单的方法,但不是唯一的方法:

  • 您可以使用安装在不同磁盘上的NTFS文件夹上的NTFS分区
  • 您可以创建一个VHD / VHDX文件(XP和Vista需要一个工具,在磁盘管理上需要7到10个本机文件),在其中创建一个或多个分区,并将它们安装在任何NTFS文件夹中
  • 等等

VHD / VHDX的技巧还使您可以使用动态存储,因此无需担心GiB的大小:

  1. 在动态模式下创建VHD / VHDX(并非分配给虚拟磁盘的所有大小都将是文件的大小),并根据需要进行分配(VHD限制为小于2TiB,VHDX限制为64TiB),但要在NTFS上创建文件,因为FAT32将文件大小限制为小于4GiB。
  2. 将虚拟磁盘初始化为MBR或GPT(取决于您的需要,MBR不支持4个以上的主分区,限制为2TiB少一些,GPT限制为8ZiB,但Windows XP无法看到GPT驱动器),在Wikipedia上查看有关该限制的更多信息:en.wikipedia.org/wiki/GUID_Partition_Table
  3. 根据需要对虚拟磁盘进行分区
  4. 将格式NTFS分配给所需的分区
  5. 如果您需要将数据移动到一个文件夹(您想放在其他位置的那个文件夹)上,以任何字母的形式临时挂载该新分区,请将数据移动到该文件夹​​并卸除它...但是不要从移动文件夹的位置删除该文件夹内容。
  6. 在该文件夹上挂载该分区

$ MFT有一个技巧,就是要尽可能地小(如果创建大的,非常大的NFTS分区来容纳ISO等,这非常重要,每个分区少于1000个大文件):

  • 基本原理是使初始$ MFT大小尽可能小
  • 如果您放置更多文件并且没有足够的空间,$ MFT将会增加,因此请不要担心无法添加文件
  • 这是创建分区的一种正常的本地方法,完全没有风险
  • 没有动机(我可以看到)不以这种方式创建所有NFTS分区

该过程非常简单:

  1. 创建只有8MiB的分区(是兆字节,不是千兆字节,等等),创建普通NTFS的大小会更少。
  2. 扩大到您想要的真实尺寸

这些步骤使一件事:

  • 创建分区时,$ MFT确实很小(因为分区大小仅为8MiB)

如果使用所需的完整大小创建分区,则$ MFT将为分区大小的12.5%(默认情况下为lees);我不知道有什么方法可以减少该百分比,也没有减少创建后的$ MFT大小的方法;触摸某些窗口上的NtfsMFTZoneReservation注册表项,该百分比可能会更大,但是永远不会减少...因此,通过创建仅8MiB的分区,$ MFT的初始大小将非常小。您可以在Microsoft网站上查看如何保留$ MFT空间: NTFS如何为其主文件表(MFT)保留空间

增大NTFS分区的大小不会影响$ MFT的大小...因此,要有一个尽可能少的$ MFT大小的巨大NTFS分区,将分区创建为仅8MiB,并在创建后将其增长到所需的大小。

这对于拥有动态VHD / VHDX非常有用,因为它不会无所用用所有$ MFT空间...我的意思是:

  • 如果您创建一个8MiB的NTFS(不要忘记在快速格式化模式下进行操作)并增长到1.5TiB,则保存该文件的VHD / VHDX文件会更小,更小
  • 如果您直接在VHD / VHDX内创建一个1.5TiB分区,则保存该文件的VHD / VHDX将会更大,更大

在Windows 10 Home 64Bits中完成的测试:

  • 1.8TiB的动态VHD具有一个创建的8MiG NTFS分区(具有快速格式),增长到1.5GiB ... VHD大小为:15.6MiB
  • 1.8TiB的动态VHD具有一个创建的1.5GiB NTFS分区(具有快速格式)... VHD大小为:107MiB

看,它大十倍。我知道谈论的不是上百兆字节...但是,如果您使用大量(其中数千个)VHD / VHDX文件,那么大小可能很重要,如果有一千个这样的文件,那将是接近100GiB。同样,对于VHDX和ZetaBytes的大小,这样的差异确实很大。

注意:我谈论的是1.8TiB的磁盘大小,只是为了确保我可以创建一个精确大小为1.5TiB的相同分区(1572864 MiB)...如果将磁盘大小设置为X,则分区将小于X。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.