对于运维工作者来说,可能最让人担心的,是服务器宕机;

最让人无助的,是被DDOS;

而最让人心惊肉跳的,是rm -rf *这个命令……

当你执行rm -rf命令时,万一哪个变量没赋值

听说过被删空服务器么?

mysql数据库不是在运行吗?

linux能删除正在执行的文件?反正是彻底删除了……

那一夜,你没有拒绝我……

那一夜,我心儿破碎……

我们平时工作中,rm -rf *这个命令给每个使用linux系统的工程师带来了深深的恐惧。

你以为今天我们是来哭诉服务器被清空之后有多惨的嘛?

不!

山重水复疑无路,误删文件能恢复!

今天就给大家分享一个在误删/etc目录后,救命止损的数据恢复教程。

一、紧急措施

1.如果你是远程登录服务器的,首先要保持连接不被断开。不操作时用vim保持连接状态。

此时虚拟控制终端和ssh连接已经不能建立新连接了。

如下图已经不能登录。

2.拷贝相同版本服务器/etc目录到目标服务器(版本与配置越相近,接下来的工作量会越小,可以使用rz, wget等其他方式把配置拷贝到服务器。scp等需要验证账户信息已经不能使用)

拷贝完成后,可以通过ssh连接,检测是否可以正常连接至服务器(此时使用的账户密码应该是同版本服务器的账户密码)

如出现下图所示,连接失败,可能是selinux导致,临时关闭selinux setenforce 0

此时已经可以正常通过ssh连接至服务器,切换至root账户如下

3.修改selinux配置为关闭状态。/etc/selinux/config修改为开机不启动

二、系统恢复

1.检查fstab文件

查看配置文件信息如下:

通过blkid查看设备上所采用文件系统类型,以及挂载设备。

注:对比两图可以发现,信息差别很大, 因为我这两台服务器安装时分区方式不一样。

系统显示没挂载home分区,所以删除需要把配置文件中挂载在home下的那行删除。

以及修改设备名与UUID,以及TYPE

修改/etc/fstab配置文件,如下

配置修改无误的话,重启是可以正常启动

如下图所示,已经可以正常启动(不过此时千万别重启,因为应用配置数据还没恢复)

2.修改网卡信息

如果拷贝的网络配置是动态获取IP,并且网卡名称相同,对访问网络还没影响,那么这一步可以跳过,网卡这部分可以放到最后来做,因为你删除配置后,网络暂时还是可以使用的。

这里我拷贝的是静态分配的IP地址,所以需要做一些修改。

下图是可以看到我的网卡名称是ens33

而我的配置中没此网卡配置,相对应的应该是ifcfg-eth0。

备份一份,然后重命名为ifcfg-ens33

cp ifcfg-eth0 ifcfg-eth0.bak && mv ifcfg-eth0 ifcfg-ens33

重启可能远程断开连接(不同环境重启网络方式可能不太相同,这里是centos7)

看下配置信息

下边是部分解释,可以参考下

修改为如下配置(动态分配)

静态分配

配置以上任意一种方式

动态分配的IP,相对简单一些,如果网关不支持dhcp,或者环境需要是静态的,那么也可以采用静态的。配置静态IP需要注意,网关如果设置错误,那么可能不能访问网络的哦。

三、应用配置恢复

a) Redis配置数据恢复

i. Redis账户数据恢复

1.首先确定系统中是否还有redis用户。(如果拷贝过来的系统也安装了redis,那么肯定是会有redis账户)

如果发现有redis用户,以下步骤可以跳过。

1.如没有redis账户,需添加redis账户,不然重启redis可能失败。添加redis账户信息。(仅供参考,centos7环境成功)

echo “redis:x:996:994:Redis Database Server:/var/lib/

redis:/sbin/nologin” >> /etc/passwd

echo “redis:!!:17416::::::” >> /etc/shadow

echo “redis:x:994:” >> /etc/group

echo “redis:!::” >> /etc/gshadow

ii. Redis配置文件恢复

Redis的配置文件恢复相对简单一些,官方提供了CONFIG REWRITE命令重写redis.conf配置文件。

如果执行命令过程中出现如下提示,不用担心是因为权限的问题。

首先创建redis.conf文件

touch /etc/redis.conf

然后修改文件属性

chown redis:redis /etc/redis.conf

参考官方介绍:https://redis.io/commands/config-rewrite

b)mysql配置文件恢复(maraidb)

i.mysql账户数据恢复

1.首先确定系统中是否还有mysql用户。

如果发现有mysqld用户,以下步骤可以跳过。

2.如没有mysql账户,需添加mysql账户,不然重启mysql可能失败。添加mysql账户信息。(仅供参考,centos7环境成功)

echo “mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin” >> /etc/passwd

echo “mysql:!!:17415::::::” >> /etc/shadow

echo “mysql:x:27:” >> /etc/group

echo “mysql:!::” >> /etc/gshadow

ii.mysql配置文件恢复

1.进程信息获取mysql配置信息

如下

basedir = /usr

datadir = /var/lib/mysql

plugin-dir = /usr/lib64/mysql/plugin

log-error = /var/log/mariadb/mariadb.log

open-files-limit =65535

pid-file = /var/run/mariadb/mariadb.pid

socket = /var/lib/mysql/mysql.sock

2.mysql参数信息

#上图mysqld进程ID

pid=25499

#获取进程映射地址

cat /proc/$pid/maps | awk '$6 !~ "^/" {split

($1,addrs,"-"); print "dump memory mem_" addrs[1] "

0x" addrs[1] " 0x" addrs[2] ;}END{print "quit"}' > gdb-commands

#dump地址中数据

gdb -p $pid -x gdb-commands

上边工作做完看下生成的文件如下

查找mysql参数信息

比如grep datadir ./mem_*会显示所有包含datadir字符串二进制文件。

vim ./mem_7f18284af000查找datadir如下,跟进程信息获取参数有部分重复。

datadir = /var/lib/mysql

socket = /var/lib/mysql/mysql.sock

symbolic-links = 0

max_connections = 1000

openfileslimit = 65535

vim ./mem_7ffef7a7c000

查找datadir如下,此块内存跟ps看到的信息差不多,可以不用记录。

3.创建mysql配置文件

根据以上两种方式获取到配置信息如下

basedir = /usr

datadir = /var/lib/mysql

plugin-dir = /usr/lib64/mysql/plugin

log-error = /var/log/mariadb/mariadb.log

open-files-limit =65535

pid-file = /var/run/mariadb/mariadb.pid

socket = /var/lib/mysql/mysql.sock

symbolic-links = 0

max_connections = 1000

获取mysql默认配置文件路径位置

mysql --verbose --help | grep -A 1 'Default options' | grep /

以上是mysql查找配置文件顺序,通常用的是/etc/my.cnf

创建配置文件touch /etc/my.cnf,或者拷贝版本差别不大的配置文件。

修改为如下所示

重启mysql,测试下业务是否正常。

本篇为悬镜安全实验室原创文章,由悬镜安全实验室入驻安全脉搏专栏账号发布。

本文作者:悬镜安全

linux mysql 误删系统文件恢复_干货分享丨如何恢复Linux下误删/etc目录数据相关推荐

  1. android分享文件分享结果_干货分享丨DM删除归档日志文件的多种方法

    上一期我们讲解了DM数据库归档日志的切换,本期我们讲解DM数据库归档日志文件的删除. 本章内容已在如下环境上测试: ①操作系统:中标麒麟7: ②数据库版本:达梦8: 相关关键字:DM数据库.归档日志文 ...

  2. 达梦数据库删除用户_干货分享丨DM8用户管理

    原标题:干货分享丨DM8用户管理 用户介绍 安装创建达梦企业版数据库后,系统会默认创建四类数据库账号,分别是: SYS:达梦数据库内置管理用户,不能登录,数据库使用的大部分的数据字典和动态性能视图. ...

  3. dts数据库迁移工具_干货分享丨DM8 DTS工具使用小技巧

    DTS工具的介绍 DM数据库为迁移提供了图形化工具--DTS.DTS可以从主流大型数据库迁移到DM.DM到DM.文件迁移到DM以及DM迁移到文件的功能,极大的简化了迁移操作,让数据迁移变得简单. DT ...

  4. linux etc目录 删除,干货分享丨如何恢复Linux下误删/etc目录数据

    @悬镜安全实验室 前言 对于运维工作者来说,可能最让人担心的,是服务器宕机: 最让人无助的,是被DDOS: 而最让人心惊肉跳的,是rm -rf *这个命令-- 当你执行rm -rf命令时,万一哪个变量 ...

  5. linux重启后etc目录被还原,干货分享丨如何恢复Linux下误删etc目录数据

    对于运维工作者来说,可能最让人担心的,是服务器宕机: 最让人无助的,是被DDOS: 而最让人心惊肉跳的,是rm -rf *这个命令-- 当你执行rm -rf命令时,万一哪个变量没赋值 听说过被删空服务 ...

  6. 群晖linux文件夹颜色红色,技术干货分享 | 群晖备份Linux文件夹~

    以下协议可用作备份源,以使用Active Backup forServer将文件备份到您的Synology NAS: oSMB(Microsoft Windows) orsync 3.0或更高版本(L ...

  7. win10任务栏透明_干货分享丨让你的win10桌面既整洁又美观

    Hi,这里是一杯柔情. 从本月开始,每个月的第二周,我会分享一些实用干货. 这次给大家分享的是[怎么让你的win10电脑桌面变得既整洁又美观] 先来看一看效果图 应用不同的模板和壁纸,会有不同效果. ...

  8. 关键词热度分析工具_干货分享丨关键词热度分析工具

    不论我们是做竞价还是做自然优化,都需要对关键词的热度进行一番细致的分析.选择了不合适的关键词,可能就会浪费大量的时间和金钱,关键词的重要性不言而喻. 好啦,大家肯定会悄悄吐槽:谁不知道选择合适的关键词 ...

  9. jmap 文件解析_干货分享丨jvm系列:dump文件深度分析

    摘要:java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因.那么dump文件的内容是什么样的呢? JVM ...

最新文章

  1. 在Unity中创建3D直升机游戏
  2. Matlab与数据结构 -- 如何获取完整文件名
  3. crossdomain.xml配置错误导致登录不了
  4. mysql数据依赖关系_发现数据库对象的依赖关系
  5. echarts入门基础,画折线图
  6. bzoj 1004: [HNOI2008]Cards
  7. UA MATH571B 试验设计 QE练习题 不使用代码分析试验结果I
  8. java中的break与continue用法
  9. android拍照截图组件,Android截图命令screencap与视频录制命令screenrecord(示例代码)...
  10. 染色产品常见疵病分析
  11. 武魂金刚少林加点、装备坐骑及江湖技能选择
  12. 《机器学习》二刷超详细笔记| 第一章 绪论
  13. Linux操作命令提示符
  14. TP6使用redis
  15. 详解视频中动作识别模型与代码实践
  16. 【学习笔记】第三章 Python在高等数学和线性代数中的应用
  17. Unity基础—Transform类
  18. luogu P2198 杀蚂蚁
  19. python数据获取与文本分析_python文本分析之处理和理解文本
  20. JPA教程(第五章)

热门文章

  1. 【“笨办法”学Python】39.字典,可爱的字典
  2. java gc 时间_Java GC日志查看,GC日志时间分析
  3. 发现一个非常好的ping工具
  4. 龙书第九章总结9.1
  5. ubuntu下安装qq2012
  6. 台式计算机喇叭啸叫声,电脑K歌麦和音箱产生啸叫干扰的原因详解
  7. 关于最优控制的一些总结3
  8. 三行代码实现九九乘法表~
  9. 时间序列分析--手算时间序列
  10. 小程序的踩坑-持续更新-建议收藏