🦾
[PowerShell]コピーバックアップ&ローテーションの方法 - Local to NAS
概要
こちらの記事で文字だけを表示するスクリプトを使い、
PowerShellのはじめ方を紹介しましたが、より実践に近いサンプルコード(サンプルプログラム)を作成しました。
今回作成したPowerShellスクリプトはWindows共有フォルダー(NASやパソコンなど)をバックアップ先(コピー先)としたデータのコピーバックアップや、
あらかじめ設定した世代数でのバックアップローテーションを実施するという内容です。
PowerShellの始め方(スタートアップ)としても、ご参考頂ければと思います。
この記事のターゲット
- PowerShellユーザーの方
- PowerShellでコピーバックアップ(ローテーション含む)のスクリプトを作成したい方
- 初心者でPowerShellスクリプト作成の参考にしたい方
サンプルプログラムの紹介
サンプルプログラムのシナリオは、ジョブスケジューラに登録し定期的(毎日夜間など)にデータのコピーバックアップの取得とバックアップのローテーションを実行するという、シナリオを想定したツール。
サンプルプログラム
仕様
プログラム起動用:batファイルとプログラムの本体:ps1ファイル、個別の設定ファイル:setup.iniファイル、
の3つで構成されたプログラム。
なお、共有フォルダーに接続する為の下記情報は設定ファイルにより変更可能とする。
- ホスト名、またはIPアドレス
- ユーザー名
- パスワード[1]
- バックアップ先のパス(コピー先)
- 世代数
- バックアップ対象(コピー元)
フローチャート
処理全体
ファイル名:FileCopybackupTool.bat
プログラム本体
ファイル名:Main.ps1
画面仕様
バッチファイル(batファイル)を使いPowerShellスクリプトを実行する。
このPowerShellでは.NET Frameworkのフォーム(以下、dotNETフォームと称する)を呼び出して使用しており、
dotNETフォームを使ったポップアップウィンドウで操作する。
他にコマンドプロンプトが一時停止(PUASE)状態の確認画面の際に「Enterキー」を押し、処理続行させる操作方法も含まれる。
機能仕様
- 引数チェック
- 引数の有無
- 引数の値
バックアップローテーションの場合は引数がRotatiion
コピーバックアップの場合は引数がCopy
- 初期設定
- 現在日付の取得
- 設定ファイル読み込み
-
バックアップ先
- ホスト名、またはIPアドレス
- ユーザー名
- パスワード
- バックアップ先のパス(コピー先)
- 世代数
-
バックアップ元
- バックアップ対象(コピー元)
-
- 実行モードの判定(ローテーション or コピーバックアップ)
引数により実行モードを判定しバックアップローテーション、またはコピーバックアップを実行。 - バックアップローテーション
- コピーバックアップ
- 共有フォルダー接続
- コピーバックアップ
コピー先に現在日付のフォルダーが存在する場合は、コピーバックアップ前に削除する。
コピーバックアップではバックアップ対象のフォルダーをコピーし、コピー先で現在日付フォルダーにリネームして貼り付けする。 - 共有フォルダー切断
入出力ファイル
入力ファイル
- バックアップ元 - バックアップ対象(コピー元)
Windows Updateのログファイル
出力ファイル
- バックアップ先 - バックアップ先のパス(コピー先)
Windows共有フォルダー
GitHub Repository
フォルダー構成
PowerShell_FileCopybackupTool
│ FileCopybackupTool.bat ・・・起動用バッチファイル
│ LICENSE.md
│ README.md
│
└─source
├─icon
│ shell32-296.ico ・・・アイコンデータ
│
└─powershell
Main.ps1 ・・・プログラム本体
setup.ini ・・・設定ファイル
参考記事
- dotNETフォームでYesNoポップアップウィンドウの作成方法
http://kamifuji.dyndns.org/PS-Support/Form02/index.html - DLLファイルやEXEファイルからアイコンを抽出する方法
https://www.vwnet.jp/windows/PowerShell/2017122001/ExtractionIcon.htm - Windows 10 標準アイコンのDLLファイルの保管(格納)場所
https://4thsight.xyz/13325
関連記事
Discussion