Script por lotes de Windows para hacer una copia de seguridad de los datos

Es posible que los usuarios de computadoras que hayan crecido con computadoras Mac y Windows avanzadas no lo sepan, pero una vez, hace mucho tiempo, todas las computadoras personales se controlaban mediante una interfaz de línea de comandos. Sí, ese cuadro de comando torpe en su máquina con Windows solía ser literalmente la única forma en que la mayoría de las personas interactuaban con una computadora. Las interfaces de línea de comandos se basaban en gran medida en pequeños programas llamados "scripts", que eran colecciones de comandos del sistema operativo que se usaban para realizar tareas comunes.

Aunque las interfaces gráficas de usuario de las PC actuales son años luz más sofisticadas y fáciles de usar que las antiguas líneas de comando, todavía existen usos para el método más antiguo de controlar su computadora. Una de las aplicaciones más comunes y adecuadas para un script de línea de comandos es la copia de seguridad de datos. Los scripts de línea de comandos se pueden automatizar para que se ejecuten en cualquier momento sin interacción humana y tienen pocas limitaciones. Lo mejor de todo es que son una parte integrada del sistema operativo Windows.

¿Por qué los scripts de línea de comandos?

¿Por qué utilizar un script de línea de comandos cuando existen programas de copia de seguridad comerciales y gratuitos? Bueno, los scripts de línea de comandos tienen una serie de ventajas únicas. Éstos son algunos de ellos:

  • Comandos nativos : ¿Qué mejor manera de hacer una copia de seguridad de los datos que utilizando las funciones disponibles a través del programa que crea los datos? Ya sea que se trate del sistema operativo en sí a través de un comando de copia de archivo simple o un comando de base de datos para producir un archivo binario restaurable, el programa fuente sabe mejor cómo hacer una copia de seguridad.
  • Control definitivo : Dado que un script de línea de comando sigue un procedimiento simple paso a paso, usted sabe exactamente lo que está sucediendo y puede modificar fácilmente el comportamiento.
  • Rápido : Dado que todo es un comando nativo, nada está sujeto a interpretación. Nuevamente, está utilizando comandos proporcionados por el programa en sí, por lo que la sobrecarga se mantiene al mínimo.
  • Poderoso : Todavía tengo que ver una tarea de copia de seguridad que no se puede realizar a través de una secuencia de comandos de línea de comandos ... y he hecho algunas cosas extravagantes. Aunque es posible que tenga que investigar un poco y probar y cometer errores si tiene necesidades realmente únicas, normalmente las funciones integradas y las características del lenguaje de secuencias de comandos que está utilizando son más que suficientes.
  • Gratis y flexible : Obviamente, un script de línea de comandos no cuesta nada (fuera del tiempo para desarrollarlo), por lo que puede copiar sus scripts en cualquier número de máquinas y sistemas con poco o ningún tiempo o costo. Compare esto con el costo de comprar licencias para software de respaldo en varios servidores y / o máquinas de escritorio.

Una descripción general rápida del script por lotes de respaldo

La mayoría de la gente nunca ha aprendido a utilizar secuencias de comandos de línea de comandos y se considera una especie de "arte negro". Sin embargo, en realidad es algo bastante sencillo de aprender. Para demostrar el poder de la línea de comandos, proporciono un sencillo script por lotes de Windows que puede utilizar para hacer una copia de seguridad de sus datos importantes. Esta secuencia de comandos configurable y personalizable no requiere ningún conocimiento (o voluntad de aprender) del lenguaje de secuencias de comandos por lotes de Windows, pero si decide que desea obtener más información sobre las secuencias de comandos por lotes de Windows, encontrará que esta secuencia de comandos es un buen punto de partida. .

Qué hace el script de respaldo:

  1. Crea copias de seguridad incrementales completas o diarias (consulte a continuación para obtener una definición) de los archivos y carpetas que especifique en un archivo de texto de configuración separado (consulte a continuación).
    • Cuando se nombra una carpeta, se realiza una copia de seguridad de esa carpeta y de todas las subcarpetas.
    • Cuando se nombra un archivo, solo se realiza una copia de seguridad de ese archivo.
  2. Comprime (zip) los archivos respaldados. Una vez que se copian todos los archivos de los que se va a realizar una copia de seguridad, se comprimen para ahorrar espacio. Es necesario instalar 7-Zip en su sistema para que esto funcione.
  3. Da fecha al archivo comprimido y lo mueve a una ubicación de almacenamiento. Una vez comprimidos los archivos de respaldo, el archivo resultante recibe un nombre de archivo de acuerdo con la fecha actual y luego se mueve a una ubicación de almacenamiento configurada, como una unidad externa o una ubicación de red.
  4. Limpia después de sí mismo. Una vez completadas todas las tareas, el script por lotes limpia todos los archivos temporales que creó.

Requisitos:

Windows 2000 / XP / 2003 / Vista o más reciente

7-Zip (es gratis)

Archivo de configuración:

El archivo de configuración es simplemente un archivo de texto que contiene archivos y carpetas para respaldar, ingresado un elemento de respaldo por línea. Este archivo deber se llamará “BackupConfig.txt” y se ubicará en la misma carpeta que el script de respaldo. Aquí hay un ejemplo de un archivo BackupConfig.txt (nota, el carácter "#" en la primera línea indica que la línea es un comentario; los comentarios siempre se ignoran cuando se ejecuta el script):

# Ingrese los nombres de archivos y carpetas, uno por línea.

C: Documentos y configuraciones Jason Faulkner Escritorio C: Documentos y configuraciones Jason Faulkner Mis documentos Archivos importantes C: ScriptsBackupScript.bat

El ejemplo anterior haría una copia de seguridad del escritorio del usuario de Windows Jason Faulkner (y de todas las carpetas en el escritorio), la carpeta llamada "Archivos importantes" dentro de Mis documentos (y todas las carpetas dentro de "Archivos importantes") y el archivo "BackupScript.bat" dentro el directorio C: Scripts.

Tipos de copias de seguridad:

  • Copia de seguridad completa: se incluye una copia completa de todos los archivos y carpetas (incluidas las subcarpetas) en la copia de seguridad.
  • Copia de seguridad incremental: cuando se proporciona una carpeta, solo los archivos creados o modificados en el fecha actual son

    respaldado. Cuando se proporciona un archivo, siempre se realiza una copia de seguridad, independientemente de cuándo se modificó.

El script por lotes de Windows de copia de seguridad de datos

Quiero enfatizar que este script es muy básico, ya que todo lo que hace es crear copias de seguridad utilizando una copia de archivo simple. Hay algunas opciones de configuración que puede establecer:

  • La ubicación de almacenamiento de la copia de seguridad donde se almacenan los archivos de copia de seguridad comprimidos resultantes.
  • El día de la semana en que se ejecuta la copia de seguridad completa (cualquier otro día se ejecutaría una copia de seguridad incremental).
  • Ubicación del lugar donde está instalado 7-Zip en su computadora. La secuencia de comandos se configura automáticamente para buscar en la ubicación predeterminada.

Si tiene alguna sugerencia o solicitud de funciones, comente a continuación. Realmente me encantaría hacer un artículo de seguimiento de esta publicación que presenta un script actualizado basado en la entrada del lector. Si necesita instrucciones sobre cómo "usar" este script o configurar una tarea programada, eche un vistazo a los enlaces debajo de la fuente del script.

Sin más preámbulos, aquí está:

Nota: Dado que las citas no se muestran correctamente a continuación (y como resultado pueden estropear el script), he incluido un enlace de texto sin formato debajo del script que puede usar para obtener una fuente precisa para copiar.

@ECHO OFF REM BackupScript REM Versión 1.01, Actualizado: 2008-05-21 REM Por Jason Faulkner (artículos [-at-] 132solutions.com) REM Realiza copias de seguridad completas o incrementales de carpetas y archivos configurados por el usuario. Uso de REM --- REM> BackupScript SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION REM --- Opciones de configuración --- REM Ubicación de la carpeta donde desea almacenar el archivo de respaldo resultante. REM Esta carpeta debe existir. No pongas una '' al final, esto se agregará automáticamente. REM Puede ingresar una ruta local, una letra de unidad externa (ej. F :) o una ubicación de red (ej. \ Serverbackups) SET BackupStorage = C: Backup REM ¿En qué día de la semana desea realizar un respaldo completo? REM Introduzca uno de los siguientes: dom, lun, mar, miércoles, jueves, viernes, sábado, * REM Cualquier día de la semana que no sea el especificado a continuación ejecutará una copia de seguridad incremental. REM Si ingresa '*', se ejecutará una copia de seguridad completa cada vez. SET FullBackupDay = * REM Ubicación donde está instalado 7-Zip en su computadora. REM El valor predeterminado está en una carpeta, '7-Zip' en su directorio Archivos de programa. SET InstallLocationOf7Zip =% ProgramFiles% 7-Zip REM + --------------------------------------- -------------------------------- + REM | No cambie nada a continuación aquí a menos que sepa lo que está haciendo. | REM + ------------------------------------------------ ----------------------- + Variables de uso REM. SET exe7Zip =% InstallLocationOf7Zip% 7z.exe SET dirTempBackup =% TEMP% backup SET filBackupConfig = BackupConfig.txt Validación REM. SI NO EXISTE% filBackupConfig% (ECHO No se encontró el archivo de configuración, falta:% filBackupConfig% GOTO End) SI NO EXISTE "% exe7Zip%" (ECHO 7-Zip no está instalado en la ubicación:% dir7Zip% ECHO Actualice el directorio donde 7-Zip está instalado. GOTO Fin) Variables de copia de seguridad de REM. FOR / f "tokens = 1,2,3,4 delims = /" %% a IN ('fecha / t') DO (SET DayOfWeek = %% a SET NowDate = %% d - %% b - %% c SET FileDate = %% b - %% c - %% d) IF {% FullBackupDay%} == {*} SET FullBackupDay =% DayOfWeek% IF / i {% FullBackupDay%} == {% DayOfWeek%} (SET txtBackup = Full SET swXCopy = / e) ELSE (SET txtBackup = Incremental SET swXCopy = / s / d:% FileDate%) ECHO Comenzando a copiar archivos. SI NO EXISTE "% dirTempBackup%" MKDIR "% dirTempBackup%" FOR / f "skip = 1 tokens = *" %% A IN (% filBackupConfig%) DO (SET Current = %% ~ A IF NOT EXIST "! Current! "(¡ERROR DE ECHO! No encontrado:! Actual!) ELSE (Copia de ECHO:! Actual! SET Destino =% dirTempBackup%! Actual: ~ 0,1! %% ~ pnxA REM Determina si la entrada es un archivo o directorio. SI "%% ~ xA" == "" (Directorio REM. XCOPY "! ¡Actual!" "! Destino!" / v / c / i / g / h / q / r / y% swXCopy%) ELSE (Archivo REM. COPY / v / y "! Actual!" "! Destino!"))) ECHO Finalizado la copia de archivos. ECO. SET BackupFileDestination =% BackupStorage% Backup_% FileDate% _% txtBackup% .zip REM Si el archivo de respaldo existe, elimínelo en favor del nuevo archivo. SI EXISTE "% BackupFileDestination%" DEL / f / q "% BackupFileDestination%" ECHO Comprimir archivos respaldados. (Nueva ventana) REM Comprime archivos usando 7-Zip en un proceso de menor prioridad. INICIO "Comprimiendo copia de seguridad. NO CERRAR" / belownormal / wait "% exe7Zip%" a -tzip -r -mx5 "% BackupFileDestination%" "% dirTempBackup%" ECHO Terminado de comprimir los archivos de copia de seguridad. ECO. ECHO Limpieza. SI EXISTE "% dirTempBackup%" RMDIR / s / q "% dirTempBackup%" ECHO. : Fin ECHO Terminado. ECO. ENDLOCAL

La fuente de texto sin formato está disponible aquí: copia de seguridad

Si necesita ayuda para comenzar a implementar este script, aquí hay un par de enlaces para ayudarlo:

  • Cómo crear un archivo por lotes
  • Cómo crear una tarea programada de Windows

Este es el mismo script que uso para hacer una copia de seguridad de mi computadora a diario (con un par de modificaciones, por supuesto), así que sé que funciona muy bien. Espero que le sea útil.

¡Disfrutar!