从 git 进行完整的 /etc/ 恢复

从 git 进行完整的 /etc/ 恢复

我有一台 CentOS 6.9 服务器。

完整/etc目录处于版本控制之下。

我无意中运行了“git rm -R”。服务器立即停止工作,我的 ssh 会话丢失。

我设法将一个 IP 控制台连接到服务器,并通过实时 Linux 从 USB 启动,然后运行'git reset --hard'

现在 index/working dir 干净了。我重启了系统,但还是不行。它对 ping 有响应,但我仍然无法 ssh 到它。

在 IP 控制台上,我甚至无法登录,输入任何用户后它会再次询问用户。

从恢复 Linux 中,我检查了错误/var/log/boot.log- 第一个错误与 iptables-restore 有关

error while loading shared libraries libip4tc.so.0 : cannot open shared object file: No such file or directory

接下来是 rsyslog.d

CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'

如果我从恢复实时 Linux 检查,该文件显然在那里。我怀疑存在一些权限问题,但真的不知道。

任何帮助都值得感激。谢谢。

答案1

所有权和权限可能有误。由于您没有跟踪这些内容,因此您必须手动修复每个文件。

git 本身并不跟踪文件的所有权和权限。这不是它的用途。这些元数据根本没有被跟踪,因此丢失了。

这就是系统etckeeper是。它们环绕 git 以保持/etc版本控制,同时还保留 git 没有的元数据,并在必要时恢复它。为了防止将来发生这种情况,请考虑使用 etckeeper 或类似工具。

您可能还想建立某种备份。您目前似乎没有任何备份,这是灾难的根源。您很幸运,数据丢失很少。下次您可能就没那么幸运了。

答案2

是的,你遇到了权限和文件所有权问题。不幸的是git 仅存储文件的内容和可执行位,因此当您从 恢复时,读/写权限、用户和组所有权以及 ACL(如果有)都会丢失git reset --hard。当要恢复的目录是 /etc 时,这足以破坏您的主机。

恢复的最佳希望是从完整的文件系统备份开始,它将包括所有文件所有权和权限。

如果您没有其中之一,您可以尝试通过与类似的 CentOS 主机进行比较来手动重建所有权和权限。但从头开始重新安装操作系统可能会减少工作量。抱歉。

相关内容