VSCode 远程连接的 Delete Permanently 会绕过回收站直接从文件系统删除。废话不多说直接上正文。最快最优的方式当然是Git但是我这次还没更新Git思路是从VSCode 本地历史记录恢复。按 CtrlShiftP → 搜索 Local History: Find Entry to RestoreVSCode 会自动保存本地编辑历史可以通过搜索你记得的文件名恢复单个文件点击右上角的 恢复按钮↺ 即可恢复本文要讲的是找到本地缓存目录可批量恢复整个文件夹。原理说明VSCode 有一个内置的Local History功能每次你按下CtrlS保存文件时VSCode 会自动在本地保存一份快照。关键点使用 Remote SSH 时这些历史快照保存在服务器上而非本地电脑~/.vscode-server/data/User/History/ └── a1b2c3d4/ # 每个文件对应一个随机哈希目录 ├── entries.json # 索引记录原始文件路径和所有历史版本 ├── aBcD.py # 某次保存的快照随机命名 └── xYzW.py # 更新的快照entries.json结构示例{ resource: vscode-remote://ssh-remoteyour-server/home/user/project/train.py, entries: [ { id: aBcD.py, timestamp: 1700000001000 }, { id: xYzW.py, timestamp: 1700000002000 } ] }⚠️局限性Local History 只记录文本文件二进制大文件如模型权重.safetensors、.bin不会被记录。恢复步骤第一步确认历史记录存在在服务器上执行以下命令确认 History 目录存在且有内容ls ~/.vscode-server/data/User/History/有输出一堆哈希目录名即说明历史记录存在。第二步搜索目标文件用你记得的文件名或目录名关键词搜索grep -rl 你的关键词 ~/.vscode-server/data/User/History/ 2/dev/null | head -20有匹配结果即可进行下一步。第三步执行恢复脚本将下方脚本中的两处变量替换为实际值后在服务器上运行KEYWORD你记得的项目目录名或文件路径关键词OUTPUT_DIR恢复文件的输出目录提前确认该路径不存在或为空HISTORY_DIR~/.vscode-server/data/User/History OUTPUT_DIR~/restored-files # 修改为你想要的输出路径 KEYWORDyour-project-name # 修改为你的关键词 mkdir -p $OUTPUT_DIR count0 for entry in $HISTORY_DIR/*/entries.json; do resource$(python3 -c import json, sys, urllib.parse data json.load(open($entry)) print(urllib.parse.unquote(data.get(resource, ))) 2/dev/null) if [[ $resource ! *$KEYWORD* ]]; then continue; fi rel_path${resource#*$KEYWORD/} dir$(dirname $entry) latest$(python3 -c import json data json.load(open($entry)) entries data.get(entries, []) if entries: print(entries[-1][id]) 2/dev/null) if [[ -z $latest ]]; then continue; fi src$dir/$latest dst$OUTPUT_DIR/$rel_path if [[ ! -f $src ]]; then continue; fi mkdir -p $(dirname $dst) cp $src $dst echo [OK] $rel_path ((count)) done echo echo Done! Restored $count files to $OUTPUT_DIR第四步移回原位确认恢复的文件内容无误后将其移回原目录mv ~/restored-files /path/to/original/location注意事项发现误删后立即停止服务器写入操作避免历史快照被覆盖。Local History 保存的是最近若干次的保存记录非常久远的版本可能已被清理。恢复的是最后一次保存时的版本删除后未保存的修改无法找回。