バックアップ、Git、Aptの使用方法-LinuxVPSで変更を元に戻す

提供:Dev Guides
移動先:案内検索

序章


Linuxコマンドラインを学習するときによくある警告は、「元に戻す」コマンドがないことです。 これは、rmコマンドを使用してファイルを削除する場合などに特に関係がありますが、あらゆる種類の状況に影響します。

このガイドでは、コマンドラインで行われた変更を「元に戻す」ためのいくつかの方法について説明します。 単一の戦略はありません。そのため、関連するプログラムと手法は、何を防ごうとしているのかによって異なります。 いくつかの明白なアイデアから始めて、前進します。

これらはUbuntu12.04システムに実装しますが、ほとんどのLinuxディストリビューションとバージョンは、ほとんど調整することなく提案を実装できるはずです。

ファイルの変更を元に戻す


誤って変更された(または削除された)ファイルを復元する唯一の方法の1つは、そのファイルの余分なコピーを手元に用意することです。 そのオプションがあることを確認するいくつかの方法について説明します。

バックアップ


もちろん、サーバーで行われた変更を元に戻すことができる最も簡単で安全な方法は、重要なファイルに対して定期的な定期バックアップを実行することです。

Linuxシステムで利用できるバックアッププログラムは多数あります。 バックアップのインストールと構成の方法に関するガイドは、こちらにあります。 ツール間の違いを調べて、ニーズに最適なツールを見つけることが重要です。 同様に重要なのは、バックアップを定期的に検証して、バックアップが実行したいことを実行していることを確認することです。

バックアップは、サーバーへの損傷を復元するための非常に完全な方法を提供します。 コピーされたデータがリモートの場所に保持されている限り、データ全体の破損または削除を処理できます。

さまざまなレベルのバックアップには、完全バックアップ(すべてのデータを完全にバックアップ)、差分バックアップ(最後の完全バックアップ以降に変更されたすべてのファイルをバックアップ)、および増分バックアップ(最後の完全バックアップまたは差分バックアップ以降にファイル内のデータ変更をバックアップ)が含まれます。 。

これらのレベルの組み合わせは、毎回完全バックアップを実行するオーバーヘッドなしにファイルを完全にバックアップするために、互いに連携して使用されることがよくあります。

多くの場合、ファイルシステム全体を復元しなくても、個々のファイルを復元できます。 これは、誤ってファイルを削除または変更した場合に特に便利です。

DigitalOceanは、サーバー全体を定期的に自動的にバックアップするバックアッププランを提供します。 ページの下部にあるチェックボックスをオンにすることで、ドロップレットを作成するときにこれを有効にできます。

バージョン管理


バックアップにいくぶん似ている戦略はバージョン管理です。 コンピュータ全体をバックアップするための理想的なソリューションではありませんが、単にファイルを以前の状態に戻そうとしている場合は、バージョン管理がまさにあなたが探しているものである可能性があります。

gitmercurialなどのバージョン管理システムを使用すると、ファイルへの変更を追跡できます。 つまり、/etcなどの構成ディレクトリをバージョン管理下に置くと、何かを壊すような変更を加えた場合に、変更を簡単に元に戻すことができます。

サーバーでgitを使用する方法をカバーする記事がかなりあります。

簡単に言うと、次のコマンドを使用してGitをUbuntuにインストールできます。

sudo apt-get update
sudo apt-get install git

インストールが完了したら、次のように入力して、いくつかの構成オプションを設定する必要があります。

 git config --global  user.name  「 your_name 」gitconfig--globaluser.email「 your_email 」

これが完了したら、変更を追跡するディレクトリに変更します。 この例では、/etcディレクトリを使用します。 バージョン管理下に置くもう1つの良い場所は、ホームディレクトリです。 次のように入力して、gitリポジトリを初期化できます。

cd /etc
sudo git init

次に、次のように入力して、このディレクトリ(およびサブディレクトリ)内のすべてのファイルを追加できます。

sudo git add .

次のように入力して、変更をコミットします。

git commit -m "Initial commit"

これで、ファイルはバージョン管理下に置かれます。 このディレクトリ内のファイルに変更を加えるときは、最後の2つのコマンドを再実行する必要があります(「初期コミット」の代わりに別のメッセージを使用)。

次に、ログからコミットハッシュを見つけることにより、ファイルを以前の状態に戻すことができます。

git log

コミット7aca1cf3b5b19c6d37b4ddc6860945e8c644cd4f作成者:root  root @ localhost 日付:2014年1月23日木曜日13:28:25 -0500
again

コミット4be26a199fd9691dc567412a470d446507885966作成者:root root @ localhost 日付:2014年1月23日木曜日13:20:38 -0500

initial commit

次に、次のようなtyipngでファイルを元に戻します。

git checkout commit_hash – file_to_revert

これは、行った変更を元に戻す簡単な方法です。

これは、変更を加えるときに定期的にgitにコミットする準備ができている場合にのみうまく機能することに注意してください。 1つのアイデアは、これを定期的に実行するためにcronジョブを設定することです。

パッケージマネージャーで変更を元に戻す


aptパッケージマネージャーを使用して、元に戻したい変更を加える場合があります。 また、パッケージマネージャーを使用して、パッケージをデフォルト設定に復元することもできます。 これらの状況については、以下で説明します。

Aptを使用したパッケージのアンインストール


時々、あなたはそれがあなたが保持したいものではないことを発見するためだけにパッケージをインストールします。 次のように入力すると、aptでパッケージを削除できます。

sudo apt-get remove package

ただし、これにより構成ファイルはそのまま残ります。 これが必要な場合もありますが、システムからパッケージを完全に削除しようとしている場合は、代わりにpurgeコマンドを次のように使用できます。

sudoapt-getパージパッケージ

これはほぼ完全に同じように動作しますが、パッケージに関連付けられている構成ファイルもすべて削除されます。 これは、パッケージが不要であることが確実な場合、または変更を加えておらず、デフォルトの構成ファイルに依存できる場合に役立ちます。

autoremove aptコマンドを使用して、不要になった自動インストールされた依存関係をアンインストールできます。

sudo apt-get autoremove --purge

aptを使用してパッケージをインストールするときに発生する別の問題は、「メタパッケージ」を正しく削除するのが難しい場合があることです。

メタパッケージは、単に依存関係のリストであるパッケージです。 それらはそれ自体では何もインストールしませんが、プルする他のパッケージのリストです。 また、自動的に完全に削除するのは難しいことでも有名です。

役立つツールの1つは、deborphanパッケージです。 次のようにインストールします。

sudo apt-get install deborphan

メタパッケージを削除した後、orphanerコマンドを実行して、パッケージのアンインストールによって残された孤立を見つけることができます。 これは、通常の方法では削除されないパッケージを見つけるのに役立ちます。

漂遊ファイルを見つける別の方法は、mlocateパッケージを使用することです。 次のようにインストールできます。

sudo apt-get install mlocate

その後、次のコマンドを発行して、ファイルのインデックスを更新できます。

sudo updatedb

次に、パッケージ名を検索して、そのパッケージが参照されているファイルシステム上(aptインデックス以外)に追加の場所があるかどうかを確認できます。

package_nameを見つけます

aptログを確認することで、メタパッケージによってインストールされたパッケージのファイルを確認することもできます。

sudo nano /var/lob/apt/history.log

インストールされたパッケージに関する情報を使用して、不要になった場合は手動で削除できます。

デフォルトファイルの復元


構成中に、構成ファイルを変更して、ディストリビューションによってパッケージ化されたデフォルトのファイルに戻したい場合があります。

現在の構成ファイルをバックアップとして保持する場合は、次のように入力して、邪魔にならないようにコピーできます。

sudo mv file file.bak

問題のディレクトリへの書き込み権限がない場合は、上記のコマンドのsudoが必要です。 それ以外の場合は、そのコマンドを省略できます。

ファイルを削除するか、邪魔にならない場所に移動した後、パッケージを再インストールして、構成ファイルが欠落していないかどうかを確認するようにaptに指示できます。

sudo apt-get -o Dpkg :: Options =“ – force-confmiss” install --reinstall package_name

復元する必要のある構成ファイルがどのパッケージに対応しているかわからない場合は、dpkgユーティリティを使用して次のことを確認できます。

dpkg -S file_name

一部のインストール中に発生する初期パッケージ構成手順を実行して一部の値を変更するだけの場合は、次のコマンドを発行できます。

dpkg- package_nameを再構成します

これにより、プログラムを最初にインストールしたときに発生した構成プロンプトが再起動します。

ファイルのデフォルトのアクセス許可を見つける


別の一般的な状況は、ファイルのアクセス許可を変更するときに発生します。 場合によっては、テスト目的で、または後でそれが悪い考えであることに気付くためだけにいくつかのアドバイスに従っているために、ファイルのアクセス許可を変更します。

どのパッケージがファイルを所有しているかを調べることにより、ディストリビューションによってパッケージ化されたファイルのデフォルトのアクセス許可を見つけることができます。 これを行うには、次のコマンドを発行します。

dpkg-Sファイル名

これにより、そのファイルに関連付けられているパッケージがわかります。 たとえば、/etc/deluser.confファイルのパッケージ所有者を知りたい場合は、次のように入力できます。

dpkg -S /etc/deluser.conf

adduser: /etc/deluser.conf

ご覧のとおり、adduserパッケージがそのファイルを担当していることがわかります。 次に、aptアーカイブに変更することで、そのパッケージの.debファイルを確認できます。

cd /var/cache/apt/archive

このディレクトリには、システムにインストールされている多くのパッケージの.debファイルがあります。 使用しているパッケージに一致するファイルが見つからない場合は、次のコマンドを使用してリポジトリからファイルを再ダウンロードする必要があります。

sudoapt-ダウンロードパッケージを入手

たとえば、adduserパッケージに.debがない場合は、次のように入力して取得できます。

sudo apt-get download adduser

ファイルがそのディレクトリに配置されると、次のように入力して、インストールするファイルのデフォルト属性を照会できます。

dpkg -c file.deb

adduserプログラムの場合、これは次のようになります。

dpkg -c adduser_3.113ubuntu2_all.deb

drwxr-xr-x root / root 0 2011-10-19 18:01 ./ drwxr-xr-x root / root 0 2011-10-19 18:01 ./etc/ -rw-r–r-- root /ルート6042011-10-1918 :01 ./etc/deluser.conf drwxr-xr-x root / root 0 2011-10-19 18:01 ./usr/ drwxr-xr-x root / root 0 2011-10 -19 18:01 ./usr/sbin/ -rwxr-xr-x root / root 35120 2011-10-19 18:01 ./usr/sbin/adduser -rwxr-xr-x root / root 16511 2011-10- 19 18:01./usr/sbin/deluser。 . . 

ご覧のとおり、デフォルトのパッケージが所有者(root)の読み取り/書き込みアクセス権と、他のすべてのユーザーの読み取りアクセス権を設定していることを確認できます。

結論


これで、自分が犯した間違いを元に戻すためのいくつかの戦略があり、緊急時対応計画を立てるために事前に計画する方法についてのアイデアが得られるはずです。 上記のほとんどすべての概念は、あなたが作成したものであれ、ディストリビューションのリポジトリを通じて利用できるものであれ、以前の状態のある種の記録を利用しています。

これは、あなたにとって重要なファイルのコピーを維持することの重要性を強化するはずです。 データファイルであろうと構成パラメータであろうと、システムが正常に機能しているときにシステムがどのように見えるかを追跡することは、問題が発生したときに問題を修復するのに役立ちます。

以下のコメントに、変更を元に戻すためのその他の提案を投稿してください。

ジャスティン・エリングウッド