如何在 Linux 和 Windows 之间共享 Steam 的游戏文件

假如你决心成为一名 Linux 平台上的玩家,并且在 Steam 上拥有同时支持 Linux 和 Windows 平台的游戏,或者基于同样的原因,拥有双重启动的系统,则你可以考虑看看这篇文章。

我们中的许多玩家都拥有双重启动的 Linux 和 Windows。有些人只拥有 Linux 系统,但同时拥有当前还没有被 Linux 平台上的 Steam 支持的游戏。所以我们同时保留这两个系统以便我们可以在忽略平台的前提下玩我们喜爱的游戏。

幸运的是 Linux 游戏社区应运而生,越来越多在 Windows 平台上受欢迎的 Steam 游戏也发布在 Linux 平台上的 Steam 中。

我们中的许多人喜欢备份我们的 Steam 游戏,使得我们不再苦苦等待游戏下载完成。这些游戏很大程度上是 Windows 平台下的 Steam 游戏。

现在,很多游戏也已经登陆了 Linux 平台上的 Steam,例如奇异人生Life is Strange、古墓丽影 2013Tomb Raider 2013、中土世界:魔多阴影Shadow of Mordor、幽浮:未知敌人XCOM: Enemy Unknown、幽浮 2、与日赛跑Race The Sun、公路救赎Road Redemption、燥热SUPERHOT等等,并且这份名单一直在增长。甚至还有杀出重围:人类分裂Deus Ex: Mankind Divided和疯狂的麦克斯Mad Max!!!在一些游戏的 Windows 版发布之后,现在我们不必再等候多年,而只需等待几月左右,便可以听到类似的消息了,这可是大新闻啊!

下面的实验性方法将向你展示如何使用你现存的任何平台上游戏文件来在 Steam 上恢复游戏的大部分数据。对于某些游戏,它们在两个平台下有很多相似的文件,利用下面例子中的方法,将减少你在享受这些游戏之前的漫长的等待时间。

在下面的方法中,我们将一步一步地尝试利用 Steam 自身的备份与恢复功能或者以手工的方式来达到我们的目的。当涉及到这些方法的时候,我们也将向你展示这两个平台上游戏文件的相同和不同之处,以便你也可以探索并做出你自己的调整。

下面的方法中,我们将使用 Ubuntu 14.04 LTS 和 Windows 10 来执行备份与恢复 Steam 的测试。

1、Steam 自身的备份与恢复

当我们尝试使用 Windows 平台上 Steam 中《燥热SUPERHOT》这个游戏的备份(这些加密文件是 .csd 格式)时,Linux 平台上的 Steam 不能识别这些文件,并重新开始下载整个游戏了!甚至在做了验证性检验后,仍然有很大一部分文件不能被 Steam 识别出来。我们在 Windows 上也做了类似的操作,但结果是一样的!

现在到了我们用某些手工的方法来共享 Windows 和 Linux 上的 Steam 游戏的时刻了!

2、手工方法

首先,让我们先看看 Linux 下这些游戏文件所处的位置(用户目录在 /home 中):

这是 Linux 平台上 Steam 游戏的默认安装位置。 .local 和 .steam 目录默认情况下是不可见的,你必须将它们显现出来。我们将推荐使用一个自定义的 Steam 安装位置以便更容易地处理这些文件。这里SUPERHOT.x86_64 是 Linux 下原生的可执行文件,与 Windows 中的 .exe 文件类似。

下图展示的位置包含我们需要的大部分文件(在 Windows 和 Linux 平台上相同):

下面我们来看看这些 .acf 格式的文件。appmanifest_322500.acf 便是那个我们需要的文件。编辑并调整这个文件有助于 Steam 识别在 common 这个目录下现存的非加密的原始文件备份:

为了确认这个文件是一样的,用编辑器打开这个文件并检查它。我们越多地了解这个文件越好。这个链接是来自 Steam 论坛上的一个帖子,它展示了这个文件的主要意义。它类似于下面这样:


  1. “AppState”
  2. {
  3. “appid” “322500”
  4. “Universe” “1”
  5. “name” “SUPERHOT”
  6. “StateFlags” “4”
  7. “installdir” “SUPERHOT”
  8. “LastUpdated” “1474466631”
  9. “UpdateResult” “0”
  10. “SizeOnDisk” “4156100762”
  11. “buildid” “1234395”
  12. “LastOwner” “<SteamID>”
  13. “BytesToDownload” “909578688”
  14. “BytesDownloaded” “909578688”
  15. “AutoUpdateBehavior” “0”
  16. “UserConfig”
  17. {
  18. “Language” “english”
  19. }
  20. “MountedDepots”
  21. {
  22. “322503” “1943012315434556837”
  23. }
  24. }

在 Linux 平台上卸载游戏后我们再进行测试。现在让我们看看在 Windows 10 上相同的游戏安装目录里包含哪些内容:

我们复制了 SUPERHOT 目录和 .acf 格式的清单文件(这个文件在 Windows 的 Steam 上格式是一样的)。在复制 .acf 文件和游戏目录到 Linux 中 Steam 它们对应的位置时,我们需要确保 Steam 没有在后台运行。

在转移完成之后,我们运行 Steam 并看到了这个:

所以下图显示只需要有 235.5 MB 的文件需要下载,而不是整个 867.4 MB,这意味着超过 70% 的文件已经被 Steam 识别了:) !相对来说,节省了一笔大量的时间开销。当然不同的游戏可能有所不同,但对于那些网速居于平均水平或以下的玩家来说,这种方法绝对值得一试,尤其是考虑到当前那些 40-50 GB 大小的重量级游戏。

我们还进行了其他几种尝试:

  • 我们尝试使用 Linux 下原有的清单文件(.acf)和来自 Windows 的手工备份文件,但结果是 Steam 重新开始下载游戏。
  • 我们看到当我们将 SUPERHOT_Data 这个目录中的 SH_Data 更换为 Windows 中的对应目录时,同上面的一样,也重新开始下载整个游戏。

理解清单目录的一个尝试

清单目录绝对可以被进一步地被编辑和修改以此来改善上面的结果,使得 Steam 检测出尽可能多的文件。

在 Github 上有一个项目,包含一个可以生成这些清单文件的 python 脚本。任何 Steam 游戏的 AppID 可以从SteamDB 上获取到。知晓了游戏的 ID 号后,你便可以用你喜爱的编辑器以下面的格式创建你自己的清单文件 appmanifest_<AppID>.acf。在上面手工方法中,我们可以看到 SUPERHOT 这个游戏的 AppID 是 322500,所以对应的清单文件名应该是 appmanifest_322500.acf

下面以我们知晓的信息来尝试对该文件进行一些解释:


  1. “AppState” // 应用(游戏)的状态
  2. “appid” “322500” // 游戏的 AppID
  3. “Universe” “1”
  4. “name” “SUPERHOT” // 游戏的名称
  5. “StateFlags” “4”
  6. “installdir” “SUPERHOT” // 安装目录的名称
  7. “LastUpdated” “1474466631”
  8. “UpdateResult” “0”
  9. “SizeOnDisk” “4156100762”
  10. “buildid” “1234395”
  11. “LastOwner” “<SteamID>” // 唯一的帐号拥有者的 <SteamID>
  12. “BytesToDownload” “909578688” // 将这个数字除以 1073741824(1024 x 1024 x 1024) 便可以计算出还需要下载的数据大小,以 GB 记。
  13. “BytesDownloaded” “909578688” // 已下载数据的大小, 以 Bytes 记。
  14. “AutoUpdateBehavior” “0” // 当这个设为 0 时,该游戏将自动升级。
  15. “UserConfig” // 用户的配置信息
  16. {
  17. “Language” “english”
  18. }
  19. “MountedDepots” // 这个部分大多与游戏的 DLC 相关。
  20. {
  21. “322503” “1943012315434556837”
  22. }
  23. }

通过计算下载的数据的大小,你可以将它与 Steam 展现的信息进行比较并进行更多的调整。

原文发布时间为:2017-12-10

本文来自合作伙伴“Linux中国”

时间: 2017-06-01
Tags: windows, linux

如何在 Linux 和 Windows 之间共享 Steam 的游戏文件的相关文章

vmware虚拟机中linux与windows主机共享目录的文件不同步

问题描述 vmware虚拟机中linux与windows主机共享目录的文件不同步 rt,我虚拟机中装了一个 ubuntu12.04,见了共享目录,然后也看到共享的文件了,但是,我再windows下改了文件内容以后,去虚拟机打开,发现内容还是原来的,或者就直接出错,最后一部分丢了,哪位大神给讲一下这是什么问题,有什么好的解决办法可以让文件及时同步没,或者有没别的虚拟机可以搞定这个,谢谢谢谢谢谢谢谢谢...... 解决方案 在虚拟机上安装sambe服务器,"sudo apt-get install

如何在Linux上找出并删除重复的文件:FSlint

如何在Linux上找出并删除重复的文件:FSlint 大家好,今天我们会学习如何在Linux PC或者服务器上找出和删除重复文件.这里有一款工具你可以工具自己的需要使用. 无论你是否正在使用Linux桌面或者服务器,有一些很好的工具能够帮你扫描系统中的重复文件并删除它们来释放空间.图形界面和命令行界面的都有.重复文件是磁盘空间不必要的浪费.毕竟,如果你的确需要在不同的位置享有同一个文件,你可以使用软链接或者硬链接,这样就可以在磁盘的一个地方存储数据了. FSlint FSlint 在不同的Lin

如何在Linux中删除超大的(100-200GB)文件

通常,要在 Linux 终端删除一个文件,我们使用 rm 命令(删除文件).shred 命令(安全删除文件).wipe 命令(安全擦除文件)或者 secure-deletion 工具包(一个安全文件删除工具集合). 我们可以使用上述任意的工具来处理相对较小的文件.如果我们想要删除超大的文件/文件夹,比如大概 100-200GB,在删除文件(I/O 调度)所花费的时间以及 RAM 占用量方面,就没有你想的那么简单. 在本教程中,我们会解释如何在 Linux 中有效率并可靠地删除大文件/文件夹. 建

如何在Linux中创建一个共享目录

作为系统管理员,你可能有一个特定目录,你希望为 Linux 服务器上的每个用户授予读/写访问权限.在本指南中,我们将回顾如何在 Linux 中对特定目录(共享目录)上的所有用户启用写访问. 这要求设置适当的访问权限,而最有效.可靠的方法是为所有要共享或对特定目录的写访问权的用户分配一个公共组. 如果你系统中还没有这个目录和公众组,用下面的命令创建: $ sudo mkdir -p /var/www/reports/  $ sudo groupadd project   接着将对目录 /var/w

如何在 Linux 中创建一个共享目录

作为系统管理员,你可能有一个特定目录,你希望为 Linux 服务器上的每个用户授予读/写访问权限.在本指南中,我们将回顾如何在 Linux 中对特定目录(共享目录)上的所有用户启用写访问. 这要求设置适当的访问权限,而最有效.可靠的方法是为所有要共享或对特定目录的写访问权的用户分配一个公共组. 如果你系统中还没有这个目录和公众组,用下面的命令创建: $ sudo mkdir -p /var/www/reports/ $ sudo groupadd project 接着将对目录 /var/www/

如何配置Mac OS X 与 Windows之间共享网络

  在Mac上安装Parallels Desktop后,默认情况下,Windows 已设定为与 Mac OS X 共享网络设置.Windows 程序可以通过使用 Mac 的 IP 地址访问本地网络中的其它计算机和互联网.Windows 本身在网络中没有 IP 地址. 在大多数情况下,您无需调整网络设置.如果您的 Mac 已设置好网络或互联网的连接,Windows 程序将可访问相同的网络和互联网. 在下列情况中您可能希望使用共享网络模式: • 您的 Mac 是通过调制解调器或其它非以太网设备访问互

如何在 Linux 中使用 sFTP 上传或下载文件与文件夹

sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似. 然而,sFTP 比 FTP 更安全:它通过加密 SSH 传输处理所有操作. 它可以配置使用几个有用的 SSH 功能,如公钥认证和压缩. 它连接并登录到指定的远程机器,然后切换到交互式命令模式,在该模式下用户可以执行各种命令. 在本文中,我们将向你展示如何使用 sFTP 上传/下载整个目录(包括其子目录和子文件). 如何在 Linux 中使用 sFTP 传输文件/文件夹 默认情况下,SFTP 协

Linux与windows之间-文件传输工具RZSZ

RZSZ简介 一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆 linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地 : 与ssh有关的两个命令可以提供很方便的操作: sz:将选定的文件发送(send)到本地 机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器 rz, sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具,windows端需要支持ZMode

如何在linux主机和windows主机之间传输文件

首先下载pytty,解压开发现里面有plink.exe pscp.exe psftp.exe putty.exe puttygen.exe puttytel.exe等可执行文件,如果只是想要链接主机做一些操作那么使用putty.exe就可一,具体使用可以参见上面给出的链接,要想要上传下载文件,那么需要使用pscp.exe这个文件. 下面讲解使用pscp命令在Linux和Windows之间传输文件. 通过命令行进入pscp.exe所在的文件夹,直接输入pscp会看到如下提示: PS:推荐像我一样将