2014年6月9日月曜日
iCacls
C:\Users\Forza1063>icacls c:\windows\* /save 20140607_iCals.log /T /C
C:\Users\Forza1063>icacls d:admtools\* /save d:\admtools\log\20140608_iCals.log /T /C
00_SubinAclSKEL.bat
:開始
@ECHO off
REM =============環境に応じて、修正してください。=====================================
SET SUBIINACL="C:\Program Files (x86)\Windows Resource Kits\Tools\subinacl.exe"
SET ACLSUBDIR="d:\####\*.*"
SET option1=directoriesonly
SET option2=filesonly
SET option
SET option=%option1%
rem SET option=%option2%
rem SET ACLSUBDIRoption=/subdirectories
SET ACLSUBDIRoption=/subdirectories=%option%
rem SET ACLSUBDIRoption=/subdirectories=%option%
SET YYYYMMDD=%date:~0,4%%date:~5,2%%date:~8,2%
SET Time_edit=%time: =0%
SET HHMMSS=%Time_edit:~0,2%%Time_edit:~3,2%%Time_edit:~6,2%
rem SET ACLLOG=d:\admtools\RoboACL\log\%0_%option%_%YYYYMMDD%_%HHMMSS%.log
SET ACLLOG=d:\admtools\RoboACL\log\####_%option%_%YYYYMMDD%_%HHMMSS%.log
ECHO ==============================================================================
ECHO.
ECHO ↓↓↓↓↓ 自動生成、subinacl実行コマンド ここから ↓↓↓↓↓
ECHO.
ECHO %SUBIINACL% /noverbose /outputlog=%ACLLOG% %ACLSUBDIRoption% %ACLSUBDIR% /display
ECHO.
ECHO ↑↑↑↑↑ 自動生成、subinacl実行コマンド ここまで ↑↑↑↑↑
ECHO ******************************************************************************
ECHO * ACL処理実行確認 %0
ECHO * %SUBIINACL%
ECHO * ディレクトリ :%ACLSUBDIR%
ECHO * オプション :%ACLSUBDIRoption%
ECHO * :
ECHO * ログパス :%ACLLOG%
ECHO * :
ECHO * start :実行を開始
ECHO * quit :実行を中止
ECHO * 上記以外の文字:当バッチ処理の先頭に戻ります
ECHO ******************************************************************************
IF "%1"=="G" GOTO ACL実行
SET /P Console_input="処理続行選択(上記参照) : "
IF /I "%Console_input%"=="quit" EXIT
IF /I "%Console_input%"=="start" GOTO ACL実行
GOTO 開始
PAUSE
:ACL実行
%SUBIINACL% /noverbose /outputlog=%ACLLOG% %ACLSUBDIRoption% %ACLSUBDIR% /display
:ACL終了
EXIT /b %ERRORLEVEL%
@ECHO off
REM =============環境に応じて、修正してください。=====================================
SET SUBIINACL="C:\Program Files (x86)\Windows Resource Kits\Tools\subinacl.exe"
SET ACLSUBDIR="d:\####\*.*"
SET option1=directoriesonly
SET option2=filesonly
SET option
SET option=%option1%
rem SET option=%option2%
rem SET ACLSUBDIRoption=/subdirectories
SET ACLSUBDIRoption=/subdirectories=%option%
rem SET ACLSUBDIRoption=/subdirectories=%option%
SET YYYYMMDD=%date:~0,4%%date:~5,2%%date:~8,2%
SET Time_edit=%time: =0%
SET HHMMSS=%Time_edit:~0,2%%Time_edit:~3,2%%Time_edit:~6,2%
rem SET ACLLOG=d:\admtools\RoboACL\log\%0_%option%_%YYYYMMDD%_%HHMMSS%.log
SET ACLLOG=d:\admtools\RoboACL\log\####_%option%_%YYYYMMDD%_%HHMMSS%.log
ECHO ==============================================================================
ECHO.
ECHO ↓↓↓↓↓ 自動生成、subinacl実行コマンド ここから ↓↓↓↓↓
ECHO.
ECHO %SUBIINACL% /noverbose /outputlog=%ACLLOG% %ACLSUBDIRoption% %ACLSUBDIR% /display
ECHO.
ECHO ↑↑↑↑↑ 自動生成、subinacl実行コマンド ここまで ↑↑↑↑↑
ECHO ******************************************************************************
ECHO * ACL処理実行確認 %0
ECHO * %SUBIINACL%
ECHO * ディレクトリ :%ACLSUBDIR%
ECHO * オプション :%ACLSUBDIRoption%
ECHO * :
ECHO * ログパス :%ACLLOG%
ECHO * :
ECHO * start :実行を開始
ECHO * quit :実行を中止
ECHO * 上記以外の文字:当バッチ処理の先頭に戻ります
ECHO ******************************************************************************
IF "%1"=="G" GOTO ACL実行
SET /P Console_input="処理続行選択(上記参照) : "
IF /I "%Console_input%"=="quit" EXIT
IF /I "%Console_input%"=="start" GOTO ACL実行
GOTO 開始
PAUSE
:ACL実行
%SUBIINACL% /noverbose /outputlog=%ACLLOG% %ACLSUBDIRoption% %ACLSUBDIR% /display
:ACL終了
EXIT /b %ERRORLEVEL%
00_SuninAclGEN.vbs
MYFILE = "D:\admtools\RoboACL\00_SubinAclSKEL.bat"
'Option Explicit
On Error Resume Next
Dim objFSO ' FileSystemObject
Dim objFile ' ファイル読み込み用
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
Set objFile = objFSO.OpenTextFile("00_SubinAcl.INI")
'Set objFile = objFSO.OpenTextFile(MYFILE)
If Err.Number = 0 Then
Do While objFile.AtEndOfStream <> True
'WScript.Echo objFile.ReadLine
CHWORD = objFile.ReadLine
'CHWORD = "AAAA"
OFILE = CHWORD
Call CreateBatch(MYFILE,CHWORD,OFILE)
Loop
objFile.Close
Else
WScript.Echo "ファイルオープンエラー: " & Err.Description
End If
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objFile = Nothing
Set objFSO = Nothing
Sub CreateBatch(MYFILE, CHWORD, OFILE)
'テキストファイルのフルパス
Dim myA(9) : Dim myB(9)
myA(0) = "####" : myB(0) = CHWORD
myA(2) = "" : myB(2) = ""
myA(3) = "" : myB(3) = ""
myA(4) = "" : myB(4) = ""
myA(5) = "" : myB(5) = ""
myA(6) = "" : myB(6) = ""
myA(7) = "" : myB(7) = ""
myA(8) = "" : myB(8) = ""
myA(9) = "" : myB(9) = ""
'「A.変更前」と「B.変更後」を指定する
'消去なら「""」
'置換なら「"置換するものを書く"」
'---------------------------------
With CreateObject("Scripting.FileSystemObject")
With .GetFile(MYFILE).OpenAsTextStream
myALLData = .ReadAll
.Close
End With
'---------------------------------
For j = 0 To UBound(myA)
If myA(j) <> "" Then _
myALLData = Replace(myALLData, myA(j), myB(j))
Next
'---------------------------------
myFLD = .GetFile(MYFILE).ParentFolder & "\"
myExt = "." & .GetExtensionName(MYFILE)
myName = myFLD & .GetBaseName(MYFILE)
myName = OFILE
Do
i = i + 1
MYFILE2 = myName & myExt
'MYFILE2 = myName & "(" & i & ")" & myExt
If Not .FileExists(MYFILE2) Then Exit Do
Loop
'---------------------------------
With .OpenTextFile(MYFILE2, 2, True)
.Write myALLData
.Close
End With
End With
End Sub
Msgbox "END"
'Option Explicit
On Error Resume Next
Dim objFSO ' FileSystemObject
Dim objFile ' ファイル読み込み用
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
Set objFile = objFSO.OpenTextFile("00_SubinAcl.INI")
'Set objFile = objFSO.OpenTextFile(MYFILE)
If Err.Number = 0 Then
Do While objFile.AtEndOfStream <> True
'WScript.Echo objFile.ReadLine
CHWORD = objFile.ReadLine
'CHWORD = "AAAA"
OFILE = CHWORD
Call CreateBatch(MYFILE,CHWORD,OFILE)
Loop
objFile.Close
Else
WScript.Echo "ファイルオープンエラー: " & Err.Description
End If
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objFile = Nothing
Set objFSO = Nothing
Sub CreateBatch(MYFILE, CHWORD, OFILE)
'テキストファイルのフルパス
Dim myA(9) : Dim myB(9)
myA(0) = "####" : myB(0) = CHWORD
myA(2) = "" : myB(2) = ""
myA(3) = "" : myB(3) = ""
myA(4) = "" : myB(4) = ""
myA(5) = "" : myB(5) = ""
myA(6) = "" : myB(6) = ""
myA(7) = "" : myB(7) = ""
myA(8) = "" : myB(8) = ""
myA(9) = "" : myB(9) = ""
'「A.変更前」と「B.変更後」を指定する
'消去なら「""」
'置換なら「"置換するものを書く"」
'---------------------------------
With CreateObject("Scripting.FileSystemObject")
With .GetFile(MYFILE).OpenAsTextStream
myALLData = .ReadAll
.Close
End With
'---------------------------------
For j = 0 To UBound(myA)
If myA(j) <> "" Then _
myALLData = Replace(myALLData, myA(j), myB(j))
Next
'---------------------------------
myFLD = .GetFile(MYFILE).ParentFolder & "\"
myExt = "." & .GetExtensionName(MYFILE)
myName = myFLD & .GetBaseName(MYFILE)
myName = OFILE
Do
i = i + 1
MYFILE2 = myName & myExt
'MYFILE2 = myName & "(" & i & ")" & myExt
If Not .FileExists(MYFILE2) Then Exit Do
Loop
'---------------------------------
With .OpenTextFile(MYFILE2, 2, True)
.Write myALLData
.Close
End With
End With
End Sub
Msgbox "END"
2014年6月5日木曜日
確認
■フルコピー時にアクセスエラーとなる件について
約1500件あったが、backupadmin で実施することでコピー成功済。対象フォルダにdomain adminが読み込み権限となっていた。
一件 xxxx のみコピーできず、ACL上問題なし。ファイルが壊れていないか?
■フルコピーのコピー先フォルダがアクセスエラーで一覧をドリルダウンして確認することができないものがある
domain user の権限のみ付け直しでアクセスできるのか確認中。
■差分
pstファイルは対象外
①teamで実施。7時間でxxx消化で全然消化できなかった。
②多重化で全体処理時間に効果あるか確認中
8並行でグループ単位びファウル数がなるべく均等になるようにして実施中
robocopyでカテゴリ化にCPUを使用、メモリはボトルネックとならない。ネット和^九もデータ移送が少ないことから問題なし
ioアクセスに時間がかかると見ています。
③リアル監視の機能確認 予定
■ACLの取得情報について
検証
ツールを入手(3階層可能であればこれを利用したい)
フルコピー時
案 上位3層のフォルダ権限の移送を確認
案 全数実施は時間がかかる、3層移行は権限継承の運用のため
差分コピー時
上位3層のフォルダの追加変更があればを確認
■フォルダ ファイルの件数確認について
検証
ツールにて確認予定で作成中
フルコピー時
移送元、移送先で 全数確認
差分コピー時
ツールコピー分のみ件数確認
2014年6月4日水曜日
RoboCopy subinacl
subinacl /noverbose /outputlog=d\admtools\acl.log /subdirectories d:\admtools /display
2014年6月2日月曜日
差分Robo
robocopy "D:\admtools\in" "D:\admtools\out" *.* MON:5 MOT:5 /RH:0700-2358 /MIR /XO /NP /COPY:DATSO /R:0 /LOG+:"d:\admtools\log\log2.txt" /FP /TS /TEE
dirusem
' --< フォルダの再帰処理 >------------------------------------------------------
Sub FolderSearch1(fn)
' 引数に指定されたフォルダの情報を取得
Set subf = fso.GetFolder(fn)
' ファイル数と、サブフォルダ数の加算
TotalCountFile = TotalCountFile + subf.Files.Count
TotalCountFolder = TotalCountFolder + subf.Subfolders.Count
iTotalCountFile = subf.Files.Count
iTotalCountFolder = subf.Subfolders.Count
' 指定のフォルダに格納された各ファイルの処理
For Each FileName In subf.Files
TotalSize = TotalSize + FileName.Size
iTotalSize = iTotalSize + FileName.Size
Next
if iTotalCountFile = 0 then
iTotalSize = 0
end if
WScript.Echo "" & iTotalCountFolder & " " & iTotalCountFile & " " & iTotalSize & " SUB-TOTAL:" & fn
' 指定のフォルダに格納された各サブフォルダを処理する
For Each FolderName In subf.Subfolders
FolderSearch1(FolderName)
Next
End Sub
Sub FolderSearch2(fn)
' 引数に指定されたフォルダの情報を取得
Set subf = fso.GetFolder(fn)
' ファイル数と、サブフォルダ数の加算
TotalCountFile = TotalCountFile + subf.Files.Count
TotalCountFolder = TotalCountFolder + subf.Subfolders.Count
' 指定のフォルダに格納された各ファイルの処理
For Each FileName In subf.Files
TotalSize = TotalSize + FileName.Size
Next
' 指定のフォルダに格納された各サブフォルダを処理する
For Each FolderName In subf.Subfolders
FolderSearch2(FolderName)
Next
End Sub
' --< メインルーチン >----------------------------------------------------------
' オブジェクト定義
Set arg = WScript.Arguments
Set fso = CreateObject("Scripting.FileSystemObject")
' カウンタクリア
TotalSize = 0
TotalCountFile = 0
TotalCountFolder = 0
' フォルダ探索開始
WScript.Echo now()
WScript.Echo "Directorys Files Size(b) Directory"
If arg.Count < 2 Then
FolderSearch2(arg(0))
else
FolderSearch1(arg(0))
end if
' 結果表示
WScript.Echo TotalCountFolder & " " & TotalCountFile & " " & TotalSize & " TOTAL:" & arg(0)
WScript.Echo now()
登録:
投稿 (Atom)