改版履歴ローカルフォルダ(Dドライブ)のデータを自宅NASにバックアップしたいCドライブはシステムイメージバックアップを取っているけど、そういえばDドライブに溜め込んだデータはバックアップ設定していないなーと思ったので自宅のNASにデータバックアップをすることにした。Dドライブ丸ごとコピーしてNASにペーストしても良かったのだが、それなりにちょこちょこデータが更新されるので毎回コピー・ペーストするのもカッコ悪いなと思い、PowerShellとRobocopyを利用してバックアップスクリプトを作ることにした。うちのNASはID/PASSをアクセス時に要求するので、robocopy実行前にNASにアクセスするようにした。robocopy結果をログに残す仕様にすることにした。一々管理者権限で実行を指定するのは面倒なので、スクリプト内で管理者として実行しているか確認し、管理者として実行されていない場合は管理者として実行するように促す形にした。指定したコピー元($srcFolder)から指定したコピー先($dstFolder)へrobocopyを実施する。今回は、コピー元を「Dドライブ」、コピー先を「\192.168.1.253\backup\Dドライブ」とする。(適宜修正してください)コピー先のNASに対してrobocopy実行前にユーザーID/PASSで資格情報を取得しておく。本スクリプトではユーザー名を「backupper」、PASSを「backupperpass」としておく。(適宜修正してください)robocopyのオプションは以下とする。/W:3/MIRはコピー元とコピー先を同じ状態になるようにするオプションである。/DCOPY:DATはディレクトリにコピーする情報を指定するオプションである。D(データ)、A(属性)、T(タイムスタンプ)をコピーする。/COPY:DATはファイルにコピーする情報を指定するオプションである。D(データ)、A(属性)、T(タイムスタンプ)をコピーする。/COPYALLは恐らく以下のようなエラーとなる。サポートされていない可能性があります。クライアントは要求された特権を保有していません。これは、/COPYALLだとセキュリティ情報等までもコピー対象にしてしまうので、ローカルと権限の管理管轄が異なるNASではコピーしようがないためと思われる。同一ドメインで管理されていれば問題なく通るかもしれない(未検証)。/ITはファイル属性だけが異なるファイル(Tweaked)もコピー対象に含めるオプションである。/Bはバックアップモードでの実行を指定するオプションである。これは対象ファイルへのアクセス権がなかったとしてもファイルコピーできるようになるオプションである。(なので本スクリプトの実行は管理者権限を持つユーザーが対象となる)/log+:"$logFile"は$logFileにログを出力させるオプションである。/npはコピーの完了率を表示させないオプションである。これはログ出力時にログが完了率だらけで読めなくなるのを防ぐためである。/R:3は失敗したコピーに対する再試行回数を3に指定するものである。/Rは既定値が1,000,000であり、コピー時間が無駄に増大するだけなので最低限の回数に変更する。/W:3は再試行と再試行の間の待機時間を3秒間に指定するものである。/Wは既定値が30秒であり、/Rと合わせてコピー時間が無駄に増大するだけなので最低限の秒数に変更する。管理者権限で実行をされているかを確認し、されていない場合は管理者権限で再実行する。robocopyの実行結果をログ出力し、ログ保存用のフォルダに保存する。$logFolderでログフォルダパスを指定し、$logFileでログのファイル名を指定する。本スクリプトではログフォルダパスを「\192.168.1.253\backup\バックアップ用ツール\Dドライブロボコピー\log」とする。(適宜修正してください)なお、ログフォルダは予め作成しておく必要あり。ファイル名はyyyy-mm-dd_datacopy.logとなるようにする。指定された日数よりも古いログファイルがあった場合、自動でログを削除するようにする。本スクリプトでは93日(約3ヶ月間)より古いログは削除する仕様とする。コード絶対改善余地があるけどこんな感じ。青字アンダーライン部分は搭載機能に記載した適宜修正部分のため、自身の環境に応じて書き換えされたし。"スクリプトの実行が完了しました。"実行イメージ注意点と補足PowerShellが実行可能な環境である必要があります。WindowsServer2016のインストールを進めたらいつもの画面じゃなくUNIX系のようにコマンドライン(cmd.exe)の画面しか出てこなかった。VMwareESXi7.0にWindowsServer2016をインストールしようとしたときにこんなエラーに遭遇した。ZGでWindows10proである。仕事でWindowsイベントログをCSVに保存しようとしたら何故か350レコードぐらいしか出力されない、というバグに遭遇したので作成。家のPCなら普通に全量出力できた。SynologyとかのNASなら標準で搭載されている重複ファイルをチェックするツール。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。Δホームpowershellhamutetuはむてつと申します。某大企業でIT技術者として業務改善に勤しんでいます。仮想基盤の構築運用、監視/ID管理/監査/ジョブ管理/バックアップ・リストア/ファイルサーバ/メール基盤等々の企画設計開発運用なんかをやっています。外注業務の内製化/自動化/省力化を行い、年間500万円のコスト削減だったり、6時間かかっていた業務を20分で済むようにするなどしてきました。コピペで使えるプログラム(Powershellとか)を公開しています。はむてつの仕事場-IT業務改善を求めて.プライバシーポリシーお問い合わせサイトマップタイトルとURLをコピーしました。