從 git 完整恢復 /etc/

從 git 完整恢復 /etc/

我有一台 CentOS 6.9 伺服器。

完整/etc目錄處於版本控制之下。

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

我設法將一個 ip 控制台連接到伺服器,並使用實時 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'

如果我從恢復實時 Linux 中進行檢查,該文件顯然就在那裡。我懷疑存在一些許可問題,但真的不知道。

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

答案1

所有權和權限可能是錯誤的。由於您沒有追蹤這些問題,因此您必須為每個檔案手動修復它們。

就其本身而言,git 不追蹤檔案的所有權和權限。那不是它的目的。該元數據根本沒有被跟踪,因此丟失了。

這就是系統的樣子等等管理員是給。它們圍繞著 git 進行/etc版本控制,同時保留 git 沒有的元數據,並在必要時恢復它。為了防止將來發生這種情況,請考慮使用 etckeeper 或類似的工具。

您可能還想建立某種備份。您目前似乎沒有任何類型的備份,這將導致災難。您很幸運能夠逃脫並沒有丟失盡可能少的數據。下次你可能就沒這麼幸運了。

答案2

是的,您有權限和文件所有權問題。很遺憾git 只儲存檔案的內容和可執行位,因此當您從 . 恢復時,讀取/寫入權限、使用者和群組所有權以及 ACL(如果有)都會遺失git reset --hard。當要恢復的目錄是 /etc 時,這足以破壞您的主機。

恢復的最佳希望是透過完整的檔案系統備份,其中包括所有檔案所有權和權限。

如果您沒有其中之一,您可以嘗試透過將它們與類似的 CentOS 主機進行比較來手動重建所有權和權限。但從頭開始重新安裝作業系統可能會減少工作量。對不起。

相關內容