sábado, 24 de septiembre de 2016

Crear un script para realizar backups automatizados


Llego el loco de los Scripts!
Hola amigos tanto tiempo! para que no me olviden hoy vamos a realizar un script para todos los Windows. Un script automatizado para realizar backups cada cierto tiempo.

Intro:
He dejado un poco abandonado mi blog por algunos inconvenientes pero si me lo permiten decir "Nuestros problemas debemos dejarlo en las manos de Dios que siempre está presto a ayudar"... y otro motivo es porque he empezado a trabajar en lo que me gusta! pero no me he olvidado de mi blog, ya que me encanta ayudar a las personas, ya es algo que tengo en mis genes, en fin... en mi nuevo trabajo tuve que desarrollar un pequeño script para realizar backups diarios en el mismo disco y vía Dropbox.

Qué hace:
Copia los archivos que queremos hacer backup al iniciar la pc y al apagar en una carpeta determinada, y desde allí, si queremos copiarlo en la nube ya sea a Dropbox, Drive o OneDrive entre otros. También luego de determinado tiempo borra los backups realizados para ahorrar espacio.

¿Qué es lo que necesito?
-Winrar.
-Dropbox (opcional) - Descargar.

Ahora veamos línea a línea:

Tomamos la fecha actual del sistema operativo para guardar los backup por fecha y hora por ejemplo:  "backup_PROYECTOS_201609200800.rar"

for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined mydate set mydate=%%x
set fechahora=%mydate:~0,12%

set discoc=C es el disco C: donde está instalado Windows.
set discoBackup=F es el disco donde haremos el backup, si es el mismo disco C se pondrá ese mismo nombre "C".

ROBOCOPY %userprofile%\Documents\ %discoBackup%:\backup\Documentos\ *.doc *.xls /S

Robocopy es el comando que se encarga de realizar el copiado.
%userprofile% es nuetro usuario local.
Documents\ es nuestro usuario local direccionando a "mis documentos"
%discoBackup%:\backup\Documentos\ es la carpeta en donde se realizará dicho backup.
*.doc *.xls /S filtra solo los doc y los xls si queremos que filtre otros documentos solo debemos poner sus determinadas extensiones, como por ejemplo pdf, bmp, jpg, png, exe y así los archivos que deseemos copiar.

"c:\program files\winrar"\rar a -m0 -r -df "%discoBackup%:\backup\backup_DOCS_%fechahora%.rar" "%discoBackup%:\backup\Documentos"
Acá vemos que llamamos a la aplicación "Winrar", tenemos que tener mucho cuidado en este paso, ya que winrar al comprimir el archivo luego de hacerlo lo borra.

"%discoBackup%:\backup\backup_DOCS_%fechahora%.rar" es el archivo comprimido "nuestro backup"
"%discoBackup%:\backup\Documentos" es una carpeta temporal en donde copia los documentos filtrados para luego borrarlos.

"c:\program files\winrar"\rar a "%discoBackup%:\backup\backup_FOTOS_%fechahora%.rar" "C:\FOTOS"
Este paso es el más sencillo y capaz que el que más nos va a servir.
"%discoBackup%:\backup\backup_FOTOS_%fechahora%.rar" Es en donde se realizará el backup y "C:\FOTOS" es la ruta donde tengo mis "FOTOS". También puede llamarse "%discoc%:\FOTOS".

"c:\program files\winrar"\rar
a "C:\Users\usuario\Dropbox\backup_MUSICA_%fechahora%.rar" "C:\MUSICA"

En este paso copiamos el backup de nuestra música a Dropbox ¿Cómo? simplemente escribiendo la ruta donde está nuestra carpeta de DROPBOX la cuál se sincroniza a la nube.

forfiles /P "%discoBackup%:\backup" /M *.rar  /d -2 /c "CMD /C del @FILE"
forfiles /P "C:\Users\usuario\Dropbox\Sindi\" /M *.rar  /d -2 /c "CMD /C del @FILE"
En este paso también debemos tener mucho cuidado, la opción /d -2 /c significa que borrará cada 2 días las copias backups para que no se llene nuestro disco.
La primera borra desde el disco local donde realizamos el backup y el segundo lo borra de DROPBOX.

for /f %%. in ('forfiles /m "%~nx0" /c "cmd /c echo 0x07"') do set bell=%%.
echo %bell%

Hace un "bip" cada vez que termina de hacer el backup.

Por último, esto lo copiamos en un archivo de texto guardándolo con una extensión ".bat" y luego con la configuración de Windows "programador de tareas" que podemos buscarlo en el buscador de Windows, lo podemos configurar para que lo realicé cada vez que prendemos la computadora o a una hora determinada.

Otro tips:
Para que no nos aparezca la ventana negra o lo realice en segundo plano podemos hacer otro script en Visual Basic, que no es muy difícil.

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:scriptbackup.bat" & Chr(34), 0
Set WshShell = Nothing

"C:scriptbackup.bat" Es el nombre y la dirección de nuestro script.
Este pedazo de código lo copiamos en un documento de texto y lo guardamos con la extensión ".vbs" y en vez de ejecutar el ".bat" ejecutamos este.

En conclusión, se que es medio complejo entenderlo porque es un script personalizado, pero si lo estudian paso a paso se que les puede ser muy útil. También les recuerdo que pueden usar el comando "pause" para ver paso a paso que hace dicho script. Si tienen alguna mejora no duden en comentarlo abajo.

También estoy orgulloso de este script, porque no he encontrado programa que sea tan potente como este, me han pasado uno que se llama "cobian backup" pero no me convenció porque no realizaba copias a la nube ni tampoco borraba los backup cada determinado tiempo. Me siento orgulloso de pasarles este tremendo script.