Windows Powershellを使用して日時で作成されるフォルダを圧縮するシェルを作成してみた
業務上で日時フォルダを圧縮したいとの要件が出たため作成した時のメモを残します。
今回条件が類似していたのでhagure_m様のサイトを参考に少し変更を加えPowershellを作成しております。
1. Powershellスクリプト仕様
2. スクリプト内容
3. Compress-Archiveについて
Powershellスクリプト仕様
日時で新規フォルダが作成されその中にバックアップが置かれる。
そのフォルダの最終更新日付が2週間以前のフォルダだったら、同一フォルダ名.zipを作成する。
その後元のフォルダは削除し、結果はログに残す。
#LOG Function
function LOG ($SIV, $MSG){
"{0}:{1}:{2}" -f (Get-Date),$SIV, $MSG | Out-File -Append -FilePath $LOGFILE -Encoding default
}#info
$PS = 'C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe'
$BKUPDIR = 'C:\Backup'
$LOGDIR = "C:\logs"
$LOGFILE = '$LOGDIR\Commpress_$Date.log'
$EXEC_DT = Get-Date
$BEF_DT = $EXEC_DT.AddDays(-15)
$Date = $EXEC_DT.ToString('yyyyMMdd')$Folder_List = Get-ChildItem -Path $BKUPDIR -Recurse -Directory |
Where-Object {$_.LastWriteTime -lt $M_DT -and $_.Attributes -ne "Compressed"}#Counts
$i = 0#処理分岐
LOG "INF" "Commpress Start"foreach($Folder in $Folder_List)
{
$Folder_FULL = $Folder.FullName
$Folder_NAME = [System.IO.Path]::GetFileNameWithoutExtension($Folder.Name)
$ZIP_NAME = $Folder_FULL+".zip"
LOG "INF" "Tagert Folder-$Folder_FULL / zip-$ZIP_NAME"
if($Folder.PSContainer)
{
try{
Compress-Archive -Path $Folder_FULL -DestinationPath $ZIP_NAME
LOG "INF" "$($Folder.FullName) Commpressed"
Remove-Item -Path $Folder_FULL -Recurse -Force
LOG "INF" "$($Folder.FullName) removed"
$i++
}
catch {
LOG "ERR" "Error. $($Folder.FullName) Commpress Failed"
$ERRString = $error[0] |Out-String LOG "ERR" "$ERRString"
}
}
}LOG "INF" "Compressed END. FolderCounts:$($i)"
Compress-Archiveについて
Compress-ArchiveコマンドはPowershell5.0以上で利用できるコマンドです。
Windows2012の環境では利用できませんのでご注意ください。
詳しい情報については以下Microsoftのサイトをご確認ください。
VritualBox,Vagrantインストール済みWin10環境にCentOS8をインストールする方法について
Windows10環境にVirtualBOX,Vagrantを利用してCentOS8をインストールしていきます。
VirtualBox、Vagrantについてはインストールされていることが前提である記事となります。
CentOS8のインストール方法について
Powershellもしくはコマンドプロンプトを使用し、CentOS8をインストールしていきます。
Cドライブ直下にVagrantフォルダを作成するディレクトリを移動します。
PS C:\>mkdir vagrant
PS C:\>cd vagrant
次にvagrant box addコマンドを使用し、CentOS8のBoxをダウンロードしていきます。
Enter your choice:の表示画面で5を入力し、Enterを押します。
PS C:\vagrant>vagrant box add generice/centos8 ==> box: Loading metadata for box 'generic/centos8' box: URL: https://vagrantcloud.com/generic/centos8 This box can work with multiple providers! The providers that it can work with are listed below. Please review the list and choose the provider you will be working with. 1) docker 2) hyperv 3) libvirt 4) parallels 5) virtualbox 6) vmware_desktop
Enter your choice: 5
以下のように表示されていれば問題なくBoxがダウンロードできています。
==> box: Successfully added box 'generic/centos8' (v3.2.6) for 'virtualbox'!
ダウンロード完了後以下のコマンドを実行して、Vagrantfileを作成します。
PS C:\vagrant>vagrant init generic/centos8
Vagrant fileの設定
エクスプローラーからvagrantフォルダにある、Vagrantfileを以下のように編集し、保存します。
■推奨設定
# 35行目に記載のある以下行の#コメントアウトを外してIDアドレスを変更します。
#【修正前】
# config.vm.network "private_network", ip: "192.168.33.10"
#【修正後】
config.vm.network "private_network", ip: "192.168.33.x"
#51行目にホスト名を追記します。
■必要であれば設定する
# 46行目に記載のある以下行の#コメントアウトを外してホストOSの./workを共有ディレクトに設定
#【修正前】
# config.vm.synced_folder "../data", "/vagrant_data"
#【修正後】
#メモリのスペック変更が必要であれば57行目をコメントアウトを外してメモリ容量を修正します。(MB表記)
#【修正前】 # vb.memory = "1024"
#【修正後】 vb.memory = "2048"
仮想マシンの起動とSSHでの接続確認
Vagrantfileの保存を確認したところで、いよいよ仮想マシンの起動とSSHで接続を確認します。
#仮想マシンの起動
ターミナル画面が表示されれば問題なく接続ができている状態です。