Visual Studio 代码备份机制

Visual Studio Code backup mechanics

Visual Studio代码如何在崩溃后恢复数据? "Crash" 包括突然断电和处理的异常。作为我的意思的例子,

  1. Notepad++ 有一个备份文件夹,可以定期保存文件的副本。即使断电,最后 7 秒后也不会丢失任何内容。
  2. Atom 保留了一个 IndexedDB,它应该在异常发生后恢复所有内容。我不知道停电会发生什么。
  3. Inkscape 依靠其异常处理来恢复数据。如果断电,数据将丢失。
  4. Scite 没有备份计划。

根据https://code.visualstudio.com/blogs/2016/11/30/hot-exit-in-insiders

The way hot exit works is to periodically make backups of unsaved files. If VS Code happens to crash, a backup restore will occur the next time the folder is opened.

在 Windows,备份文件夹是 C:\Users\<username>\AppData\Roaming\Code\Backups

至于备份之间的时间,我还没有找到。

问题“Visual Studio 代码如何在崩溃后恢复数据?”的简要回答:

  • VSCode 运行“热退出”。根据我的经验,它非常可靠。当它运行时,它会创建在 VSCode window 选项卡中打开的所有未保存文件的副本(他们称 window 为编辑器)。

  • VSCode 将这些副本保存在备份目录中。它还会生成包含未保存文件的编辑器路径列表。

  • 您可以在 VSCode 中重新打开之前打开的编辑器并查看您备份的文件。

满足典型需求的步骤

列出热退出时打开的编辑器 运行

  • 在 MacOS 上使用终端

    cat $HOME/Library/Application\ Support/Code/Backups/workspaces.json`  
    
    • 使用 jq 的替代方法以获得更具可读性的列表

      cat ~/Library/Application\ Support/Code/Backups/workspaces.json | jq '.'
      
  • 在 Linux

    上使用终端
    cat $HOME/.config/Code/Backups/workspaces.json
    
  • 在 Windows

    上使用 Powershell
    gc %APPDATA%\Code\Backups\workspaces.json
    

浏览备份目录

code $HOME/Library/Application\ Support/Code/Backups/

重新打开所需的编辑器,之前打开的文件按相同的 Tab 键顺序

code {{ folderUri from workspaces.json }}

为什么这些步骤有用

我经常忘记在 VSCode quits/crashes 之前打开过哪些目录,并且 VSCode 中“打开最近”的菜单不会指示哪些编辑器有未保存的文件。对于这种需要,VSCode 生成的 workspaces.json 列表似乎是不可替代的。

VSCode docs:

Hot Exit
VS Code will remember unsaved changes to files when you exit by default. Hot exit is triggered when the application is closed via File > Exit (Code > Quit on macOS) or when the last window is closed.