CentOS 5 でバックアップ用にサーバーのスナップショットを作成するにはどうすればよいですか?

CentOS 5 でバックアップ用にサーバーのスナップショットを作成するにはどうすればよいですか?

私は VPS から専用サーバーに移行しています。残念ながら、ほとんどの専用サーバーはマネージド VPS のようなサーバー バックアップを提供していません。何か問題が発生した場合 (以前にも問題がありました)、すべてのスクリプト/ファイルのバックアップがあるという安心感は非常に気に入っています。

そこで質問なのですが、同じサーバー上の異なるフォルダーに保存されている特定のディレクトリの「スナップショット」を毎日作成することは可能でしょうか。

当然ながら、これらのバックアップは外部災害から保護するものではありません。私が求めているのは、悪意のあるスクリプトやハッキングなどによって引き起こされる損害からの保護です。

答え1

おそらく、Webmin のようなものを探しているのでしょう:http://webmin.com/

これは私の CentOS サーバー セットアップの必須部分です。インストールは非常に簡単で、特にバックアップなどのサーバー管理が楽になります。こちらのドキュメントをご覧ください:http://doxfer.webmin.com/Webmin/ファイルシステムバックアップ

答え2

悪意のあるスクリプトやハッキングなどによる損害から保護するために、同じサーバー上の別のフォルダーに保存されている特定のディレクトリの「スナップショット」を毎日作成することは可能ですか。

はい、いずれか多くのリビジョン管理ソフトウェアツールそれはまさにそれを実行します。

私は Mercurial ("hg") を、美しい GUI の TortoiseHg フロントエンドと組み合わせてよく使用します。

私のサーバーの多くには、設定ファイル、テンプレート、カスタム サーバー側 cgi-bin スクリプト、カスタム ブラウザー側 .js スクリプト、.html コンテンツなど、バックアップしたいすべてのものを含む 1 つのフォルダー (*) (おそらく「/var/www/」) が存在します (マシン上のその他のものはすべて、定型的なオペレーティング システムとアプリケーションのものです。それらが破損した場合、使用していた古い、廃止されたバージョンに戻すのではなく、それらを消去して最新バージョンをインストールするでしょう)。

最初にセットアップするときは、そのフォルダにcdして1回限りのセットアップを行います

hg init
hg add
hg commit -u dc -m "initial setup"

「init」行は「.hg/」フォルダを作成します。このフォルダには、将来圧縮されたスナップショットが保存されます。(これが、人気のある Mercurial チュートリアルの名前の由来です。http://hginit.com/)。デフォルトでは、「add」行と「commit」行は、サブサブフォルダのネストがどれだけ深くても、そのフォルダ内のすべてのファイルをスキャンし、「.hg/」フォルダに(圧縮された)コピーを配置します。

作業ファイルに損傷やその他の変更が疑われる場合(すべてのスナップショットを含む「.hg」フォルダが損傷していないと仮定した場合)、次のように入力します。

hg status

これは、サブサブフォルダの階層が深くても、どのファイルが変更されたかを正確に教えてくれるので、次のように入力します。

hg diff

これにより、各ファイルで何が変更されたかが正確にわかります。

見たものが気に入らない場合(悪意のある改変、またはもっと一般的には、自分で行ったことを後悔している愚かな編集など)、私は次のように入力します。

hg revert --all

すべての変更を最新のコミットに戻します。

もし私がする私が見たところ、実際に改善した点がいくつかあります。

hg add
hg commit -u dc -m "tweaked .htaccess so we now have Clean URLs."

コメントには、なぜこれらの変更を加えたのかを記載してください。(元に戻す方法もあります)いくつかのファイルのコミットのみいくつかのファイルのコミット方法や、いくつかの1 つのファイルに加えられた多数の変更点 (詳細についてはドキュメントを参照してください)。

おそらく、次のようなことを毎日実行するcronジョブの方が良いでしょう。

hg add
hg commit -u mr_backup -m "cron automated snapshot of the server."

これまでにコミットされたすべてのバージョンの圧縮スナップショットは、「.hg/」フォルダに保存されます。コミットされたバージョンに戻すには、「hg update」コマンドを使用します。最初のコミットと 2 番目のコミットの間で何が変更されたかを正確に確認するには、「hg diff -r 1:2」コマンドを使用します。

より複雑な状況

(*) バックアップしたいフォルダは 1 つだけであることが多いです (「/var/www/」)。ただし、状況がもっと複​​雑な場合もあります。バックアップしたいファイルがさまざまなフォルダに分散していて、それらの間で共通するフォルダはルート フォルダ「/」のみで、「.hg/」リポジトリをルート フォルダ「/.hg/」に置きたくない場合があります。

おそらくもっと良い対処方法があると思いますが、私が今やっていることは次のとおりです。

  • バックアップしたいすべてのファイルに対して読み取り専用権限を持つ「MrBackup」という名前の特別なユーザーを作成します。
  • バックアップしたいすべてのフォルダが /home/mr_backup のサブフォルダとして表示されるように設定しました。現在は、以下のフォルダがランダムに混在しています。
    • 一部のファイルは実際には MrBackup のホーム フォルダーにあり、それらのファイルが「必要な」別の場所にはソフト リンクがあります。
    • 一部のファイルには、そのファイルが「必要な」場所と、MrBackup のホーム フォルダー内のどこかの両方にハード リンクが存在します。
    • cron スクリプトは、定期的に「ライブ」場所から MrBackup のホーム フォルダー内のバックアップ フォルダーにいくつかのファイルをコピーし、別のサーバーから SQL データベースを MrBackup のホーム フォルダー内のダンプ ファイルにダンプし、cron スクリプト自体のバックアップも作成します (「crontab -l > /home/mr_backup/backup/crontab.txt」)。
  • 多くの場合、必要に応じて自動的に再生成されるためバックアップする必要のない「cache/」サブフォルダを除いて、フォルダ P 内のほぼすべてをバックアップする必要があります。cache サブフォルダを除外するには、「.hgignore」を使用します。
  • 次に、上記のように Mercurial を使用します。
  • cron スクリプトによって生成されたファイルが正しくない場合は、元に戻した後、何らかの方法で「適切なバージョン」を「ライブ」の場所にプッシュバックするための追加の手順を実行する必要があります。

追伸:私のサーバーとは別の都市にあるマシンで、時々TortoiseHgワークベンチを起動して、裏で実行される小さなボタンをクリックします。

hg pull

(そして、Mr Backup のパスワードを尋ねられます) リポジトリにコミットされたすべてのもののオフサイト バックアップを取得します。

通常は、本番サーバーでライブ編集するよりも、他のマシンで編集してからコミットして

hg push

それを本番サーバーにアップロードします。

「.hg/」フォルダは、必要なファイルのみを保存するため、非常にゆっくりと大きくなり続けます。変化コミットごとに変更が行われ、比較的小さな変更セットであっても保存される前に圧縮されます。

この緩やかな成長に対処するにはおそらくもっと良い方法があるでしょうが、私が現在行っているのは次のことです。

現在のバージョンを「hg commit」してオフサイト バックアップ マシンに「hg pull」した後、年に 1 回、サーバーの「.hg/」フォルダを削除し、「hg init」を使用して新しい空の「.hg/」フォルダを作成し、現在のバージョンをコミットします。(2014 年のオフサイト バックアップ リポジトリの最後のバージョン)すべき2015 年のオフサイト バックアップ リポジトリの最初のバージョンと同一である必要があります。

関連情報