從 git 完全恢復 /etc/
我有一個 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 或類似工具。您可能還想建立某種備份。您目前似乎沒有任何備份,這是災難的根源。您很幸運能夠以盡可能少的數據失去逃脫。下次你可能就沒有這麼幸運了。