昔のブログから記事をコピペしています。
そのため、情報が古い可能性があります。
以降、以前のブログからの記事
利用目的としては、タスクスケジューラを利用して、
定期実行してファイルのフォルダ毎バックアップ。
PowerShellの利点は活かせていないけれど。
定期バックアップ処理が必要になったことと、今後ログファイルの解析も流れで行えるようにシェルで作成。
現状の利点と言えば、現在時間の取得が短くなったことなのだろうか。
#========================================================================================================================
#フォルダコピー用Shellスクリプト
#コピー元とコピー先が逆になっていた場合、ファイル削除が発生します。注意が必要です。
#タスクスケジューラ等で定期実行設定しての利用を想定
#========================================================================================================================
#コピー元:
$BaseFolderPath = "{コピー元}"
#コピー先
$BackupFolderPath = "{コピー先}"
#ログ保存先
$LogaSavePath = "{ログ保存先}\"
#ログファイル名
$CopyStartTime = Get-Date -Format "yyyy-MMdd-HHmmss"
$LogFileName = "Log_$CopyStartTime.log"
#コピー処理実施
#========================================================================================================================
#原則書き換え禁止
#下記にて、コピー処理を実施しています。
#コマンドの引数に関しての説明を記載します。
#適宜、環境に合わせてチューニングしてください。
#設定内容
#/MIR ミラーリング => コピー元とコピー先でファイルが同じ状態になる
#/R:n 失敗したコピーに対する再試行数: 既定値は 1,000,000
#/W:n :: 再試行と再試行の間の待機時間: 既定値は、30 秒です。
#/LOG:ファイル :: ログ ファイルに状態を出力します (既存のログを上書きします)。
#/NP :: 進行状況なし - コピーの完了率を表示しません。
#/TEE :: コンソール ウィンドウとログ ファイルに出力します。
#/XJD :: ディレクトリの接合ポイントを除外します。 => ゴミファイル生成対策
#/XJF :: ファイルの接合ポイントを除外します。 => ゴミファイル生成対策
#/DCOPY:コピーフラグ :: ディレクトリにコピーする情報 (既定値は /DCOPY:DA)。
# (コピーフラグ: D= データ、A= 属性、T= タイムスタンプ)。
#/NDL :: ディレクトリなし - ディレクトリ名をログに記録しません。
#~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~
#場合によっては追加が必要なコマンド
#/IPG:n :: 低速回線で帯域幅を解放するためのパケット間ギャップ (ミリ秒)。
#/MOT:m :: コピー元を監視し、m 分後に変更があった場合に再度実行します。 (ファイル名の付加が意味なし)
#========================================================================================================================
robocopy $BaseFolderPath $BackupFolderPath /MIR /R:3 /W:60 /LOG:$logaSavePath$LogFileName /NP /TEE /XJD /XJF /DCOPY:DAT /NDL