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 の目的ではありません。このメタデータはまったく追跡されなかったため、失われました。

これはシステムのようなものだ等キーパーのためです。これらは、git をラップして/etcバージョン管理を維持し、git が保持しないメタデータも保持し、必要に応じて復元します。将来的にこのようなことが起きないようにするには、etckeeper または同様のツールの使用を検討してください。

何らかのバックアップも用意しておくといいでしょう。現在、バックアップがまったくないようです。これは災難を招く原因となります。データ損失が最小限で済んだのは幸運でした。次回はそうはいかないかもしれません。

答え2

はい、権限とファイルの所有権に問題があります。残念ながらgitはファイルの内容と実行ビットのみを保存しますなので、 から復元すると、読み取り/書き込み権限、ユーザーとグループの所有権、および ACL (ある場合) が失われますgit reset --hard。復元されるディレクトリが /etc の場合、これはホストを壊すのに十分すぎるほどです。

回復するには、すべてのファイルの所有権と権限が含まれる完全なファイルシステムのバックアップを取るのが最善です。

いずれかをお持ちでない場合は、同様の CentOS ホストと比較して、所有権と権限を手動で再構築してみてください。ただし、OS を最初から再インストールする方が作業が少なくなる場合があります。申し訳ありません。

関連情報