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)

・②作成したファイルに下記のプログラムを追記して保存します。
(サンプル)
# バックアップ対象のフォルダを指定
$src_dir = "C:\Temp\FileBackup\MyData"
# パスをコンソール出力
echo "### Source Path ###" $src_dir ""

# バックアップ先のフォルダを指定
# フォルダの末尾にyyyymmdd_hhmm(年月日_時分)を付与
$dst_date = Get-Date -Format("yyyyMMdd_hhmm")
$dst_tmp_dir = "C:\Temp\FileBackup\_Backup"
$dst_dir = $dst_tmp_dir + "\" + $dst_date

# パスをコンソール出力
echo "### Destination Path ###" $dst_dir

# バックアップ先に既にフォルダが存在するか?をチェックし、結果をフラグに格納
$check_flg = Test-Path $dst_dir

# 既に存在する場合は、該当のフォルダを削除する
# (同じ日で複数回バックアップする場合など、より新しいもので置き換えるため)
if ($check_flg -eq $true)
{
	# 該当のフォルダを削除します
	Remove-Item $dst_dir -Recurse
}

# バックアップの実行(フォルダごとコピー)
Copy-Item $src_dir $dst_dir -Recurse
(図122)
 
・③プログラムの単体疎通
作成したPowerShellファイルを右クリック→「PowerShellで実行」を選択して、ファイルのコピーがされるか?を確認します。
(図123①)

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

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

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

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

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

「Copy-Item」コマンドレットを使います。
 
(構文)
Copy-Item [コピー元パス] [コピー先パス] -Recurse
(例)
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」を返却します。
 
(構文)
[フラグ変数] = Test-Path [チェック対象パス]
 
(例)
$check_flg = Test-Path $dst_dir
 

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

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

Adsense審査用広告コード


Adsense審査用広告コード


-Powershell

執筆者:


comment

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

関連記事

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

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

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

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

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

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

Powershellで実行中のファイル名を取得する方法

<目次> (1) Powershellで実行中のファイル名を取得する方法  (1-1) 構文①  (1-2) 構文①サンプルプログラム  (1-3) 構文②  (1-4) 構文②サンプルプログラム ( …

Powershellで親フォルダのパスを取得する方法+Split-Pathコマンドレットのオプションも併せてご紹介

<目次> (1) Powershellで親フォルダのパスを取得する方法  (1-1) 構文と使用例  (1-2) ご参考:Split-Pathのオプション (2) Powershellでフォルダ配下の …

  • English (United States)
  • 日本語
Top