Pseudo: ~TimeMachine o Como hacer backups automáticos en Windows

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Category : Customization, Pseudo, Software, Soluciones

Bienvenidos a esta nueva sección, que a falta de originalidad llamaré Pseudo.

Pseudo es una sección dedica a la codificación y/o modificación de algunas características de windows (o Linux) con el fin de hacerlo más productivo.

Hoy, me complace anunciar Pseudo: ~TimeMachine.

time-machine-logo

TimeMachine, de Leopard OSX, es un programa que guarda los cambios hechos dentro de la última hora para salvarte de esas molestas pérdidas de información ocasionadas por cualquier improvisto.

Sin entrar en mucho detalle de su funcionamiento, propondré una imitación de este programa basándome en RSYNC y la idea de Mike Rubel.

RSync, es un programa de los sistemas *NIX que sincroniza archivos y folders en distintos lugares mientras minimiza la cantidad de información enviada usando el algoritmo de diferenciación Delta Encoding. Lo que lo hace tan especial es, primero, la rapidez con que transfiere los archivos, ya que solo requiere transferir los cambios en vez de transferir el archivo completo, y segundo, que se encuentra en la mayoria de los sistemas operativos.(Mac,*NIX e implementaciones en Windows).

Veremos una pequeña aplicación con los mismos principios para crear un backup (espejo) en un disco externo o partición distinta. En una segunda edición, veremos la aplicación a través de redes (Si, rsync viene de remote syncronization).

Precación: Se utilizará código BATCH, BASH, y algunos programas gratuitos.



Sin más que añadir, empecemos:

  1. Utilizaremos cwRsync que es la versión Lite de Rsync para windows. Esta trabaja en base a Cygwin , que es la terminal de Linux en windows. Asi que si pueden utilizar Cygwin, sólo necesitaran los paquetes Editor.Nano y Net.Rsync
  2. Tras instalar cwRsync, es hora de un poco de BATCH Scripting. Salvando un poco de espacio, les dejo el link de descarga:

    Sync.cmd

  3. Recuerde alterar las partes escritas con rojo.

    REM ** CUSTOMIZE ** Especifique donde se encuentran los archivos de CWRSync

    REM (Por Default en C:\CWRSYNC)

    SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC

    rsync -aPog --exclude-from=/cygdrive/c/Users/YO/exclude.txt --delete /cygdrive/c/Users/YO /cygdrive/k/Backups/YO

    REM Salve los datos del ultimo backup.

    echo Last backup > K:\Backups\YO\LastBK_Pictures.txt

    echo. |date|find "current" >> K:\Backups\YO\LastBK_Pictures.txt

    echo. |time|find "current" >> K:\Backups\YO\LastBK_Pictures.txt

Nota:

Como cwRsync se basa en cygwin, es necesario usar /cygdrive/c/ para el disco C, y  ‘/’ para cada folder. Por lo que algun archivo como C:\Users\PedroPerez\Documents\MiTesis.doc se convierte en /cygdrive/c/Users/PedroPerez/MiTesis.doc

Veamos poco a poco la llamada principal,

  • rsync  –azPog

    Inicia cwRSYNC, mantiendo la estructura de los archivos ( –a), mostrando el progreso de la ejecución ( –P), manteniendo al dueño del archivo (-o) y los grupos (-g) e intentará comprimir archivos (-z).

  • –exclude-from=/cygdrive/c/Users/YO/exclude.txt

    Lee el archivo de texto, donde cada linea representa un archivo o folder, el cual excluye de la copia. Por ejemplo, si se quieren omitir todos los archivos y subdirectorios dentro de Downloads (C:\Users\PedroPerez\Downloads\) del usuario Pedro Perez, el archivo de texto tendrá la siguiente linea:

    /Downloads/

    Ya que nuestro pwd sería C:\Users\PedroPerez\

  • –delete

    Como queremos mantener un espejo en un disco externo, usamos el argumento –-delete. Borra de la copia todos los archivos que fueron borrados en el original

  • /cygdrive/c/Users/YO

    Origen de los datos, recuerde que pedimos que se mantuviera la estructura de los archivos, por lo que se sincronizara todo folder dentro de este folder (que no este escrito en la lista de exclusión).

  • /cygdrive/k/Backups/YO

    Destino de los datos.

  • –dry-run o -n

    Es recomendable añadir el argumento  “-n” o “–dry-run” con el cual no se copia ni altera nada, pero muestra lo que el programa haría.

Solamente haría falta la aplicación, ya sea que mantegamos un vínculo a Sync.cmd y lo ejecutemos cada vez que nos acordemos o programar un Task para que lo ejecute cada x tiempo. Pero, eso queda como ejercicio para el lector.

637 palabras después, concluyo el primero (de los que espero muchos) Pseudos. Cualquier duda o aclaración, pongan un comment, busquen en google o recurran al MANual de Rsync.

Otros artículos en datatrv.net:

Post a comment