运维日志 #1:从删库到跑路。

2023 年 11 月 23 日

  • git 引发的灾难
  • 来自 html 逐行翻译的秽土转生

一些闲话

在拥有了一个自己的 Linux 服务器和搭建了一个 Blog 之后,由于本人过于 poor 的技能水平,在一些非常愚蠢的地方经常遇到各种各样的奇葩问题,于是就开了这么个“运维日志”系列,记录并分享遇到的问题以及解决过程,以此为鉴。

在撰写这一篇运维日志的时候,已是 2023 年 12 月 12 日,而本问题发生的时间如上所示,为半个多月之前——这还是由于我们专业的地狱排课:

直到今天,我才能从堆积如山的 ddl 中抽出尸体时间,来干一些自己喜欢的事情。

问题

以下为聊天记录:

“今天早上”

“我正在一如既往地摆弄我的小小垃圾桶。”

“突发奇想”

“最近一直在学习使用 git 仓库”

“我不如把我的博客文件夹里所有东西在 github 里存一份”

“然后我就这么做了。”

由于本网站为基于 Hexo 搭建的静态博客,我使用的绝大多数模块都是在 github 上直接克隆的,而少部分是通过 sftp 上传 .tar.gz 再在云端解压的——

而这也是问题产生的原因——这些文件夹内部有自己的 git 仓库文件。

当我在 VS Code 内使用内置插件初始化 git 仓库时,由于对这个傻逼插件的用法不是很熟,在 git add 命令之后,一些子文件夹并没有被添加在改动之内,而这也包括了存储所有文章的 /source 文件夹。

在完成对云端的推送之后,为了合并内容,我对云端实行拉取并覆盖了本地的仓库。

“然而我并没有意识到发生了什么。我愉快地度过了一天”

“直到刚刚。我发布了一个新功能。”

“部署:错误。未找到/source/footer.swig。”

“然后我才发现”

“git 他把我本地里 source 文件夹下所有的帖子全删了。”

“哈哈。多么有趣的功能。”

“我讲完了。”

“我讲,完了。”

讲到这,你可能会问:“那你用 git 回滚改动不就好了?”

这就要归结于我的一个坏习惯:喜欢重置。

我在玩 git 相关命令的时,在学习并体验一些命令之后,往往会造成非常多且复杂的分支以及日志,于是我喜欢直接把 .git 文件夹整个删掉从头 init。

所以,我看着空空如也的提交日志之后,我人炸了。

图片

解决

在尝试过从各种地方恢复数据无果之后,我只有找到目前已经在网页上部署的 html 文件。

但是经过 Hexo 的转化,已经和原始的 Markdown 文件相去甚远。

然而,在撰写博客的时候,文章的内容非常多且结构非常复杂,我实在是不想从头写一份,所以做了个大胆的决定——逐行翻译。

在宿舍和自习室非常痛苦地从晚上 11 点翻译到凌晨 4 点之后,我终于完美地完成了工作:一字不差。

图片

我再也不想第二次体验这种感觉了。