手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器


前言

今天公司服务器的宝塔打不开,让我去修(ps:宝宝委屈)

                         手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_02手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_03

打开找一下问题所在

手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_04

问题:

发现是宝塔官方的cdn好像挂掉了

解决思路:

  • (1)本地重新搞个服务器装宝塔,发现没问题
  • (2)比较一下,发现线上的确实cdn有问题
  • (3)把本地的可以用的cdn,放到线上就行。

解决:

卧槽,我发下,我根本不了解宝塔的目录结构【​ps​:​解决毛线,下班走人​】


                                                    手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_05  手误【删库】 == 跑路,不存在的 ——删瓦辛格_恢复数据_06

正文

别眨眼,接下的我sb的操作,真的亮瞎我狗眼【ps:别害怕,也会亮瞎你的狗眼的,嘿嘿。。。】


                                               手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_07                                                                    

常规操作:

(1)备份要修改的文件,这是职业本能,OK,没毛病,我喜欢。

(2)删除那个没用的文件        【​文件​:你才没用,看老子的移魂大法】

手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_08

重点:

备份一切over,删除时,我手贱多打了个  *  。

然后没思考,一个回车,那感觉爽啊   

求德玛得...........................................................................................................雅蠛蝶...............................................................................................................

对,ctrl +c 你已经看出我的绝望了


说时迟那时快,掏出手机,抢票一张去往非洲的机票

手误【删库】 == 跑路,不存在的 ——删瓦辛格_恢复数据_09      手误【删库】 == 跑路,不存在的 ——删瓦辛格_恢复数据_10                 手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_11


手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_08

我多打一个 *  ,导致把线上环境的  nginx服务,php环境,redis缓存,mysql数据库,全部删掉了


不多说,赶紧跑路了..........................................................................


                                                                   手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_13


                                                                     手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_14


                                               手误【删库】 == 跑路,不存在的 ——删瓦辛格_恢复数据_15             


                                    飞机延时,公司发现

                                     跑路失败,当场被捕


              手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_16                                                                    手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_17


数据恢复

  • (1)停止对服务器进行一切的写入操作,卸载挂载
  • (2)安装extundelete,进行扫描
  • (3)恢复数据,环境再次重新工作

PS:因为这个服务器没有搞本地备份和异地本地,所以才有下面这些破事,再不是,直接备份恢复就行了

                                                  手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_18


(1)停止对服务器进行一切的写入操作,卸载挂载

当发现误删除文件时,为了尽可能的恢复数据,先要关掉所有的正在进行的服务,不要再进行数据的写入,要不然恢复的概率那就低了。我们可以直接

# killall 进程名

或者

# kill -9 pid

然后把误删除的文件所在分区,重新挂载成只读的

# mount -o ro /dev/sdb  /data/

(2)安装extundelete

yum 
install bzip2 gcc-c++ e2fsprogs* -y
wget
http://nchc.dl.sourceforge.net/
project/extundelete/extundelete/
0.2
.4/extundelete
-0.2
.4.tar.bz2

手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_19

tar 
jxvf
extundelete-0
.2
.4
.tar
.bz2
cd
extundelte-0
.2
.4

手误【删库】 == 跑路,不存在的 ——删瓦辛格_恢复数据_20

./configure
make &&
make install

手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_21

验证安装结果

extundelete -v

手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_22

(3)进行扫描,恢复数据

恢复指定文件:

原理:​从根节点(inode=2)开始找到被删除文件的i节点,然后recover i节点。

删除目录:/www/server

手误【删库】 == 跑路,不存在的 ——删瓦辛格_恢复数据_23

先检测被删除的文件有哪些:

extundelete /dev/mapper/centos-root --inode 2

手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_24

extundelete /dev/mapper/centos-root --inode 1703938

手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_25

extundelete /dev/mapper/centos-root --inode 1703940

手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_26

extundelete /dev/mapper/centos-root --restore-directory /www/server

手误【删库】 == 跑路,不存在的 ——删瓦辛格_恢复数据_27

#查看能恢复的数据:
[root@localhost ~]
# extundelete /dev/sdc1 --inode 2
#恢复单个文件
[root@localhost ~]
# extundelete /dev/sdc1 --restore-file somefile
#恢复目录
[root@localhost ~]
# extundelete /dev/sdc1 --restore-directory /somedir
#恢复所有文件
[root@localhost ~]
# extundelete /dev/sdb1 --restore-all

能恢复多少,就靠运气

                                                          手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_28


后记:

运气较好,恢复了数据

把生成环境搭建出来,跑上面完全没有问题

                                                               手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_29                                          手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_30                                                                                    手误【删库】 == 跑路,不存在的 ——删瓦辛格_服务器_30

切记

  • (1)记得备份
  • (2)不要用rm
  • (3)干啥要三思

下次更新,“垃圾rm,毁我青春,我直接把你删掉”

预知后事,且听下回分解【关注我,期待下次分享】

                         手误【删库】 == 跑路,不存在的 ——删瓦辛格_centos_32