Compress-Archiveでカレントディレクトリの内容をzip形式でバックアップするスクリプト

powershell コンピュータ
powershell

Compress-Archiveでカレントディレクトリをバックアップするスクリプトです。
作成されるzipファイルは5世代分保存されます。

スクリプト

# 
# カレントディレクトリをzip形式でバックアップ
# 

# バックアップ先のルートディレクトリ(ファイルサーバー)
$destination_root = "X:\00_backup"
# バックアップ元のディレクトリ(カレントディレクトリ)
$source_dir = (Get-Location).Path

# 「:」を排除
$name = $source_dir.Replace(":", "")
# 「/」を「_」に置き換え
$name = $name.Replace("\", "_")

# 検索パスを生成
$filter = "{0}_*.zip" -f $name
# 既存のバックアップファイルを検索
$count = (Get-ChildItem $destination_root -Filter $filter -File).Count
# 5世代前のバックアップを削除
if ($count -ge 5) {
    Get-ChildItem  $destination_root -Filter $filter -File | Sort-Object LastWriteTime | Select-Object -First 1 | Remove-Item -Confirm
}

# 保存先のパスを生成
$backup_path = Join-Path $destination_root ("{0}_{1}.zip" -f $name, (Get-Date).ToString("yyyyMMddHHmmss"))
# バックアップ
Compress-Archive -Path $source_dir -DestinationPath $backup_path

Write-Host 何かキーを押してください。 -NoNewLine
[Console]::ReadKey() | Out-Null

使い方

$destination_rootが保存先のルートディレクトリになりますので環境に合わせて変更する必要があります。またルートディレクトリはあらかじめ作成する必要があります。
スクリプトをパスが通ったディレクトリに適当な名前で保存します。
バックアップさせたい任意のディレクトリに移動しスクリプトを実行すると同期処理が実行されます。

コメント