模擬器存檔遺失:你還有辦法找回進度嗎?
瀏覽器模擬器的存檔存放於 IndexedDB,而非你的硬碟。了解為什麼模擬器存檔遺失的情況往往無法挽回,以及如何事先預防。
作者: RGS Editorial · 發布: · 更新:
由 RGS Editorial 於 最後審閱
瀏覽器模擬器的存檔究竟是怎麼運作的
如果你的模擬器存檔遺失發生在瀏覽器模擬器中,簡短的答案是:資料幾乎不可能復原。瀏覽器模擬器將存檔資料儲存於 IndexedDB——一種內建於瀏覽器的結構化鍵值資料庫——而非以檔案形式存放在你的硬碟上。一旦該儲存空間被清除,或存檔從未成功寫入,資料便永久消失。
IndexedDB 屬於 Web Storage 規格的一部分,並依來源(協定 + 網域 + 連接埠)及瀏覽器設定檔進行沙盒隔離。這意味著在 Chrome 中於 https://retrogamespace.com 建立的存檔,與 Firefox、Safari,甚至同一台機器上不同 Chrome 設定檔中的存檔完全互不相通。瀏覽器本身不提供任何供使用者瀏覽或匯出此資料的內建介面;一切皆由在分頁中運行的網頁應用程式全權管理。
從模擬器的角度來看,寫入存檔的過程相當直接:當被模擬的遊戲將其 SRAM (電池備援存檔記憶體)清空並寫出時,模擬器會將該記憶體區域序列化後提交至 IndexedDB。頁面載入時,模擬器再將其讀回。只要 IndexedDB 保有該筆記錄,一切運作正常——然而有幾種常見原因會導致記錄無法留存。
存檔消失的常見原因
瀏覽器存檔消失的事件背後有四種截然不同的原因,而每一種原因能夠復原的可能性各不相同。搞清楚是哪一種情況找上你,才能決定下一步該怎麼做。
- 清除瀏覽資料:Chrome、Firefox、Edge 以及 Safari 都提供刪除「網站資料」或「Cookie 及網站資料」的選項。IndexedDB 被歸類為網站資料。若你選擇了該選項——即便目標是 Cookie——所有來源的每一個 IndexedDB 資料庫都會同時被清空。這是桌面端最常見的原因,且不會顯示任何警告。
- 無痕或私密瀏覽模式:私密視窗關閉時,瀏覽器明確規定不會將 IndexedDB 資料持久化至硬碟。該瀏覽階段中寫入的任何存檔僅存在於 RAM 中,視窗一關閉便立即被丟棄。這類資料沒有任何可復原的副本。
- iOS Safari 儲存配額強制清除:Apple 的 WebKit 引擎在 iOS 上,於特定條件下對網站儲存空間實施 7 天無活動規則,且當裝置儲存空間嚴重不足時,作業系統可能強制清除網站資料。iPhone 及 iPad 上的 Safari 是最常被提及、導致模擬器進度莫名消失的環境。
- 切換至不同的瀏覽器設定檔或瀏覽器:由於 IndexedDB 依來源及設定檔劃分範圍,從工作用的 Chrome 設定檔切換至個人 Chrome 設定檔,或從 Chrome 切換至 Firefox,你面對的將是一個完全空白的資料庫。你的舊存檔依然存在——只是留在另一個設定檔中——切換回去即可輕鬆找回。
還有第五種值得一提的邊緣案例:部分標榜「隱私保護」或「防追蹤」功能的瀏覽器擴充功能,會依排程定期清除網站儲存空間。若你無法確認上述四種原因中的任何一種,請檢查已安裝的擴充功能是否具有清除儲存空間的行為。
哪些情況下真的有可能復原
若要嘗試復原模擬器存檔資料,以下條件至少須有一項成立。這些條件並非普遍適用,因此在投入時間之前,請仔細閱讀每一條。
- 你在遺失前曾匯出 .srm 檔案:若你先前曾使用模擬器的匯出或下載功能,將一個 .srm(SRAM 傾印)檔案儲存至你的裝置,該檔案仍留在你的硬碟上。透過模擬器的匯入功能重新匯入,即可將進度還原至當時匯出時的狀態。
- 你的存檔在另一個瀏覽器設定檔中:開啟瀏覽器的設定檔切換功能,尋找其他設定檔,並在每個設定檔中前往模擬器網站。若存檔資料出現,請立即將其匯出為 .srm 檔案,再重新匯入至你的主要設定檔。
- 你有雲端或同步備份:若你所使用的模擬器與雲端同步服務整合,請在該服務的網頁介面或應用程式中查找是否有儲存的存檔狀態或 SRAM 檔案。RGS 的雲端同步功能預計於未來版本推出——目前的上線狀況請參閱網站部落格。
- 你使用的是 Android Chrome 且尚未重新啟動裝置:Android 上的 Chrome 在將 IndexedDB 寫入資料提交至硬碟之前,會先在記憶體中進行快取。在崩潰發生至裝置重新啟動之間的短暫時間窗口內,重新開啟頁面所觸發的強制同步,或許能夠復原上一次的工作階段。這屬於不穩定的邊緣案例,並非可靠的復原程序。
若未使用開發者工具,便無法直接從瀏覽器內部提取 IndexedDB 資料;即便使用了工具,也必須確認資料庫尚未被刪除。在 Chrome 中,您可以開啟 DevTools(F12),前往「Application → Storage → IndexedDB」,確認該網站的資料庫是否仍然存在。若顯示有資料項目,正確的提取方式是使用模擬器本身的匯入/匯出工具——請勿嘗試直接編輯 Chrome 在內部使用的原始 LevelDB 檔案,因為這樣做有損毀其他瀏覽器資料的風險。
無法復原的情況——以及原因
關於 IndexedDB 存檔復原,有一個殘酷的現實:一旦資料庫記錄被刪除,便不存在任何資源回收桶、陰影備份,也沒有伺服器端的備份可以依賴。不同於您從桌面刪除的檔案,IndexedDB 資料並不會以任何使用者可存取的方式,經過作業系統的檔案刪除流程。
具體而言,以下幾種情況將導致無法復原:在瀏覽器中使用了「清除網站資料」或類似選項;該連線工作階段是在私密/無痕視窗中進行的;iOS Safari 因閒置或儲存空間不足而自動清除了資料;或某個隱私擴充套件依排程刪除了儲存內容。在上述四種情況中,底層的位元組資料要麼已遭覆寫,要麼從未被寫入持久性儲存空間。
鑑識磁碟復原工具(例如用於還原已刪除檔案的工具)在此情境下毫無用武之地。Chrome、Firefox 和 Safari 均以緊湊的二進位格式儲存 IndexedDB(Chrome 使用的是 LevelDB),且這些格式在瀏覽器正常運作期間會持續被改寫。當您發現存檔遺失時,曾經存放該資料的實體磁區幾乎可以確定已被覆寫。
我們不會推薦網路上流傳的第三方「IndexedDB 復原」工具。我們所檢視過的此類工具,不是掃描與遊戲存檔毫無關聯的通用檔案簽章,就是要求您將瀏覽器內部資料交給一個閉源應用程式處理。這兩種做法對本使用情境均不可靠,且都存在實際風險。
防止未來存檔遺失
防範瀏覽器存檔消失事件的唯一可靠方法,就是在 IndexedDB 以外保留一份存檔資料的副本。這意味著您應定期匯出 .srm 檔案——最好在每次有意義的遊玩結束後——並將其存放在不受瀏覽器資料清除影響的地方。
- 定期匯出 .srm 檔案:每次遊玩結束後,使用模擬器的匯出功能,將產生的檔案儲存至您硬碟上的資料夾或雲端儲存空間。一個 .srm 檔案體積很小(以搭載標準 SRAM 的超級任天堂遊戲為例,通常僅有 8 KB),下載只需數秒。
- 至少保留兩份附有日期的副本:以日期作為後綴來命名檔案(例如 zelda-lttp-2024-11-03.srm),如此一來,若存檔損毀,便能輕鬆回溯至較早的存檔點。有一份最新備份勝過沒有;有兩份附日期的備份,即使最近一次匯出出現問題,您仍有一個可用的復原點。
- 切勿在無痕模式下進行您珍視的遊戲:無痕模式適合用於測試或一次性的遊玩工作階段,不適合進行動輒數小時的角色扮演遊戲冒險——因為當視窗關閉時,瀏覽器將無條件清除所有儲存資料。
- 在 iOS 上,請至少每 7 天造訪一次模擬器網站:Apple 的 WebKit 儲存清除計時器會在每次造訪時重置。定期活動可以降低——但無法完全消除——iOS 清除您資料的風險。
- 留意 RGS 的雲端同步功能:雲端同步功能推出後,將允許存檔儲存於伺服器端,並跨裝置同步。在該功能上線之前,.srm 匯出仍是本網站唯一的跨裝置備份方法。請關注 RGS 部落格以獲取發布公告。
- 避免使用會清除網站資料的瀏覽器擴充套件:若您使用了隱私擴充套件,請檢查其設定中是否有自動清除儲存空間的排程,並停用該功能,或將 retrogamespace.com 加入其允許清單。
針對 iOS 使用者有一點特別說明:自 iOS 17 起,您可以將網站以漸進式網頁應用程式(Progressive Web App)的形式加入主畫面。在主畫面 PWA 中建立的儲存空間,會存放在與標準瀏覽器分開的獨立配額容器中,不受 Safari 分頁所適用的 7 天清除規則約束。若您經常在 iPhone 或 iPad 上遊玩,將網站加入主畫面是一項有實質意義的架構改善,但並非完整的解決方案。您仍應持續匯出 .srm 檔案,因為 PWA 容器仍可能被手動清除,或在應用程式從主畫面移除時遭到清除。
常見問題
- 為什麼清除瀏覽紀錄會同時刪除我的模擬器存檔?
- 瀏覽器將 IndexedDB 視為「網站資料」的一種類別,與 Cookie 和快取檔案並列。當您選擇任何刪除網站資料或 Cookie 與網站資料的選項時,IndexedDB 資料庫便會被一併清除。瀏覽器在刪除前不會逐一顯示各資料庫的確認提示,因此這種損失往往令人措手不及。
- 關閉無痕視窗後遺失的模擬器存檔,能夠復原嗎?
- 不能。瀏覽器在私密瀏覽視窗關閉時,會明確地清除所有儲存資料——包括 IndexedDB。這些資料僅存在於 RAM 中,從未被寫入磁碟,因此裝置上任何地方都不存在可供復原的副本。
- 有任何第三方工具能夠復原 IndexedDB 存檔嗎?
- 對於遊戲存檔資料而言,這並不可靠。Chrome 以 LevelDB 檔案格式儲存 IndexedDB,在正常使用過程中會持續進行壓縮與重寫,因此當你發現存檔遺失時,底層資料通常早已被覆蓋。我們不建議針對此情況使用閉源的資料救援工具。
- 為什麼我在 iPhone 上的瀏覽器存檔一直消失?
- iOS Safari 會執行儲存空間清除策略,在網站閒置約 7 天後可能自動清除網站資料;當裝置儲存空間不足時,作業系統也可能主動清除網站的儲存內容。若將模擬器網站以 PWA 的形式加入 iOS 主畫面,其儲存空間將置於獨立的容器中,適用不同的清除規則,雖可降低風險,但無法完全消除。匯出 .srm 檔案仍是最安全的備份方式。
- 我的存檔在另一個瀏覽器裡還在——該怎麼把它們移過來?
- 在存檔仍然存在的瀏覽器或設定檔中開啟模擬器,使用匯出功能為每款遊戲下載對應的 .srm 檔案,接著在你主要使用的瀏覽器或設定檔中開啟模擬器,並使用匯入功能載入這些檔案。存檔便會寫入該設定檔的 IndexedDB 中。
- 什麼是 .srm 檔案?匯出它為什麼能保護我的存檔?
- .srm 檔案是遊戲 SRAM 的原始二進位傾印——也就是卡匣用來儲存存檔資料的電池支援記憶體。匯出 .srm 檔案會將該記憶體的副本儲存到你本機的檔案系統中,獨立於 IndexedDB 之外。由於它是以普通檔案的形式存在,而非存放在瀏覽器儲存空間內,因此不受瀏覽器清除資料、無痕模式或 iOS 清除機制的影響。