Mini-Tutorial: Crear copia de seguridad sin esfuerzo, y en cuestión de segundos.

Iniciado por SuperDraco, 14 Junio 2011, 19:58 PM

0 Miembros y 1 Visitante están viendo este tema.

SuperDraco

 :D

Hola, este tutorial va dedicado a los vagos como yo que les cuesta mantener un backup cada cierto tiempo con el uso de programas especializados en ello, o haciendolo manualmente.

Bueno, para no alargar el sermón... básicamente aqui os dejo 2 scripts que he echo, bueno son archivos de registro, al "instalarlos" se creará una opción en el menú contextual del ratón...

...Lo único que hay que hacer es clickar sobre una carpeta, o sobre archivos, y elegir la opción de "Crear copia de seguridad".



NOTA: La copia de seguridad se guarda en " X:\Backup\"RUTA DEL ARCHIVO"\... " (Ejemplo: "C:\Backup\Users\Administrador\Desktop\Nueva carpeta\private.mp3")

Este es el archivo de registro para copiar carpetas (Con los archivos que tenga dentro, e incluido subdirectorios.):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Crear copia de seguridad]
@=""
"position"="bottom"
"icon"="cmd.exe"

[HKEY_CLASSES_ROOT\Directory\shell\Crear copia de seguridad\command]
@="CMD /k Title=Creando copia de seguridad... & For /F \"tokens=1,* Delims=\\\" %%a in ('echo %1') do (mkdir \"%%systemdrive%%\\Backup\\%%b\" >nul 2>&1 & xcopy /E /Y /I \"%1\" \"%%systemdrive%%\\Backup\\%%b\\\") && cls & Echo+ Copia de seguridad finalizada... & Ping -n 3 localhost >nul & exit"



Y este para copiar archivos sueltos:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Crear copia de seguridad]
@=""
"position"="bottom"
"icon"="cmd.exe"

[HKEY_CLASSES_ROOT\*\shell\Crear copia de seguridad\command]
@="CMD /k Title=Creando copia de seguridad && For /F \"tokens=1,* Delims=\\\" %%a in ('echo %%cd%%') do (mkdir \"%%systemdrive%%\\Backup\\%%b\" >nul 2>&1 & copy /Y \"%1\" \"%%systemdrive%%\\Backup\\%%b\\\") && cls & Echo+ Copia de seguridad finalizada... & Ping -n 3 localhost >nul & exit"





EDITO:

Un extra de iconos por si quereis cambiar el de la consola del cmd.exe xD




No he vuelto, solo estoy de paso.


SuperDraco

Cita de: d3xf4ult en 15 Junio 2011, 01:21 AM
Está estupendo pitoloko! ;-)

Y si explicas un poco las instrucciones de comandos, ya sería la hos****!
;D

Muchas gracias, claro ahora te explico el primer script así rápidamente, el otro es casi identico.

PD: Por desgracia creo que no se explicar las cosas muy bien xDDD






CMD /k = /K para abrir una instancia del cmd y que no se cierre.

Title=Creando copia de seguridad... = Es el título que tendrá la ventana del cmd...

For /F "tokens=1,* Delims=\" %%a in ('echo %1') do (
mkdir "%%systemdrive%%\Backup\%%b" >nul 2>&1
xcopy /E /Y /I "%1" "%%systemdrive%%\Backup\%%b\")


echo sirve para mostrar en la pantalla del cmd, y %1 es el argumento, con echo %1 obtendremos la ruta del archivo o carpeta que hayamos clickado... (ejemplo: C:\users\pitoloko\desktop),  con tokens separamos el resultado (La ruta del archivo) en 2 partes, token 1 y token 2 (*)

Con delims delimitamos el resultado al caracter \, esto quiere decir que por cada caracter\ se separará y se guardará en un token, pero como he limitado el FOR a usar solo 2 tokens, la ruta del ejemplo quedaría así:

token 1 = C:\
(Variable %%a)


token 2 = users\pitoloko\desktop
(Variable %%b)

Ahora ya tenemos separado el resultado como nos interesa, solo hace falta usar la variable %%b o el mkdir no funcionaria, el comando del mkdir es para crear la ruta...

mkdir "%%systemdrive%%\Backup\%%b" >nul 2>&1

La variable %systemdrive% es la letra de la unidad del sistema, vamos... suele ser C:\ ,y la variable %%b ya lo he dicho antes, quedaría así:

mkdir "C:\Backup\users\pitoloko\desktop"

>nul 2>&1 = lo uso para ocultar el redireccionamiento, si la carpeta ya existia saldría un molesto mensaje diciendo que ya existe (Pero no es un error mio, ni del script, ni funciona mal ni nada, solo que eso pasaría por ejemplo si haces un backup 2 veces de la misma carpeta.)

xcopy /E /Y /I "%1" "%%systemdrive%%\Backup\%%b\"

Xcopy es para copiar directorios, con /E se copian tambien los subdirectorios, con /Y se reemplaza cualquier archivo existente (al backup), y el modificador /I se me ha colado, no hace falta usarlo en este script la verdad jaja pero tampoco viene de más.

&& = Para asegurarse de no seguir con los siguientes comandos del script si el proceso anterior (El for, el más importante) no se haya ejecutado bien.

cls = limpia la pantalla del cmd

Ping -n 3 localhost >nul = Hace 3 peticiones que viene a ser lo mismo que pausar el script durante tres segundos (-n 3) y...

exit = ...Y se termina el proceso.  :xD



El 2º script se diferencia del primero en que usa la variable %cd% para obtener la ruta en el for en vez del argumento %1 por una sencilla razón, si clickas en un archivo, el for actuaría de esta manera:

%1 = C:\users\pitoloko\archivo.txt

token * (%%b) = users\pitoloko\archivo.txt

mkdir "C:\backup\users\pitoloko\archivo.txt"



Y el mkdir crea carpetas, no archivos... xD, y como es muy dificil separar el último token (archivo.txt) porque habría que predecir cuantos tokens tiene la ruta y es imposible o al menos un engorro, pues uso la variable %cd% que viene a ser la ruta en donde se encuentra el archivo (C:\users\pitoloko\), lo mismo que hace el argumento %1 en el primer script, y todo resuelto.

No he vuelto, solo estoy de paso.

otrebo

Hola pitoloko,

Quiero saber para que sistema operativo está hecho, que nombre debe tener este programita y por utimo donde se debe colocar para que trabaje bien.

Un saludo

sexiboymx

crei entenderle que no es un programita en si, sino mas bien son instrucciones para nuestro regiostro para habilitar el acceso, ya que en si son instrucciones de la consola de comandos (terminal), x tanto lo unico q hace es ahorrarnos trabajo es como si hicieras un acceso directo pero de mayor envergadura jejjejejejje

me gusto lo voi a calar en XP y 7 y 8
se agradece!!!!

HenSil

Hola pitoloko.

Necesito hacer algo muy similar en mi Windows 7 y consiste en crear una imagen del sistema desde el menú contextual (según entiendo backup es similar pero no lo mismo que una imagen del sistema y menos el XCOPY).

Al cliquear en el menú contextual se inicie la creación de la imagen de sistema, en mi caso C:\ (allí esta el SO) e I:\ (donde está el RECOVERY), más no un backup general del sistema, archivos, imágenes, etc..

Si pudiera colaborarme sería estupendo.

P.D.

Mis conocimientos de programación y demás son mínimos.

Eleкtro

ese pitoloko me suena :silbar:

@HenSil
Lo que pides es fácil, bueno, si quieres hacer un backup general de una selección personal de archivos y carpetas mejor deberías usar otra manera más cómoda, como por ejemplo...

Con este código de registro añades la opción al menú contextual de Windows 7:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Crear copia de seguridad]
@=""
"position"="bottom"
"icon"="cmd.exe"

[HKEY_CLASSES_ROOT\Directory\shell\Crear copia de seguridad selectiva\command]
@="\"c:\\windows\\backup.bat\""


Cuando pinches en la opción, se ejecutará el archivo indicado en la clave (C:\Windows\Backup.bat), así que este script lo llamas "backup.bat" y lo colocas en esa ruta:

Backup.bat:
Código (DOS) [Seleccionar]

@Echo OFF

:: Esta es la carpeta donde se guardará el backup.
Set "Output=%SYSTEMDRIVE%\Backup"

:: Estas son las carpetas que se van a copiar a la carpeta del backup.
(

Echo "C:\Users\Administrador\Documents"
Echo "C:\Users\Administrador\Music"
Echo "C:\Users\Administrador\Pictures"
Echo "Otra carpeta..."
Echo "L:\"

)>".\Backup.txt"

:: Creamos una carpeta con el nombre de la fecha del backup, en el directorio del backup.
MKDIR "%Output%\%DATE:/=-%" 2>NUL

:: Copiamos los directorios.
For /F %%# in (Backup.txt) DO (
Call Set "Folder=%%~f#"
   IF NOT "%%~p#" EQU "\" (Call Set "Folder=%%Folder:~2%%") ELSE (Call Set "Folder=\%%Folder::=%%")
Call XCopy /E /Y /I "%%#" "%Output%\%DATE:/=-%%%Folder%%"
)

Pause&Exit


PD: debes modificar las rutas del script por las que tu quieres.

Saludos








HenSil

Oye EleKtro H@cker, muchas gracias por ayudarme con tu respuesta.

Tu idea es estupenda, no la he aplicado aunque a simple vista funciona.

Bueno, te preguntarás ¿Y si crees que funciona por qué no la aplicas?

Pues bien, como comenté al solicitar ayuda, una imagen del sistema es diferente a un backup, y lo que yo necesito es precisamente una imagen del sistema (discos C: donde está el SO e I: donde está el RECOVERY).

Para mantener una copia de mis archivos no me complico con backups, me parece más económico en términos de espacio en disco duro, más fácil, rápido y eficiente usar SyncToy que sincroniza la unidad donde están mis datos con el destino donde tengo la copia y listo. AUNQUE, para hacer iniciar la ejecución de estas copias rápidamente, me gustaría también hacerla con un solo clic desde el menú contextual.
( Ni idea de cómo hacerlo, porque me sucede lo que plantearé más adelante y además, como dije, de programación y conocimiento de sistema, casi cero (0,00000001))

Pero lo más importante. para la imagen del sistema que permite crear Windows, se debe ir al Panel de control\Todos los elementos de Panel de control\Copias de seguridad y restauración\Crear imagen del sistema\Esperar a que busque las unidades disponibles\Definir en qué unidad quiero la imagen y etc, etc. etc, y todo esto es lo que me quiero evitar haciéndolo con un solo clic.

A este respecto, he podido averiguar que el programa que crea la imagen del sistema es sdclt.exe y averigüé también que la ventana donde se empieza a configurar la creación de la imagen se ejecuta con el modificador /BLBBACKUPWIZARD. Entonces, me cree un acceso directo a C:\Windows\System32\sdclt.exe /BLBBACKUPWIZARD y bueno, ya con esto me evito algunos de los muchos pasos que toca seguir y que ya cité; pero igual sigue siendo necesario llegar a un solo clic.

El problema está en que falta adicionar los parámetros de la configuración que entre otras, se dan una sola vez, al comienzo, al crear la primera imagen. pero ya después no deben ser necesarios ya que serán los mismos (destino, fuente, orden de iniciar la creación de la imagen,...).

Así que, aquí requiero de ayuda... ;)

Eleкtro

Ah, vaya, pues no me fijé en que querías exprésamente una imagen del sistema, culpa mía.

Entonces es mucho más sencillo que hagas esto:
Wbadmin start backup -backupTarget:L: -include:C: -quiet

Saludos








domin05