SharePoint logs and IIS logs backup/archive and Compress to a file



The data keeps on growing as the SharePoint Farm being adopted more into the company and customers. It brings more challenges in terms of keeping up with the pace of requests and data administration. We are going to address today one part of that problem which is managing SharePoint LOGS weather it is ULS, Diagnostic and Analytic logging. Also it includes IIS logs. To address this challenge I did wrote a small script to migrate these logs to a different directory and them zip these logs and move to a network storage or to another directory on the local hard drive.
Some of the challenges to achieve this were
·        There are IIS logs with same file names in different directories (mainly IIS logs) we need to maintain the directories structure to not miss any logs.
·        The criteria to move these logs out is based on a number of day , like I need to move all the logs 15 or older away from the default logs folder or drive.
·        Then zip these logs and add to same archive file as this script has to run daily and we have a single archive file on that machine and to maintain the zip name to reflect the server name to easy recognition on the network store.
·        All this to be scripted in batch scripting and using a free compress utility (7z) command line utility to include compress in the script.
·        Donwload 7z and install it to programfiles as we need to add this install path to environment variable PATH to use it in script directly

REM Sharepoint ULS and IIS Log cleanup script (backup and compress)
REM Venu Madhav
REM 18/july/2013

REM Enter the file path for the ULS log directory path
SET log=e:\logs

REM ENTER no of days old logs to be archived

SET days=15

REM Enter the location for the temporary logs backup and archive file location
SET backup=e:\logsbackup\archive

REM sets the compress utility directory  to PATH variable
SET PATH=%Path%;C:\Program Files\7-Zip

REM copy the current logs directory structure
mkdir %backup%
echo D | xcopy %log% %backup% /t

REM copies all the *.log files matching to the criteria in root directory initially
forfiles -p "%log%" -m *.log -d -%days% -c "cmd /c copy /Y @path %backup%\@file"

PUSHD %log%
FOR /F %%v IN ('dir/ad/b') DO forfiles -p "%log%\%%v" -m *.log -d -%days% -c "cmd /c copy @path %backup%\%%v\@file"
POPD

REM creating a compress file with hostname if it already exists it appends these logs either in local directory or network location
for /F %%v in ('hostname') DO 7z a e:\logsbackup\%%v.zip %backup%\*

REM once the logs are compressed remove the log files meeting the criteria
forfiles -p "%log%" -m *.log -s -d -%days% -c "cmd /c del @path /F /Q"

REM removing the temporary folder after the log compressed and zipped
rmdir %backup% /S /Q

Comments

Popular posts from this blog

Optimizing SharePoint 2013 Server Performance - Development Server (single server)

PowerShell Cmdlets to Upgrade Content Databases from SP 2010 to 2013