Windows用の簡単なバックアップ自動化

バックアップの問題は、彼に委ねられた貴重なサービス文書/データベース/その他のファイルの安全性を担当するすべての専門家にとって懸念事項です。 さまざまな不可抗力に直面した場合に自信を持たせるために、重要なデータを定期的にバックアップする必要があります。 過労や家庭ユーザーのために獲得した保存の問題も急務ではありません。

この問題の解決に役立つシンプルだが効果的なスクリプトを提供します。







初期条件があります:

オペレーティングシステム:MS Windows XP、2003など。

バックアップオブジェクト:ローカルドライブとネットワークドライブにあるフォルダーとファイルは最大200 GBの容量。

予算:0 rub。;

プロセスをセットアップするために特別に訓練された従業員の数:1人。

プロセスを保守するために特別に訓練された従業員の数:0人



タスク:データの毎日の完全バックアップ、作成されたバックアップの指定された数の保存、オペレーターの介入なし。



インターネット上で、同様の問題を解決するかなり多数の異なるプログラムを見つけることができます。 タスクと設定条件に従って、次のプログラムが見つかり、インストールされ、戦闘に近い条件でテストされました:Cobian Backup(9、10)、Toucan、Areca、FBackup、Backup2Net、Samsung Auto Backupバックアッププログラム(同じリムーバブルドライブに付属) 。



作業ボリュームのデータでプログラムのデータをテストしたところ、必要なボリュームのデータの毎日のバックアップを自動的に作成するという単純なタスクに対処できないことが明らかになりました。 問題は、予約の準備段階とその進行の両方で発生しました。

Cobian Backup 10は最長(約1週間)続きましたが、その後放棄されたものに入り、頑固に約600 MBのデータのみのバックアップを開始し、ログに大量のエラーが記録されました。 残念ながら、シャドウコピーとアーカイブの設定を操作しても何も起こりませんでした。一般に、プログラムはかなり良い印象を残しましたので、使用することをお勧めします(特定の条件下で安定して動作する場合)。

このプログラムはオープンソースソフトウェアに関連しているため、オオハシは特に希望がありました。 しかし、悲しいかな、希望は実現しませんでした。 さまざまな段階でのタスクの過程で、プログラムは受け入れられない操作とそれを閉じる必要があるという典型的なエラーで失敗しました(プログラム)。

残りの選考参加者も、さまざまな理由で私には向いていませんでした。 これらのプログラムのテストプロセスをより詳細に明らかにすることにはあまり意味がありません。 これは、この記事を書く目的とは直接関係ありません。

したがって、問題の無料の解決策を見つけるという単純なアイデアは惨めに失敗しました。 無料の商用アプリケーションのためにWebをさらに歩き回るには、強さも、欲望も、希望も、バックアップも絶対に必要だったため、独自の何かを構築するという自然な決定/欲求が生じました。 かなり短期間のリフレクションの結果は、通常のbatスクリプトと標準スケジューラーを使用したデータバックアップの簡単な自動化のために以下に提案されたソリューションでした。 スクリプトは「そのまま」と言うように機能し、追加のテストとデバッグは必要ありません。入力データを提供し、プロセスに参加するディレクトリを事前に作成するだけで済みます(簡単にするため、この主題のチェックはありません)。

すぐに使用できるソリューションのレイアウトについての多くの不満を予想して、私たちの仲間の多くは、標準のWindowsコマンドラインの構文を理解するために必要なものを入力したいという願望/時間/機会/才能を持っているとは言いたくない。 また、少なくとも数人の若くて環境に優しい管理者が、この分野研究することの疑いのない無用さに目を向けるというゼロでない確率をあえて指摘します。



それでは、始めましょう。 最初に、コメントなしでスクリプトの全文を提供します。 コメント付きの完全な議論については、以下を参照してください。



@Echo Off

echo %date% %time% ***Start***

SetLocal EnableDelayedExpansion

Set $SRC=list_add.txt

Set $EXC=list_excl.txt

Set $DST=D:\backups

Set $PSW=password

Set $COMPR=1

Set $COPIES=7

C:\"Program Files"\7-Zip\7z.exe a -t7z -mhe=on "%$DST%\files%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%.7z" @%$SRC% -scsWIN -p%$PSW% -mx=%$COMPR% -ssw -xr@%$EXC% >> log_7z.log

For /F "Delims=" %%i In ('DIR /B/O:-N %$DST%\files????-??-??_??-??-??.7z') Do (

Set /A $COPIES-=1

If !$COPIES! LSS 0 DEL "%$DST%\%%i"

)

echo %date% %time% ***End***








スクリプトの毎日の作業の結果は、次のような必要なデータのバックアップセットになります。

dir d:\backups\



files2010-07-12_22-00-00.7z

files2010-07-13_22-00-00.7z

files2010-07-14_22-00-00.7z

files2010-07-15_22-00-00.7z

files2010-07-16_22-00-00.7z








コメント付きの約束された分析。



@Echo Off ::

echo %date% %time% ***Start*** ::

SetLocal EnableDelayedExpansion :: .








通常、環境変数の値を決定するには、%variable%構造を使用する必要があります。 ただし、変数の値がループ内で変更され、そこで読み取られる場合、batファイルが正しく機能するには、SetLocal EnableDelayedExpansionコマンドを使用し、「%」記号の代わりに「!」記号を使用する必要があります。 そうでない場合、ループ内の変数の値は常に同じになります-ループに入る前と同じです。



さらに、提案されたスクリプトを正常に動作させるには、次の入力パラメーター(変数)を設定する必要があります。



$SRC=list_add.txt ::-

$EXC=list_excl.txt ::-

$DST=D:\backups ::

$PSW=password ::

$COMPR=1 :: 7zip (1= , 5= , 9=-, 0= )

$COPIES=7 ::








次の行は、 list_excl.txt除外ファイルで指定されたファイルを除き、 list_add.txtファイルにリストされている7-Zipファイルとフォルダーを使用してアーカイブを開始します



C:\"Program Files"\7-Zip\7z.exe a -t7z -mhe=on "%$DST%\files%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%.7z" @%$SRC% -scsWIN -p%$PSW% -mx=%$COMPR% -ssw -xr@%$EXC% >> log_7z.log







この行をさらに詳しく分析してみましょう。



C:\ "Program Files" \ 7-Zip \ 7z.exe :: 7-Zipアーカイバーの実行可能ファイルの場所(より正確にはコンソールバージョン)を指定します。



::は、ファイル/フォルダーをアーカイブに追加するコマンドです。



-t7z ::キーは、作成されるアーカイブのタイプを設定します= 7z;



-mhe = on ::アーカイブのアーカイブヘッダーとファイル/フォルダー名のパスワード暗号化を有効にします。



%$DST%\files%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%.7z





チームは、 「D:\ backups \ files2010-07-12_22-00-00.7z」という形式のアーカイブのフルパスとファイル名を動的に生成します。名前にはアーカイブの日付と時刻が含まれます。



@%$ SRC% ::アーカイブされたデータのリストの名前を設定します;%$ SRC%の代わりに、スクリプトはファイルの名前を置き換えます;



-scsWIN ::リストファイルのwinエンコーディングを設定します。



-p%$ PSW% ::キーはアーカイブを暗号化するためのパスワードを設定します。%$ PSW%の代わりに、スクリプトはパスワードのテキスト文字列を置き換えます。



-mx =%$ COMPR% ::キーはアーカイブデータの圧縮率を設定します。



-ssw ::キーは、アプリケーションが書き込み用に開いたファイルをアーカイブできるようにします。



-xr @%$ EXC% ::アーカイブプロセスから除外されるデータのファイルリストの名前を設定します。r=は、 %$ EXC%の代わりにサブフォルダーを除外することを意味しスクリプトはファイル名を置き換えます。



>> log_7z.log ::文字>>は、画面(標準ストリーム)からlog_7z.lo gファイルへの行全体として表示されるメッセージのリダイレクトを示します。これは、スクリプトの後続の分析に便利です。



スクリプトのこの部分は、 $ COPIES変数で指定された量に従って、すでに不要なデータアーカイブの自動削除を行います。



For /F "Delims=" %%i In ('DIR /B/O:-N %$DST%\files????-??-??_??-??-??.7z') Do (

Set /A $COPIES-=1

If !$COPIES! LSS 0 DEL "%$DST%\%%i"

)








さらに詳細に分析します。 自動削除は、アーカイブファイルの名前のセット(多く)がソートされるサイクルを編成することにより実装されます(形成方法-少し下のDIR行を参照してください...

一般的に、サイクルの形式は次のとおりです。for / F [“ Keyword Processing”] {%% | (多くのファイル名)の%}変数doコマンド[コマンドラインパラメーター]

/ Fスイッチは、ループが「ファイル名のセット」セットのすべての要素を解析することを決定します。

「キーワード」 -分析対象のセットの要素間で使用されるセパレータを示します。この場合、セパレータはありません。

%% i-各反復ステップで分析されるセットの現在の要素(この場合は次のファイル名)を含む変数i



DIR /B/O:-N %$DST%\files????-??-??_??-??-??.7z







このコマンドは、指定された変数$ DSTのフォルダーに含まれ、マスクファイルに対応するファイル名のセット(セット)を形成します????-??-?? _ ??-??-??。7z (疑問符はこの中の文字を示します)位置 / Bスイッチはファイル名のみの出力を指定し、 / O:-Nスイッチは名前によるソート( N )または逆順( -N )、この場合は逆順を指定します。

セットの形式は次のとおりです。

files2010-07-01_22-00-00.7z

ファイル2010-06-30_22-00-00.7z

ファイル2010-06-29_22-00-00.7z

要素の並べ替え順序に注意してください!



実行(...) -括弧内には、各反復で実行されるコマンドが含まれます(この場合):

Set / A $ COPIES- = 1 ::ループカウンターとして機能する変数COPIESの減少。

If!$ COPIES! LSS 0 DEL "%$ DST%\ %% i" ::コマンドは条件をチェックします$ COPIES LSS 0すなわち $ COPIES <0 、trueの場合、現在の要素の名前を持つアーカイブファイルを削除するコマンドを実行する必要があります。そのため、アーカイブの保存されたコピーの数は、指定された値を超えません。



echo %date% %time% ***End*** ::







たとえば、 list_add.txtファイルの内容も示します。



M:\mail

U:\updates

Z:\

Z:\*

z:\

Z:\







そして、 list_excl.txt例外ファイル



*.bak

*.tmp

*.avi

*.mkv

*.mp3








実際、これがレイアウト全体です。 スクリプトは小さいですが、信頼性があります。 トリックはありません、すべてが非常に簡単です。

最後に、バナリティ...起動を自動化するには、「d:\ backup \ backup.bat >> d:\ backup \ backup.log」という形式のコマンドラインを使用して、標準のWindowsスケジューラを使用できます。 これにより、スクリプトメッセージをログファイルに出力できます。

皆さん、頑張ってください。



参照:



1)MSのコマンドラインオプションに関するリファレンス。

technet.microsoft.com/en-us/library/cc737438%28WS.10%29.aspx



2)7-Zipのコンソールバージョンの機能に関する詳細なヘルプは、アーカイバーに添付されています。



All Articles