23 octubre 2023

Batch para Realizar un Backup de tus psts de Outlook

El correo electrónico es fundamental para cualquier usuario, pero si hablamos de una empresa, es imprescindible. Todos los días se envían múltiples correos, haciendo de este servicio un sistema fiable de comunicación y verificación de las conversaciones. Según statista en 2022 se enviaron 333,2 miles de millones de emails, con los nos podemos figurar el tráfico que genera en Internet.


El uso del correo electrónico es una necesidad, pero plantea desafíos con respecto a la seguridad, privacidad y continuidad de negocio. Algunos de estos son:

  • Amenazas de seguridad: Es un vía para intento de robo de contraseñas mediante phising o infecciones de malware en el envío de ficheros o acceso a urls.
  • Fuga de datos: Puede ser una herramienta para enviar información de la empresa o información privada que puede causar trastornos a la propia empresa.
  • Correcta gestión del correo: Los usuario deben conocer y gestionar correctamente el correo, sino se producen perdidas de tiempo o comunicaciones erróneas que bajan la productividad de la empresa.
  • Continuidad del negocio: El que el servidor de correo se caiga o se sobrecarguen los sistemas y se pare el servicio hace que el trabajo se ralentice al no contar con planes de contingencia al respecto.
Es por ello que muchas veces se debe crear un archivo de datos de Outlook (.pst) en el ordenador local para seguir recibiendo y enviando correos sin que se desborde la capacidad de nuestro sistema de correo y así tener las conversaciones archivadas. Pero que pasa si se estropea nuestro Disco Duro... pues que perdemos estos fichero .pst y con ellos los correos que se encuentran en el archivo.

Existen varias soluciones al respecto, yo hoy os muestro como de manera sencilla podéis crear un archivo batch para Windows que permite automatiza la copia de estos ficheros a otro ubicación como puede ser una NAS de manera encriptada y comprimida.

Para empezar podemos debemos crear con el propio Notepad de Windows 10 un archivo con extensión. .bat. 

Una vez creado comenzamos creando una portada acorde para dar una imagen de profesionalidad. Se puede realizar fácilmente leyendo este post.


@echo off
color 1F
rem Titulo
echo                        _________________________
echo                           bckMail - ElLisensiado
echo                        _________________________
echo .
echo # # # ### # # ## echo ## ## # # # # ### # echo # # # # # # # # # # echo # # # # # # # # echo # # ####### # # # # echo # # # # # # ### #
echo # # # # ### ####### # ##
echo              ########

Una vez tengamos la primera parte, se puede crear un menú, para que se ejecute el archivo a demanda, ya que los archivos pueden tener tamaños de  20 GB (en Outlook 2007) o 50 GB (en Outlook 2010, 2013, 2016 o 2019)  y esto puede hacer que el proceso de encriptado y copia a otra ubicación dure hasta horas. En ese menú se puede dar la opción tanto de reiniciar o apagar el pc cuando acabe.
   
rem Menú
echo   .
echo   Elija una opción:
echo   .
echo   1) Copia de Seguridad de carpetas de correo
echo   2) Copia de Seguridad de carpetas de correo y Reiniciar el PC
echo   3) Copia de Seguridad de carpetas de correo y Apagar el PC
echo   4) Salir
echo.

set /p var=Seleccione una opcion [1-4]: 

Ahora ya evaluamos la opción elegifa 
if "%var%"=="1" goto BackupPST
if "%var%"=="2" goto BackupPST
if "%var%"=="3" goto BackupPST
if "%var%"=="4" goto end

La parte principal del fichero es el siguiente apartado, en el que se mata la tarea de outlook para poder trabajar con los psts y se indica un password en la variable C1. Es interesante copiar esos password en un lugar seguro, y además todos deben de ser distintos para que si cae el fichero en malas manos, no se pueda leer sabiendo el de otro usuario. En mi caso utilicé el username del usuario de copia y añadí unos caracteres propios que archivé convenientemente. Posteriormente nos ponemos en la carpeta de copia, en mi caso en el perfil de usuario. Debemos tener todos los psts en una misma ubicación.

:BackupPST
set Cl=%USERNAME%XXX123abc
taskkill /IM "outlook.exe"
cd %userprofile%\pst_user

Si se va a copiar a una unidad compartida, debemos con net use mapear esa unidad con el usuario y password correspondiente, que luego se quitará el mapeo al acabar el proceso.

rem mapea la unidad, aunque después la elimina
NET USE \\nas\bckcorreo /u:usuario password

Podemos añadir log o similares del proceso, pero la parte central es este comando, que ayudado de la herramienta 7zip en línea de comando, los zipea y los encripta con password C1 indicado y los copia a la NAS indicada con el comando robocopy, borrándo el zip copiado una vez acabado el proceso.

Al final elimina la conexión de la carpeta compartida de la NAS y en función de la elección no hace nada, apaga o reinicia.

forfiles /M *.pst /C "cmd /c %userprofile%\pst_user\7zr a @fname.7z @path -p%Cl% & cmd /c robocopy %userprofile%\pas_user\ \\nas\bckcorreo\%username% @fname.7z /mt /z & del /Q @fname.7z 
rem Elimina la conexión
NET USE \\nas\bckcorreo D
rem Evalua si lanza outlook o apaga el pc
if "%var%"=="1" start outlook.exe
if "%var%"=="2" shutdown /r /f /t 60
if "%var%"=="3" shutdown /s /f /t 60
goto end
 
:end

En el caso de reinicio y apagado, solamente cambio la opción /r del comando shutdown.




No hay comentarios: