> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 管理主機上的 XGameSave 儲存空間 (xbstorage.exe)

> 管理主機上的 XGameSave 儲存空間 (xbstorage.exe)

使用此工具管理主機上的 XGameSave 儲存空間。此工具提供下列子命令與功能。

> [!NOTE]
>
> 如果您需要在 PC 上管理 `XGameSave` 資料，則必須使用
> [xgamesaveutil.exe 命令列工具](https://docs.xbox.com/zh-TW/tools/tools-pc/commandlinetools/gr-xgamesaveutil.md)。

| 命令 | 描述 |
| - | - |
| [reset](#xbstorage_reset) | 刪除主機上指定 PFN 與 SCID 的所有本機資料 |
| [import](#xbstorage_import) | 將指定 XML 檔案中的資料匯入至 XGameSave 儲存空間 |
| [export](#xbstorage_export) | 將 XGameSave 儲存空間中的資料匯出至指定的 XML 檔案 |
| [delete](#xbstorage_delete) | 從 XGameSave 儲存空間刪除資料 |
| [generate](#xbstorage_generate) | 產生虛擬資料並將其儲存至指定的 XML 檔案 |
| [simulate](#xbstorage_simulate) | 模擬儲存空間不足的情況 |

## xbstorage reset

清除本機主機上 XGameSave 儲存空間中的所有本機資料，將其還原為出廠設定。保存在雲端的資料不會被修改，並會在必要時重新下載。

| 欄 1 |
| - |
| **xbstorage reset** \[/force] |

| 選項 | 描述 |
| - | - |
| /force | 確認應重設 `XGameSave` 儲存空間。如果您在不加 **/force** 的情況下執行 **reset**，命令不會重設儲存空間。 |

## xbstorage import

將 *filename* 中指定的資料匯入至 XGameSave 儲存空間。此 XML 檔案包含該資料。如需範例，請參閱本主題中的 [xbstorage generate](#xbstorage_generate)。如需檔案 XML 格式的詳細資訊，請參閱本主題中的[匯入與匯出檔案格式](#xbstorage_fileformat)。

有兩種方式可以指定 `XGameSave` 儲存空間。

* 如果輸入檔案具有正確填入的 **ContextDescription** 區段，則會使用該資訊指定 `XGameSave` 儲存空間。

* 您也可以使用命令列參數部分或完整指定儲存空間。這些參數的優先順序高於輸入檔案中的對應元素。

請參考下列範例。

```
  xbstorage import mydata.xml
  xbstorage import mydata.xml /replace
  xbstorage import mydata.xml /machine /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22
  xbstorage import mydata.xml /msa:user@example.com /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22
  xbstorage import mydata.xml /verbose  
```

匯入之前，系統會嘗試使用執行中應用程式取得 `XGameSave` 儲存空間時所執行的相同邏輯，將指定的 `XGameSave` 儲存空間與雲端同步。

匯入完成後，主機會開始在背景將匯入的資料上傳至雲端。上傳會在雲端鎖定釋放之前完成。此行為與 PC 工具 (`xgamesaveutil`) 不同，後者只會將資料寫入本機儲存空間，不會觸發上傳至雲端。如需詳細資訊，請參閱[在 PC 上管理 XGameSave 資料 (xgamesaveutil.exe)](https://docs.xbox.com/zh-TW/tools/tools-pc/commandlinetools/gr-xgamesaveutil.md)。

如果具有相同主要服務設定識別碼 (SCID) 的應用程式正在執行，此作業可能會造成競爭情況，並使 `XGameSave` 儲存空間的內容處於不確定的狀態。

如果未指定 **/replace**，則會在寫入輸入檔案中指定的 Blob 之前，先清除輸入檔案中指定的容器。`XGameSave` 儲存空間中未在輸入檔案中指定的容器不會受到影響。

| 欄 1 |
| - |
| \*\*xbstorage import \*\**file-name* \[/scid:*SCID*] \[/machine] \[/msa:*account*] \[/replace] \[/verbose] |

| 選項 | 描述 |
| - | - |
| *file-name* | 包含要匯入之資料的 XML 檔案。 |
| /scid:*SCID* | SCID。 |
| /machine | 每部電腦的 XGameSave 儲存空間。此選項不能與 **/msa** 選項同時使用。 |
| /msa:*account* | 用於每位使用者 XGameSave 儲存空間的帳戶。使用者必須已登入主機才能使用該空間。此選項不能與 **/machine** 選項同時使用。 |
| /replace | 匯入之前，刪除指定 `XGameSave` 儲存空間中的所有容器。 |
| /verbose | 顯示匯入作業的狀態。 |

## xbstorage export

將 `XGameSave` 儲存空間中的資料匯出至 **outfile** 指定的檔案。此 XML 檔案包含匯出的資料。如需範例，請參閱本文中的 [xbstorage generate](#xbstorage_generate)。如需 XML 格式的詳細資訊，請參閱[匯入與匯出檔案格式](#xbstorage_fileformat)。

有兩種方式可以指定 `XGameSave` 儲存空間。

* 如果使用了 **/context** 參數，且 \<infile> 所指定的檔案具有正確填入的 **ContextDescription** 區段，則會使用該檔案指定 `XGameSave` 儲存空間。

* 您也可以使用命令列參數部分或完整指定儲存空間。這些參數的優先順序高於 **/context** 所指定的對應元素。

請參考下列範例。

```
  xbstorage export exporteddata.xml /context:space.xml
  xbstorage export exporteddata.xml /machine /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22
  xbstorage export exporteddata.xml /msa:user@example.com /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22
  xbstorage export exporteddata.xml /context:space.xml /verbose  
```

匯出之前，系統會嘗試使用執行中應用程式取得 `XGameSave` 儲存空間時所執行的相同邏輯，將指定的 `XGameSave` 儲存空間與雲端同步。

如果具有相同主要 SCID 的應用程式正在執行，此作業可能會造成競爭情況，並使 `XGameSave` 儲存空間的內容處於不確定的狀態。

| 欄 1 |
| - |
| \*\*xbstorage export \*\**outfile* \[/context:*input-file*] \[/scid:*SCID*] \[/machine] \[/msa:*account*] \[/verbose] |

| 選項 | 描述 |
| - | - |
| *outfile* | 要將資料匯出至的 XML 檔案。 |
| /context:*input-file* | 要從中讀取空間資訊的輸入檔案。 |
| /scid:*SCID* | SCID。 |
| /machine | 每部電腦的 XGameSave 儲存空間。此選項不能與 **/msa** 選項同時使用。 |
| /msa:*account* | 用於每位使用者 XGameSave 儲存空間的帳戶。使用者必須已登入主機才能使用該空間。此選項不能與 **/machine** 選項同時使用。 |
| /verbose | 顯示 **export** 作業的狀態。 |

## xbstorage delete

從 `XGameSave` 儲存空間刪除所有資料。有兩種方式可以指定 `XGameSave` 儲存空間。

* 如果您使用 **/context** 參數，且 \<input-file> 所指定的檔案具有正確填入的 **ContextDescription** 區段，則會使用該檔案指定 `XGameSave` 儲存空間。

* 您也可以使用命令列參數部分或完整指定儲存空間。這些參數的優先順序高於 **/context** 所指定的對應元素。

請參考下列範例。

```
  xbstorage delete /context:space.xml
  xbstorage delete /machine /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22
  xbstorage delete /msa:user@example.com /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22
  xbstorage delete /context:space.xml /verbose  
```

刪除之前，系統會嘗試使用執行中應用程式取得 `XGameSave` 儲存空間時所執行的相同邏輯，將指定的 `XGameSave` 儲存空間與雲端同步。

如果具有相同主要 SCID 的應用程式正在執行，此作業可能會造成競爭情況，並使 `XGameSave` 儲存空間的內容處於不確定的狀態。

| 欄 1 |
| - |
| **xbstorage delete** \[/context:*input-file*] \[/scid:*SCID*] \[/machine] \[/msa:*account*] \[/verbose] |

| 選項 | 描述 |
| - | - |
| /context:*input-file* | 要從中讀取空間資訊的輸入檔案。 |
| /scid:*SCID* | SCID。 |
| /machine | 每部電腦的 XGameSave 儲存空間。此選項不能與 **/msa** 選項同時使用。 |
| /msa:*account* | 用於每位使用者 XGameSave 儲存空間的帳戶。使用者必須已登入主機才能使用該空間。此選項不能與 **/machine** 選項同時使用。 |
| /verbose | 顯示 **delete** 作業的狀態。 |

## xbstorage generate

產生虛擬資料並將其儲存至 \<file-name> 指定的檔案。如需 XML 格式的詳細資訊，請參閱[匯入與匯出檔案格式](#xbstorage_fileformat)。

SCID 會設定為 00000000-0000-0000-0000-000000000000，且帳戶會設定為每部電腦的 `XGameSave` 儲存空間。若要變更這些值，請在產生後直接編輯檔案。

請參考下列範例。

```
  xbstorage generate dummydata.xml
  xbstorage generate dummydata.xml /containers:4
  xbstorage generate dummydata.xml /blobs:10
  xbstorage generate dummydata.xml /containers:4 /blobs:10
  xbstorage generate dummydata.xml /containers:4 /blobs:10 /blobsize:512  
```

位元組資料是簡單的遞增序列。例如，5 位元組的 Blob 會有下列位元組：00 01 02 03 04。

若要指定每位使用者的 `XGameSave` 儲存空間，請依下列範例所示變更 XML 檔案中的 **Account** 節點。

```
  
   <Account msa="user@example.com"/>  
```

| 欄 1 |
| - |
| \*\*xbstorage generate \*\**file-name* \[/containers:*n*] \[/blobs:*n*] \[/blobsize:*n*] |

| 選項 | 描述 |
| - | - |
| *file-name* | 要將資料寫入的 XML 檔案。 |
| /containers:*n* | 要產生的容器數目。*n* 的預設值為 2。 |
| /blobs:*n* | 要產生的 Blob 數目。*n* 的預設值為 3。 |
| /blobsize:*n* | 每個 Blob 的位元組數。*n* 的預設值為 1024。 |

## xbstorage simulate

為 `XGameSave` 儲存服務模擬本機儲存空間不足的情況。

| 欄 1 |
| - |
| **xbstorage simulate** \[/reserveremainingspace] \[/forceoutoflocalstorage] \[/stop] \[/verbose] |

| 選項 | 描述 |
| - | - |
| /reserveremainingspace | 保留 XGameSave 儲存空間中所有剩餘的空間。從 XGameSave 儲存空間刪除內容會釋出一些可用空間。 |
| /forceoutoflocalstorage | 模擬沒有剩餘可用空間的 XGameSave 儲存服務。從 XGameSave 儲存空間刪除內容並不會改變 XGameSave 儲存服務回報記憶體不足的狀態。 |
| /stop | 停止所有模擬。 |
| /verbose | 顯示 **simulate** 作業的狀態。 |

## 通用選項

| 欄 1 |
| - |
| **xbstorage** \[/?] \[/X\*:address\* \[*+accesskey*] ] |

| 選項 | 描述 |
| - | - |
| /? | 顯示 xbstorage.exe 的說明。 |
| /X\*:address\* \[*+accesskey*] | 使用此選項可指定目標主機的主機名稱或位址 (在主機上顯示為 **Tools IP**)，而不需變更預設主機。如需為主機設定主機名稱的詳細資訊，請參閱[為主機 IP 位址設定主機名稱](https://docs.xbox.com/zh-TW/home/setup-install/dev-kit-settings/setting-a-hostname.md)。如果您不使用此選項，則會使用預設主機 (先前由[連線 (xbconnect.exe)](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbconnect.md) 設定)。使用 *accesskey* 字串，只為擁有存取金鑰的人員提供主機存取權。使用 **xbconfig** **accesskey=*your-key*** 命令設定存取金鑰，然後重新啟動主機，讓存取金鑰生效。若要存取已設定存取金鑰的主機，請在主機的 IP 位址或主機名稱後面加上加號 (+) 與存取金鑰。如果在使用 [xbconnect](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbconnect.md) 設定預設主機時提供了存取金鑰，該存取金鑰會儲存為預設主機位址的一部分。如需存取金鑰的詳細資訊，請參閱 [xbconfig accesskey](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbconfig.md)。 |

## 匯入與匯出檔案格式

與 **import**、**export** 及 **generate** 命令一起使用的 XML 檔案，其格式如下列範例所示。

```xml theme={null}
  <?xml version="1.0" encoding="UTF-8"?> 
  <XbConnectedStorageSpace> 
    <ContextDescription> 
      <Account machine="true" /> 
      <Title scid="00000000-0000-0000-0000-000000000000" /> 
    </ContextDescription> 
    <Data> 
      <Containers> 
        <Container name="Container1"> 
          <Blobs> 
            <Blob name="Blob1"> 
              <![CDATA[... ] ]> 
            </Blob> 
            ... 
            <Blob name="BlobN"> 
              <![CDATA[... ] ]> 
            </Blob> 
          </Blobs>
        </Container> 
        ... 
        <Container name="ContainerN"> 
        ... 
        </Container> 
      </Containers> 
    </Data> 
  </XbConnectedStorageSpace>  
```

此 XML 檔案中的資料格式與平台上的格式並不相同。格式未來可能會變更，因此應將這些檔案視為中繼或公用程式格式，而非封存格式。

**ContextDescription** 節點是選擇性的。如果您要為使用者建立 `XGameSave` 儲存空間，可以使用 `<Account msa="user@example.com"/>` 取代 `<Account machine="true"/>`。否則，您可以在匯入時於命令列上指定內容。

Blob 與容器應使用產生檔案所針對之遊戲或應用程式為其指定的對應名稱。

每個 Blob 的內容應為以 **CDATA** 標記包裝的字串，此字串是透過以 **CRYPT\_STRING\_BASE64** 旗標呼叫 **CryptBinaryToStringW**，並將該 Blob 的資料以原始位元組陣列提供而產生的。相反地，可以呼叫 **CryptStringToBinary** 並提供先前加密的字串，將 Blob 資料轉換回來。如需使用這兩個函式的範例，請參閱 [CryptBinaryToString returns invalid bytes](https://social.msdn.microsoft.com/Forums/vstudio/9acac904-c226-4ae0-9b7f-261993b9fda2/cryptbinarytostring-returns-invalid-bytes?forum=vcgeneral)。

## 另請參閱

[命令列工具](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/commandlinetools.md)

[XTF 傳輸錯誤](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xtf-transport-errors.md)

[連線 (xbconnect.exe)](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbconnect.md)

[在 PC 上管理 XGameSave 資料 (xgamesaveutil.exe)](https://docs.xbox.com/zh-TW/tools/tools-pc/commandlinetools/gr-xgamesaveutil.md)


## Related topics

- [管理 PC 上的 XGameSave 資料 (xgamesaveutil.exe)](https://docs.xbox.com/zh-TW/tools/tools-pc/commandlinetools/gr-xgamesaveutil.md)
- [主機開發的命令列工具](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/commandlinetools.md)
- [Game Saves 工具](https://docs.xbox.com/zh-TW/build/core-features/common/game-save/game-saves-tools.md)
- [Xbox 主機上的本機儲存空間](https://docs.xbox.com/zh-TW/build/console-features/storage/local-storage.md)
- [儲存空間](https://docs.xbox.com/zh-TW/build/console-features/storage/index.md)
