/ etcのバージョン管理にEtckeeperを使用する

前書き

/etc/ディレクトリには、道のLinuxシステムの機能に重要な役割を果たしています。これは、ほとんどすべてのシステム構成ファイルが内にあるため/etc/です。に保存されて/etc/いるデータは、組み込みのシステムライブラリだけでなく、新しくインストールされたソフトウェアやその構成にも関連しています。システムとソフトウェアのインストール、アップグレード、設定変更はすべてに保存され/etc/ます。したがって、/etc/予期しないまたは偶発的な誤動作によって引き起こされる潜在的なエラーを回避するために管理するときにバージョン管理を利用することは良い習慣です。

Etckeeper /etc/を使用すると、Git、Mercurial、Bazaar、またはDarcsリポジトリを使用して、バージョン管理メカニズムで簡単に管理できます。デフォルトでは、Etckeeperはgitを使用して/etc/のバージョンリポジトリディレクトリを日単位で維持し、データ損失の可能性を最小限に抑えます。さらに、いつでも手動で変更をコミットできます。

この記事では、CentOS 6サーバーインスタンスにEtckeeperをインストールする方法と、手動でコミットを実行して変更を元に戻す方法を見てみましょう。

前提条件

この記事の手順は、LEMPスタックを備えたVultr CentOS 6インスタンスで検証されました。他のディストリビューションの手順は異なる場合があります。

注:sudo特権を持つ非rootユーザーとしてシステムにアクセスすることは、優れたセキュリティー慣行です。

ステップ1:Etckeeperをインストールする

EtckeeperはEPEL Yumリポジトリに含まれています。Etckeeperをインストールする前に、EPEL Yumリポジトリをセットアップする必要があります。

sudo yum install epel-release
sudo yum update
sudo yum install etckeeper

Etckeeperが正常にインストールされると、gitおよびその他の依存関係が自動的にインストールされます。

にある構成ファイルを編集して、Etckeeperの構成をカスタマイズできます/etc/etckeeper/etckeeper.conf。ただし、デフォルトの設定は適切であり、このチュートリアルではこれを使用します。

ステップ2:/ etcをEtckeeperのgit作業ディレクトリとして構成する

/etc/次のコマンドを実行することにより、Etckeeperをgit作業ディレクトリとして扱うことができます。

cd /etc
sudo etckeeper init

上記の「初期化」サブコマンドは、という名前のファイルが作成されます.gitignoreとという名前のディレクトリ.gitにを/etc/

.gitignoreはファイルの事前定義リストが含まれており、バージョン管理による管理は必要ありません。必要に応じて、ファイル名を必要に応じて追加または削除できます。行# begin section managed by etckeeper...と行の間には、1行に1つのファイル名を入れてください# end section managed by etckeeper

.gitディレクトリは、バージョンのリポジトリ格納する場所である/etc/ディレクトリを。

ステップ3:初期コミットを実行する

最初のコミットの前に、コミットされる内容を確認できます。

sudo etckeeper vcs status | more

vcsEtckeeper のサブコマンドは、バージョン管理ソフトウェア(git)を呼び出して、/etc/ディレクトリで次のサブコマンドを実行します。したがって、上記のコマンドは次と等しくなります。

sudo git -C /etc status | more

を押してspace barページをめくります。バージョン管理すべきでないファイルを見つけたら、それらを.gitignoreファイルに追加します。

これで、/ etcディレクトリのすべてのコンテンツ(で定義したファイルを除く.gitignore)をgitリポジトリにコミットできます。レビューのために、2つの引用符の間に意味のあるコメントを書くことを忘れないでください。

sudo etckeeper commit "Initial config in /etc"

ここでは、gitディレクトリを圧縮してディスク領域を節約できます。

sudo etckeeper vcs gc

ステップ4:/ etcに変更を加えた後、別のコミットを実行する

gitと組み合わせると、Etckeeperは/etc/、ファイルの追加、変更、削除などのディレクトリで発生したすべての変更、およびファイルとディレクトリの所有権や権限の変更を記録できます。/etc/該当するものはすべてバージョン管理ポリシーに該当します。

/etc/バージョン管理下にあるからといって、それに対して何らかの操作を実行できるわけではないことに注意してください。深刻な誤動作により、Etckeeperが構成を動作状態に復元する前にシステムが操作不能になる可能性があります。

テストの目的では/etc/、新しいファイルの追加、でのホスト名の変更、/etc/hostsYumを使用した新しいソフトウェアのインストールなど、への安全な変更のみを行う必要があります。

たとえば、次の場所にファイルabcdeを追加します/etc/

sudo touch /etc/abcde

次に、ファイルに次の行192.168.0.2 desktopを追加し/etc/hostsます。

echo '192.168.0.2 desktop' | sudo tee -a /etc/hosts

最後に、「commit」サブコマンドを再度実行できます。

sudo etckeeper commit "add a file /etc/abcde and add a line to /etc/hosts"

ステップ5:変更を取り消す

まず、gitの履歴を確認して、各コミットのIDとコメントを取得します。

sudo etckeeper vcs log

次に、コミットIDの最初の数ビットでコミットの詳細を確認できます。ここでは、最初のコミットIDは7f5bff、2番目のコミットIDはであると想定してい1aa658ます。

sudo etckeeper vcs show 1aa658

押しjて下に移動、押しkて上に移動、入力/keyword<Enter>して検索、押しqて終了します。

3番目に、2つのコミットの違いを次のコマンドで比較することもできます。2つのコミットのシーケンスに注意してください。自然なシーケンスでは、前者を後者の前に置きます。

sudo etckeeper vcs diff 7f5bff..1aa658

これで/etc/hosts、最初のコミットと2番目のコミットの間にホスト名を誤って構成したことがわかりましたが、ファイルの追加は/etc/abcde正しい操作/etc/hostsであり、次のコマンドを使用してファイルのみの変更を取り消すことができます。

sudo etckeeper vcs checkout 7f5bff /etc/hosts

最初のコミットと2番目のコミットの間のすべての変更を取り消す場合は、次のコマンドを使用できます。

sudo etckeeper vcs checkout 7f5bff

もちろん、2番目のコミットに戻ることもできます。

sudo etckeeper vcs checkout 1aa658

結論

Etckeeperを適切に構成すると、システムをより確実に調整および保守できます。それでも、バージョン管理はバックアップとは異なり、/etc/気になるのはディレクトリだけではないことに注意してください。システムを正常な状態に保つには、バージョン管理メカニズムに加えて、定期的にシステムをバックアップする必要があります。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Debian、CentOS、およびFreeBSDでSudoを使用する方法

Debian、CentOS、およびFreeBSDでSudoを使用する方法

LinuxおよびUnixのシステム管理者の間では、sudoユーザーを使用してサーバーにアクセスし、コマンドをルートレベルで実行することは非常に一般的です。sudの使用

CentOS 7へのNetdataのインストール

CentOS 7へのNetdataのインストール

別のシステムを使用していますか?Netdataは、リアルタイムのシステムメトリックモニタリングの分野における新星です。同じ種類の他のツールと比較すると、Netdata:

CentOS 7にJust Cause 2(JC2-MP)サーバーをインストールする方法

CentOS 7にJust Cause 2(JC2-MP)サーバーをインストールする方法

このチュートリアルでは、Just Cause 2マルチプレイヤーサーバーのセットアップ方法をよく学びます。前提条件開始する前に、システムが完全に更新されていることを確認してください

CentOS 7にStarbound Serverをインストールする方法

CentOS 7にStarbound Serverをインストールする方法

別のシステムを使用していますか?このチュートリアルでは、CentOS 7でStarboundサーバーをセットアップする方法を説明します。前提条件このゲームを所有している必要があります。

CentOS 8、Ubuntu 18.04、Debian 10、Fedora 31にGolang 1.13をインストールする方法

CentOS 8、Ubuntu 18.04、Debian 10、Fedora 31にGolang 1.13をインストールする方法

Go(Golangとも呼ばれます)は、静的に型付けされ、コンパイルされた、Cのようなプログラミング言語で、Googleによって開発されました。シンプルさと多用途性により、b

CentOS 7にDjangoをインストールする方法

CentOS 7にDjangoをインストールする方法

Djangoは、Webアプリケーションを作成するための一般的なPythonフレームワークです。Djangoを使用すると、ホイールを再発明することなく、アプリケーションをより速く構築できます。あなたが望むなら

CentOS 7 LAMP VPSにTextPattern CMSをインストールする方法

CentOS 7 LAMP VPSにTextPattern CMSをインストールする方法

別のシステムを使用していますか?TextPattern CMS 4.6.2はシンプルで柔軟な無料のオープンソースコンテンツ管理システム(CMS)であり、Webデザイナーが

CentOS 7にElggをインストールする

CentOS 7にElggをインストールする

別のシステムを使用していますか?Elggはオープンソースのソーシャルネットワーキングエンジンであり、キャンパスのソーシャルネットワークや

CentOS 7にFroxlor Server Management Panelをインストールする方法

CentOS 7にFroxlor Server Management Panelをインストールする方法

Froxlorは、オープンソースの無料で軽量かつ強力なサーバー管理パネルであり、Webホスティングサービスの確立と管理に最適です。ティ

CentOS 7でMatrix SynapseとRiotを使用してチャットサーバーを作成する

CentOS 7でMatrix SynapseとRiotを使用してチャットサーバーを作成する

Matrixは、分散型リアルタイム通信用のオープンスタンダードの通信プロトコルです。マトリックスは、上記に分散されているホームサーバーとして実装されています

CentOS 7にVtiger CRM Open Source Editionをインストールする方法

CentOS 7にVtiger CRM Open Source Editionをインストールする方法

Vtiger CRMは、企業が売り上げを伸ばし、顧客サービスを提供し、利益を増やすのに役立つ人気の顧客関係管理アプリケーションです。私

CentOS 7にPufferPanel(無料のMinecraftコントロールパネル)をインストールする方法

CentOS 7にPufferPanel(無料のMinecraftコントロールパネル)をインストールする方法

はじめにこのチュートリアルでは、Vultr VPSにPufferPanelをインストールしてください。PufferPanelは、オープンソースで自由に使用できるコントロールパネルで、あなたを管理します

PHPを5から7に更新する方法(NGINX / Apache、CentOS 7)

PHPを5から7に更新する方法(NGINX / Apache、CentOS 7)

はじめにこのチュートリアルでは、NGINXまたはApacheを使用してPHP 5 *を7に更新する方法について説明します。前提条件始める前に、リポジトリを追加する必要があります

CentOS 7にMoinMoinをインストールする方法

CentOS 7にMoinMoinをインストールする方法

MoinMoinは、Pythonで書かれたオープンソースのファイルシステムベースのWikiエンジンです。今日、MoinMoinはオープンソースコミュニティで広く使用されています。多くのベンダー

CentOS 7にSonarQubeをインストールする方法

CentOS 7にSonarQubeをインストールする方法

別のシステムを使用していますか?SonarQubeは、品質システム開発のためのオープンソースツールです。Javaで書かれており、複数のデータベースをサポートしています。それは提供します

CentOS 7へのPritunlのインストール

CentOS 7へのPritunlのインストール

PritunlはOpenVPNのオープンソース管理インターフェイスです。プライベートネットワークが可能で、ネイティブIPv6サポートがあり、使用方法は比較的簡単です。ター

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。