之路教程 https://onitr oad .com

确定哪些系统文件/目录已被删除

以下步骤依赖于 RPM 数据库 (rpmdb) 来识别丢失的文件和目录。
因此,该过程仅适用于通过 RPM 包安装的文件/目录。

执行以下操作以确定哪些文件/目录已被错误删除:

# for i in `rpm -qa | sort`
do 
    echo "### $i: 'rpm -Vv $i' >> 'hostname'-'date %+F-%T'-rpm-Vv.txt
done

上面的命令根据当前安装的软件包集执行所有文件/目录的列表。
查看生成的文件会产生如下输出:

# cat localhost-2020-12-11-11:45:27-rpm-Vv.txt
### glibc-2.12-1.212.0.3.el6_10.3.x86_64: ......... c /etc/gai.conf
......... c /etc/ld.so.conf
......... /etc/ld.so.conf.d
missing c /etc/nsswitch.conf
......... c /etc/rpc
......... /lib64/ld-2.12.so
......... /lib64/ld-linux-x86-64.so.2
......... /lib64/libc-2.12.so
missing /lib64/libc.so.6
......... /lib64/libcidn-2.12.so
......... /lib64/libcidn.so.1
......... /lib64/libcrypt-2.12.so
......... /lib64/libcrypt.so.1
...
......... /usr/sbin/iconvconfig.x86_64
......... /usr/share/doc/glibc-2.12
......... d /usr/share/doc/glibc-2.12/BUGS
......... d /usr/share/doc/glibc-2.12/CONFORMANCE
......... d /usr/share/doc/glibc-2.12/COPYING

从上面的输出中,很明显系统中缺少从包 glibc-2.12-1.212.0.3.el6_10.3.x86_64 安装的文件 /lib64/libc.so.6.
查看整个日志以识别所有丢失的文件/目录及其原始包。
有关 rpm 验证文件属性的定义,请参阅 rpm 手册页。

# man rpm
如何在 CentOS/RHEL 7 中恢复已删除的 rpm 包文件(库、配置文件)

重新安装/恢复丢失的文件/目录

确定缺少文件/目录的软件包列表后,将这些确切的软件包版本重新安装到受影响的系统。
例如:

# yum reinstall glibc-2.12-1.212.0.3.el6_10.3.x86_64

完成后,再次执行步骤 1 以确认先前删除的文件/目录不再丢失,例如:

### glibc-2.12-1.212.0.3.el6_10.3.x86_64: ......... c /etc/gai.conf
......... c /etc/ld.so.conf
......... /etc/ld.so.conf.d
......... c /etc/nsswitch.conf 
......... c /etc/rpc
......... /lib64/ld-2.12.so
......... /lib64/ld-linux-x86-64.so.2
......... /lib64/libBrokenLocale-2.12.so
......... /lib64/libBrokenLocale.so.1
......... /lib64/libanl.so.1
...
......... /usr/sbin/iconvconfig.x86_64
......... /usr/share/doc/glibc-2.12
......... d /usr/share/doc/glibc-2.12/BUGS
......... d /usr/share/doc/glibc-2.12/CONFORMANCE
......... d /usr/share/doc/glibc-2.12/COPYING
...

问题

某些与系统相关的文件或者目录被错误地移除/删除。
如何恢复它们?

比如现在的情况是缺少以下系统文件:
/etc/nsswitch.conf
/lib64/libc.so.6

日期:2020-09-17 00:12:36 来源:oir作者:oir