Nginx配置文件丢失 并且.swp文件的误删,实现文件恢复

357 阅读2分钟

前两天后台同事不小心操作Nginx配置文件,强制关,内容给丢失了,慌的一匹,陪着解决了半天回头一看其实很简单,写的不好不要介意,看不懂留言,哈哈,

场景:

1,别百度搜,让你直接查看隐藏文件,删什么swp文件,删了也别慌

很多搜到的文章都是让删了swp文件,那都是已经恢复了才能删,因为在打开配置文件时会生成临时文件,也就是所谓的.swp文件,在退出nginx配置文件的时候会有一个提示,R的一步操作,当时强制给退出了,所以导致内容消失

① 没有删除swp隐藏文件的情况下,直接执行下面命令就好,或者按R就可以

vim -r 配置文件名

② 没有按R恢复文件,又把swp文件删了的情况

用到 lsof 这个命令,找到进程中被删了的文件,然后cp 出来一份,改成隐藏文件,只需要在文件名前加个 . (点)就变成隐藏文件了,然后再执行 vim -r 配置文件名 就可以了

lsof | grep deleted : 列出当前系统已打开文件,但是deleted的状态

cp /proc/419/fd/3 /源文件路径/.xxxx.swp
419 是进程号  3就是3r那个里面的3,显示几写几就完事了
用命令cp将删除的数据恢复到源目录里面,记住加点. ,这样就可以执行隐藏文件恢复的命令了

最后执行

1、ls -a查看隐藏文件,会发现多了一个文件:例如.xxxx.swp

2、用vi带-r参数来恢复:vi -r xxxx ,然后保存

3、删除 ..xxxx.swp文件即可。

总之就是

1.没删swp文件
执行 vim -r 配置文件名

2.删了swp文件,配置文件内容也丢失,没有重启Nginx的情况下
lsof | grep deleted
cp /proc/419/fd/3 /源文件路径/.xxxx.swp
ls -a 
vi -r xxxx
rm -f .xxxx.swp

写的不好不要介意,看不懂留言,哈哈哈