写在前面

惊险一刻!今天在调试项目的时候,不经意间把一个非常重要的文件夹lunar_crater给误删除了。

里面装的是我整整一个学期的成果啊!!!!!!

非常要命,当时就感觉天塌了。赶紧用远程桌面,怀着最后的一点希望查看回收站……,空空如也。

然后再怀着心如死灰的希望去查看了~/.Trash~/.local/share/Trash,发现都找不到这两个文件夹,好吧这下完蛋了

万念俱灰之际,幸好有网友指导,得以找回误删除的文件。

数据记录位置

经此一役才发现,其实在vscode上编辑过的全部文件,都会在其服务器端有备份,该备份就是恢复误删除文件的依据,通常该备份的目录位于:

1
~/.vscode-server/data/User/History

里面的文件夹命名、文件命名都是杂乱无章的,直接找是找不回来的,惟一的方法只能是全部恢复,然后再凭着记忆去一点点对比,查找最新的版本。可在该目录下,使用find命令,将全部查找结果写入至本地文件中,以便于批量恢复:

1
2
cd ~/.vscode-server/data/User/History
find . lunar_crater > ~/catelogue.txt

然后根据该文件目录,逐个恢复至原始目录中,期间推荐使用vscode自带的文件对比功能,手工完成版本管理,如下图所示:
vscode自带文件对比功能
里面包含的文件很多,甚至只要是文件中含有该字段的文件也会被恢复,更多的是同一个文件的多个版本,恢复过程真的是一个非常繁琐的事,这个知识希望再也不要用到。

教训

从本次事故中得到两点教训:

  • 重要文件夹,一定要使用git完成版本管理,并同步至远程托管仓库中。本文件夹我仅在本地完成了git的版本管理,出于侥幸和嫌麻烦没有同步至远程,其实同步也多不了几步,以后一定要同步至远程上。
  • vscode的远程服务器数据不要随便删除,万一不经意间误删除了需要的数据,再去恢复就麻烦了。除非必要,删除前请将全部本地仓库与远程同步至最新,所有没有追踪的代码改变,也请创建新的分支,加入至远程仓库中。

血泪教训,希望以后再也不要用到