Como crear un batch para hacer respaldo que cumpla algunas funciones puntuales

Mi duda es simple pero a su vez compleja:

En mis break dentro de la oficina aprovecho para estudiar y descargar información de mi carrera la cual es mucha!

Por eso quiero hacer un batch que me sirva para hacer respaldos de mi pc del trabajo en mi unidad disco duro portable. Pero que cumpla algunos parámetros:

1). Me busque los archivos en ambas unidades (mi pc y mi DD portable), para saber cuales ya están respaldados y cuales están pendientes.

2). Me permita elegir si copiar o mover los archivos que seleccione.

3). Me permita decidir si eliminar o no los archivos originales.

Y como un plus de ser posible eliminar cualquier archivo duplicado. (Porque en tantas descargas a veces repito archivos).

¿Me podrías ayudar?

Post data: recién comienzo a programar (solo x Hobby y para mi uso) y soy bastante neófito en el tema.

1 Respuesta

Respuesta
1

De momento voy a intentar "centrar" el "entorno de trabajo":

En principio diría que hay dos componentes/comandos del sistema operativo que son bastante útiles para los backup y que son XCOPY y ROBOCOPY. El segundo creo que es muy, muy potente pero no tengo gran experiencia con él. Yo suelo usar el XCOPY.

Respecto al primer punto ambos comandos permiten seleccionar que solo se haga el backup de archivos nuevos o más recientes en cuanto a la fecha en caso de que no fueran nuevos. Creo que esto podría satisfacer el punto 1.

En el punto 2 no me queda claro cuando quieres elegir que se mueva o se copie.

Con el punto 3 me ocurre otro tanto y, además, mover un archivo ya supone eliminar el original, de modo que seguiríamos en el punto 2, ¿no?

Con lo que comentaba más arriba si solo haces backup de archivos nuevos o más recientes nunca habrá duplicados (al menos desde el punto de vista de los nombres de los archivos).

Para que podamos hablar de algo en concreto incluyo aquí un ejemplo de BAT de Backup extraído del que yo utilizo personalmente:

@echo off
Echo Haciendo Backup sobre unidad %1:
if %1.==. goto error
if not exist "%1:\MiBackUp" goto dskinc
echo %date% %time% >> d:\bat\MiBackup.log
set disco=%1
call :Parcial Documents "Mis Documentos" 
call :Parcial workspace "Workspace Java"
call :Parcial "3D Objects" "Objetos 3D" 
echo Backup terminado correctamente
goto :fin
:Dskinc
Echo Disco no presente o incorrecto
Pause
goto :fin
:Error
Echo El formato de la llamada es %0 UnidadDeBackup
echo Ejemplo de Backup sobre unidad G:
Echo %0 G
:Fin
Pause
exit
:Parcial
set parte=%~1
set destino=%~2
echo Backup de carpeta %parte% (Users\<usuario>)
xcopy /D /S /Y /I /H "C:\Users\<usuario>\%parte%\*.*" "%disco%:\MiBackUp\%destino%" >> d:\bat\MiBackup.log
if errorlevel 5 echo.&echo Error de disco en la grabacion&goto :fin
if errorlevel 4 goto :fin
if errorlevel 2 echo.&echo No hay espacio suficiente en el disco&goto :fin
if errorlevel 1 echo.&echo No hay archivos a copiar&goto :fin

Comentarios:

1. Suponiendo que el bat se llamara BKXCOPY.BAT para hacer el backup sobre la unidad G: se invocaría como BKXCOPY G (sin ":")

2. Para evitar errores comprueba que en la unidad indicada exista una carpeta de nombre MIBACKUP y deja rastro de las ejecuciones en un log llamado MIBACKUP.LOG ubicado en D:\BAT. Por supuesto estas cosas se pueden cambiar o eliminar

3. Se supone que las carpetas de las que se hace Backup cuelgan todas de C:\Users\<usuario>, donde en lugar de <usuario> habría que poner el nombre de tu usuario. Si no va a ser este el caso habría que cambiar la rutina :PARCIAL para indicarle el path completo del origen y el destino de las copias

4. Para entender el significado de las distintas opciones indicadas en el comando XCOPY puedes teclear "XCOPY /?" en una ventana CMD/Símbolo del sistema

¿Has probado el modelo de backup que te he propuesto o ya has resuelto el problema por otro camino?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas