ホーム > ドミノサーバーロータスノーツのチュートリアルロータスロータスノーツのWindowsディレクトリをバックアップする>ウェイ

Lotus NotesのWindowsディレクトリをバックアップする方法

ここでパーを破る時、私たちはバックアップマシンにすべての私達の顧客のHTMLファイルのバックアップを毎日行う。 バックアップは、変更されたすべてのファイルをコピーするXCOPYコマンドを使用して、Windowsのバッチファイルを使用して行われました。 我々ははるかに思考することなく長い間、これをやっている。

最近、我々は、ディレクトリを見ていたし、メインディレクトリに存在しなかったバックアップサブディレクトリ内の余分なファイルがあったに気づいた。 いくつかの研究の後、我々は、ファイルは、メインディレクトリ内で削除し、サブディレクトリに削除されなかったことが判明。 少し研究した後、我々は、Windowsのバッチファイルを使用して真のバックアップを取得する方法を考え出すことができた。


すべてのこれらのステートメントは、Windowsスケジューラ(またタスクをスケジュールするには、コマンド"で"Windowsを使用することもできますが、スケジューラは、スケジュールされたタスクへのグラフィカルインタフェースを提供)を通じて予定されているWindowsのバッチファイル(拡張子。BAT)に入ります。 プログラムは、バックアップサーバ上でスケジュールされています。

最初のステートメントでは、ネットワークドライブをマッピングすることにより、運用サーバーに接続します。

は、net use P:\ \ production_server \ data_share_name my_passwordという/ USER:管理者なし/ PERSISTENT:いいえ

pは:バックアップサーバ(バッチファイルが実行される場所)で使用されるドライブ文字を示します。
production_serverは、運用サーバーのホスト名(IPアドレスを使用することができる)です。
data_share_nameは、運用サーバー上のデータディレクトリの共有名(顧客HTMLファイルが格納されている場所)です。 これは、共有に与えられた名前です - には、Windowsに付属するデフォルトの共有(C $など)は使用しないでください。 代わりに、独自の共有を定義し、その共有にアクセスできるユーザを指定する。
my_passwordということは非常に重要にログインするユーザーのために必要なパスワードです - パスワードは、バッチファイルに記載されています。 これにより、またはご使用の環境にセキュリティ上の問題であってもなくてもよい。
/ USER:管理者は、共有にアクセスするユーザー名です。 これは、運用サーバー上のHTMLのディレクトリへの読み取りアクセス権を持っているIDでなければなりません。 実際に"管理者"に名前は必要ありません - 実際に、私はあなたが(パスワードはバッチファイルで探している人に丸見えになっている、特に以来)このプロセスの管理者ユーザー名を使うべきではないということでしょうね。 あなたがHTMLのディレクトリへの読み取り専用アクセス権を持つIDを使用する場合、問題の限りないです。
/ PERSISTENT:なしドライブがログイン時に自動的に再接続しないことを示す。 このドライブは、バッチファイルの期間中に使用されようとしています。

ドライブがマップされた後、次のステップは、バックアップのHTM​​Lディレクトリに生産HTMLディレクトリからのすべてのファイルをコピーすることです。

XCOPY P:\ HTML \ *.* E:\ HTML \ *.* / E / D / C / Q / Y

P:\ HTML \ *.*のソースディレクトリ(マッピングされたドライブ上のディレクトリ)です。 我々は、すべてのファイルをコピーされます。
E:\ HTML \ *.*コピー先のディレクトリです。
/ Eは、我々は空のサブディレクトリを含む、ディレクトリおよびサブディレクトリをコピーされることを示します。
/ Dは、特定の日付以降のファイルをコピーすることだ。 実際の日付が指定されていないので、それは先の日付が元の日付よりも古いファイルがコピーされます。 これはまさに私たちがバックアップのために望むものである - 唯一の本番サーバー上で変更されたファイルをコピーします。
/ Cエラーが発生してもコピーを続けることだ。
/ Qは"quiet"モードを示している - ファイル名がコピー中に表示されません。 バッチファイルは、Windowsのスケジュールタスクとして実行されているので、ファイル名を表示する必要はありません。
/ Yは、ファイルが上書きされているときに要求されないようにコピーを指示します。

今トリッキーな部分が来る。 我々は、運用サーバー上にもはやないバックアップサーバからファイルやディレクトリを削除する必要があります。 2番目の第1のファイルとディレクトリ - これは、2段階で行われます。 各フェーズは、3つのステップがあります。

DIR E:\ HTML \ *.* /:- D / B / O:N / S>> E:\ FileList.txtに

これは最初のステップです。 バックアップのHTM​​Lディレクトリ内のすべてのファイルのディレクトリ一覧を作れます。
/:- Dはディレクトリが含まれるようにされていないという。 そこで、ファイルのみを含むています。
/ Bは、ファイル名(の代わりにファイルのサイズおよび他の原料の多くを示し、通常のディレクトリリストの)のみ表示されます。
/ O:N種類のアルファベット順にファイル名。
/ Sを通過するサブディレクトリ。
>> E:\ FileList.txtに電子と呼ばれるファイルへの出力をリダイレクト:\ FileList.txtに。

ここで第一段階第二段階は、次のとおりです。

/ Fのための"トークン= 2、* delims = \"の%%のE(E:\ FileList.txtに)は、pを存在しない場合:\ HTML \%の%fはデルE:\ HTML \%%fを

このステートメントは、先ほど作成したファイルにリストされているすべてのエントリを通ります。 ファイルは、運用サーバー上に存在する場合は知ります。 ファイルは、本番サーバー上に存在しない場合は、バックアップサーバから削除されます。
/ F用のバッチプログラミングのループ文の特殊なタイプです。 それは、テキストフ​​ァイル内のすべての行(括弧内はファイル名)を通過します。
= 2のトークンを、*は読み込まれるテキストフ​​ァイルからなるトークン("トークン"は、後で詳細に説明する)を指定します。 2は2番目のトークンの読み取りによると、*は2番目のトークンの後にすべてのものを取ることだ。 これら2つの値(2番目のトークンの後に2番目のトークンとすべてが)の変数に置かれます。
delims = \トークンを定義するための区切り文字を指定します。 ディレクトリからのエントリは、電子のようになります:\ HTML \ file1.htmまたはe:\ HTML \ subdir1 \ file2.htm。 "\"文字がトークンに文字列を分割するために使用されます。 第1トークンがeになるように:、2番目のトークンは、htmlになり、すべてが2番目のトークンの後に二番目の例では最初の例およびSubdir1 \ file2.htmにfile1.htmなります。 第二の例では、以前に区切り文字である"\"は、今や文字列の一部であることに注意してください。 *はトークンステートメントで使用されているためです。
%の%eは変数名を指定します。 それがバッチファイル内なので二%記号が使用されます。 コマンドプロンプトウィンドウでこれをテストしていた場合、その後は1つだけ%記号を使用する必要があります。 最初の%記号は"エスケープ"文字(単にNotesの式言語では"\"のような)です。 変数が作業方法、この手紙は、最初の変数("トークン="の最初の部分)を指定し、他のすべての変数が順番に名前が付けられます。 ので、2番目のトークンは、"%fは"と呼ばれる変数に入るであろう2番目のトークンの後に"%eの"変数とすべてのものに入ります。
の(E:\ FileList.txtに)これらは/ F文のによって必要とされるそう。 ファイル名は括弧内です。
テキストフ​​ァイルの各行に存在しない場合、我々は、ファイル名の存在を確認してみます。 我々は、ファイルが存在しないかどうかを確認したい。
P:\ HTML \%の%fは、これは我々が探しているファイルです。 上記の説明我々は"%fは"変数を使用している方法に注意してください。 また、再び我々は、バッチファイル内で"%%"を使用する必要があることに注意してください。 したがって、上記の最初の例では、我々はpをチェックされます:\ HTML \ file1.htm、2番目の例では、我々はpをチェックされます:\ HTML \ subdir1 \ file2.htm。 これは、トークンに"*"を使用する利点は、実際に現れる場所です。 深いファイルが置かれている方法の多くのサブディレクトリに関係なく、すべてのスラッシュは含まれません。 我々は正確なトークンを指定した場合は、ネストされたサブディレクトリともっと複雑になるだろう。
デルE:\ HTML \%の%fは、本番サーバー上に存在しない場合、バックアップサーバからファイルを削除するという。 再び、"%の%fは"同じように動作します - 変数が使用されています。

第一段階の最後のステップでは、我々は今それが処理されたことを一時ファイルを削除します。

デルE:\ FileList.txtに

次の段階では、同じ3つの手順を取りますが、サブディレクトリに適用されます。 私はちょうど3つの文を列挙し、(青で)異なっている文を強調表示します:

DIR E:\ HTML \ *.* / A:D / B / O:N / S>> E:\ FileList.txtに
/ Fのための"トークン= 2、* delims = \"の%%eは(E:\ FileList.txtに)pをが存在しない場合行う:\ HTML \%の%fはrmdirコマンドのe:\ HTML \%%fを
デルE:\ FileList.txtに

この時間を通して、我々は唯一のサブディレクトリのテキストフ​​ァイルのリスト(:D /)にします。 ディレクトリは、運用サーバー上に存在しない場合は、バックアップサーバからディレクトリを削除します。

最後に、ファイルがコピーされ、削除されたファイルは、バックアップサーバから削除された後、バッチファイルの最後の文では、マップされたネットワークドライブを切断します。

は、net use P:/ DELETE

以前に指定したのと同じドライブ文字を使用し、/ DELETEステートメントは、ドライブを切断することを意味する必要があります。

そうすることは、私たちのバッチファイルです。 それは、災害復旧を目的として生産HTMLディレクトリの複製を持っている(またはより頻繁に、あなたがプログラムを介してバッチファイルを実行する頻度に応じて)毎日のようにバックアップサーバを可能にします。

2164視聴者が7413回閲覧

  1. 13:19 2010年6月10日| #1

    素晴らしい仕事! これはウェブ上で共有されるべき情報のタイプです。 より高いこの記事を配置しないための検索エンジンでの恥!

  2. ジェームズG Despain
    05:07 2010年12月25日| #2

    私は本当にあなたのポストが大好きです。 このblogpostが他の人々を助けることを願っています。 ショートレビューのため申し訳ありません。

  1. トラックバックはまだありません。