バッチ処理のバックアップDMPを2→1世代保存へ修正した話
DBサーバーのストレージが限界
DBサーバーのストレージが限界に近くなり、原因の調査と一時的にバックアップを2世代→1世代に変更することになった。
バックアップ先フォルダを確認するとDMPは2世代保存のはずが10世代も保存されていた。
原因と修正内容を備忘録までに記載。
バックアップは毎日行われDMPは以下のような日付フォルダの中に配置される。
F:¥Data¥Dump¥20200826
F:¥Data¥Dump¥20200825
F:¥Data¥Dump¥20200824
今までの処理
今日の日付を年月日で取得
set TODAY=%date:~0,4%%date:~5,2%%date:~8,2%
パワーシェルで前々日の日付を取得
set SEDAI=2
FOR /F "usebackq" %%a IN (`powershell [DateTime]::Today.AddDays"("-%SEDAI%")".ToString"("'yyyyMMdd'")"`) DO SET REMOVEDAY=%%a
削除対象のパスからフォルダ削除
set REMOVEDIR=F:¥Data¥Dump¥REMOVEDAY
rmdir /s /q %REMOVEDIR%
この処理だと何らかの作業でバッチ処理を停止させた場合、手動で削除しなければ永遠に残ってしまうフォルダ(DMP)が発生する。
過去バッチ処理を停止させた時に削除されなかったDMPが残ってしまいストレージを圧迫していた。
今回の修正
パワーシェルの日付取得は使わず、フォルダ名を日付でソートして取得する。最新日付のフォルダ以外は削除。
for /f "skip=1" %%i in ('dir /ad /b /s /o:-n F:¥Data¥Dump¥') do rmdir /s /q %%i
これで保存世代も2→1世代になり、バッチ処理を停止させた後も最新日付以外のフォルダは削除されるようになった。
Author And Source
この問題について(バッチ処理のバックアップDMPを2→1世代保存へ修正した話), 我々は、より多くの情報をここで見つけました https://qiita.com/zakiyama3/items/48df4cccac4b35bb03ad著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .