windowサーバ用に、ローカルの指定ディレクトリ配下のファイルで指定期間を過ぎているものに対して、バックアップ(move)・削除・S3アップロードを行うスクリプトをpowershellで書きました。
ディレクトリファイルは対象外としています。
ログファイルのバックアップ処理等に利用出来ると思います。
ファイル名:fileOp.ps1
param ( [int ]$days=0, [string]$SrcDirpath, [string]$DestDirpath, [string]$S3backetPath, [switch]$del, [switch]$mv, [switch]$s3up ) function checkparam([string]$ldel,[string]$lmv,[string]$ls3up,[string]$lSrcDirpath,[string]$lDestDirpath,[string]$lS3backetPath) { $optnum=0 $ret=$True foreach($option in @($ldel,$lmv,$ls3up)) { if($option -eq $True) { $optnum +=1 } } if($optnum -ne 1) { Write-Host "[ERROR]-del,-mv,-s3up can not use together." $ret=$false } if($lSrcDirpath -eq "") { Write-Host "[ERROR]-SrcDirpath must be used and set path string other than null" $ret=$false } if(($lDestDirpath -eq "") -and ($lmv -eq $True)) { Write-Host "[ERROR]using -mv option, -DestDirpath must be used and set path string other than null" $ret=$false } if(($lS3backetPath -eq "") -and ($ls3up -eq $True)) { Write-Host "[ERROR]using -s3up option, -S3backetPath must be used and set path string other than null" $ret=$false } return $ret } $isAwsinitialized=$false if((checkparam $del $mv $s3up $SrcDirpath $DestDirpath $S3backetPath) -eq $false) { exit } $Targetfiles=Get-ChildItem $SrcDirpath foreach($Targetfile in $Targetfiles) { $pastdate=((Get-Date)-$Targetfile.LastWriteTime).Days if($pastdate -gt $days -and $Targetfile.PsISContainer -ne $True) { if($del -eq $True) { $Targetfile.delete() } elseif($mv -eq $True) { Move-Item $Targetfile.FullName -Destination $DestDirpath } elseif($s3up -eq $True) { if($isAwsinitialized -ne $True) { Initialize-AWSDefaults -AccessKey XXXXXXXXXXX -SecretKey YYYYYYYYYYYYYY -Region ap-northeast-1 $isAwsinitialized=$True } Write-S3Object -BucketName $S3backetPath -File $Targetfile.FullName -Key $Targetfile.Name -CannedACLName Private } } }
赤色部のアクセスキー・シークレットキーは任意の値を書く必要があります。
(転記時注記 上記ソースの71行目: -AccessKey XXXXXXXXXXX -SecretKey YYYYYYYYYYYYYY)
使用例1:S3バックアップ
- ファイル期限=1日
- 対象ディレクトリ=C:work
- S3バックアップパス=koujipstest/hoge1
PS C:UsersAdministrator> .fileOp.ps1 -days 1 -s3up -SrcDirpath C:work -S3backetPath koujipstest/hoge1
使用例2:ローカルファイル削除
- ファイル期限=1日
- 対象ディレクトリ=C:work
PS C:UsersAdministrator> .fileOp.ps1 -days 1 -del -SrcDirpath C:work
使用例3:ローカルファイルバックアップ
- ファイル期限=1日
- 対象元ディレクトリ=C:work
- 対象先ディレクトリ=C:backup
PS C:UsersAdministrator> .fileOp.ps1 -days 1 -mv -SrcDirpath C:work -DestDirpath C:backup
元記事は、こちら