Linux

從 git 完全恢復 /etc/

  • March 16, 2018

我有一個 CentOS 6.9 伺服器。

完整/etc目錄受版本控制。

我不小心在上面執行了“git rm -R”。伺服器立即停止工作,我的 ssh 會話失去了。

我設法將一個 ip 控制台連接到伺服器,並從帶有 live linux 的 USB 引導,我執行'git reset --hard'.

現在索引/工作目錄是乾淨的。我重新啟動了系統,但它仍然無法正常工作。它響應 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'

如果我從 recovery live linux 中檢查,該文件顯然就在那裡。我懷疑一些許可問題,但真的不知道。

任何幫助表示讚賞。謝謝。

所有權和權限可能是錯誤的。由於您沒有跟踪這些,因此您必須為每個文件手動修復它們。

git 本身不跟踪文件的所有權和權限。那不是它的用途。該元數據根本沒有被跟踪,因此失去了。

這就是像etckeeper這樣的系統的用途。它們環繞 git 以保持/etc版本控制,同時還保留 git 沒有的元數據,並在必要時恢復它。為防止將來發生這種情況,請考慮使用 etckeeper 或類似工具。

您可能還想建立某種備份。您目前似乎沒有任何備份,這是災難的根源。您很幸運能夠以盡可能少的數據失去逃脫。下次你可能就沒有這麼幸運了。

引用自:https://serverfault.com/questions/901860