Loading [MathJax]/extensions/tex2jax.js

Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Powershell

ファイルのバックアップを自動化する手順をご紹介(Windows Powershell使用)

投稿日:2022年2月8日 更新日:

 

<目次>

(1) ファイルのバックアップを自動化する手順をご紹介(Windows Powershell使用)
 (1-1) バックアップ自動化の方式(概要)
 (1-2) バックアップ自動化の方式(手順)
 (1-3) 使った主な構文

(1) ファイルのバックアップを自動化する手順をご紹介(Windows Powershell使用)

本記事ではWindowsのファイルのバックアップを自動化する手順をご紹介します(Powershellを使用)。

(1-1) バックアップ自動化の方式(概要)

・STEP1:バックアップ用のPowerShell作成する
PowerShellでバックアップ対象のフォルダを、丸ごと別の場所にコピーする処理を実装します。また、その際にバックアップ先で、当日の年月日時刻(yyyyMMdd_hhmm形式)のフォルダを作成し、その中にバックアップを格納するようにします。
 
・STEP2:スケジューリングする
Windowsのタスクスケジューラ機能を使って、作成したPowerShellが指定の周期で実行されるように予定を組みます。

以降は、この具体的な手順をご紹介します。

(1-2) バックアップ自動化の方式(手順)

●STEP1:バックアップ用のPowerShell作成する

・①空のPowershellファイル(拡張子「.ps1」)を作成します。

(図121)

・②作成したファイルに下記のプログラムを追記して保存します。
(サンプル)
  1. # バックアップ対象のフォルダを指定
  2. $src_dir = "C:\Temp\FileBackup\MyData"
  3. # パスをコンソール出力
  4. echo "### Source Path ###" $src_dir ""
  5.  
  6. # バックアップ先のフォルダを指定
  7. # フォルダの末尾にyyyymmdd_hhmm(年月日_時分)を付与
  8. $dst_date = Get-Date -Format("yyyyMMdd_hhmm")
  9. $dst_tmp_dir = "C:\Temp\FileBackup\_Backup"
  10. $dst_dir = $dst_tmp_dir + "\" + $dst_date
  11.  
  12. # パスをコンソール出力
  13. echo "### Destination Path ###" $dst_dir
  14.  
  15. # バックアップ先に既にフォルダが存在するか?をチェックし、結果をフラグに格納
  16. $check_flg = Test-Path $dst_dir
  17.  
  18. # 既に存在する場合は、該当のフォルダを削除する
  19. # (同じ日で複数回バックアップする場合など、より新しいもので置き換えるため)
  20. if ($check_flg -eq $true)
  21. {
  22. # 該当のフォルダを削除します
  23. Remove-Item $dst_dir -Recurse
  24. }
  25.  
  26. # バックアップの実行(フォルダごとコピー)
  27. Copy-Item $src_dir $dst_dir -Recurse
(図122)
 
・③プログラムの単体疎通
作成したPowerShellファイルを右クリック→「PowerShellで実行」を選択して、ファイルのコピーがされるか?を確認します。
(図123①)

●STEP2:スケジューリングする

一定周期で自動実行させるためには、タスクスケジューラで設定を行いますが、手順については下記の別記事でご紹介しています。

(手順)Windowsでバッチ処理を定期的に実行する方法(タスクスケジューラ使用)

(1-3) 使った主な構文

●フォルダ配下のコピー(再帰的)

「Copy-Item」コマンドレットを使います。
 
(構文)
  1. Copy-Item [コピー元パス] [コピー先パス] -Recurse
(例)
  1. Copy-Item $src_dir $dst_dir -Recurse
 
「-Recurse」オプションを付与する事で、サブフォルダも対象に含めてコピーできます。例えば[コピー元パス]にあるフォルダを指定して「-Recurse」オプションを付けて実行すると、その配下のファイルも併せてコピーされます。今回の例では「$src_dir = “C:\Temp\FileBackup\MyData”」配下を「$dst_dir = “C:\Temp\FileBackup\_Backup\yyyyMMdd_hhmm”」配下にコピーします。
 
(※注1)
コマンドレットはPowerShellで使える軽量コマンドで、通常のコマンドとは様々な面で異なります。まず、コマンドレットの実態は実行ファイル (exeなど)ではなく、「.NET」フレームワークのクラスのインスタンスです。入出力としてオブジェクトを扱えるため、組み合わせる事で複雑な処理を実行する事が可能になります。
 

●フォルダの存在チェック

「Test-Path」コマンドレットを使います。チェック対象のパスが存在する場合は「True」を、無い場合は「False」を返却します。
 
(構文)
  1. [フラグ変数] = Test-Path [チェック対象パス]
 
(例)
  1. $check_flg = Test-Path $dst_dir
 

●フォルダ配下の削除(再帰的)

「Remove-Item」コマンドレットを使います。
 
(構文)
  1. emove-Item [削除対象パス] -Recurse
 
(例)
  1. Remove-Item $dst_dir -Recurse
 
コピーの時と同様、「-Recurse」オプションを付与する事で、サブフォルダも対象に含める事ができます。今回の例では「”C:\Temp\FileBackup\_Backup\yyyyMMdd_hhmm”」配下が削除対象となります。
 

Adsense審査用広告コード


Adsense審査用広告コード


-Powershell

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

バッチから引数を与えてPowershellを実行する方法

<目次> (1) バッチからPowershellを実行する方法  (1-1) 構文①  (1-2) 構文② (2) バッチから引数を与えてPowershellを実行する方法  (2-1) 引数を表現す …

「このシステムではスクリプトの実行が無効になっているため、ファイルXXXを読み込みことができません」エラー(PowerShell)が出る原因と対処方法

<目次> (1) 「このシステムではスクリプトの実行が無効になっているため、ファイルXXXを読み込みことができません」エラー(PowerShell)が出る原因と対処方法  (1-1) エラーメッセージ …

Powershellで文字列がnullかどうか判定する方法

<目次> (1) Powershellで文字列がnullかどうか判定する方法  (1-1) 構文  (1-2) 構文使用例  (1-3) サンプルプログラム (1) Powershellで文字列がnu …

Powershellで文字列をタブ区切りで分割~splitオペレータの活用~

<目次> (1) Powershellで文字列をタブ区切りで分割~splitオペレータの活用~  (1-1) 構文  (1-2) サンプルプログラム    (サンプルプログラム#1)ベーシックな「-s …

Powershellのハッシュテーブル(hashtable)の作成方法や値の取得方法をご紹介

<目次> (1) Powershellのハッシュテーブル(hashtable)の作成方法や値の取得方法をご紹介  (1-1) ハッシュテーブルとは?  (1-2) ハッシュテーブルの構文  (1-3) …

  • English (United States)
  • 日本語
S