Una de las tareas más problemáticas para el usuario promedio es realizar copias de seguridad en Windows, lo que garantizaría el cierre de los siguientes problemas:
- rápido (perfecto en el fondo);
- Mantendría tanto la versión actual de los archivos como las anteriores;
- el almacenamiento de archivos no sería accesible para virus o desastres naturales como la destrucción del medio o su robo;
- el contenido de la copia de respaldo solo sería accesible para el usuario, es decir estaba protegido con contraseña.
Hay muchas sugerencias para esto, pero ninguna de ellas completa la tarea. La copia fácil y simple no da velocidad, el ahorro rápido no brinda confiabilidad, la copia a un disco duro externo no garantiza su robo.
Sin embargo, durante mucho tiempo existen herramientas para resolver el problema. Lo principal es aplicar correctamente la forma Unix y los archivos por lotes. Y la opción más fácil es archivar los archivos en un archivo y enviarlos al almacenamiento en línea utilizando la línea de comandos. Para acelerar el trabajo, la tarea se divide en 2 etapas: primero, se crea un archivo completo y se envía al almacenamiento en línea, luego se crean archivos incrementales según sea necesario, lo que da velocidad. El cifrado de archivos garantiza la seguridad de los datos.
Lo que se requiere para resolver el problema:
- Cuenta Yandex para obtener acceso webdav al disco Yandex. El uso de cualquier otro almacenamiento no está prohibido;
- 7z - archivador de consola, distribuido de forma gratuita;
- curl: una herramienta de consola para trabajar con Internet, distribuida de forma gratuita.
Para la
portabilidad , puse
7z.exe ,
7z.dll y
Curl.exe en un directorio. Dependiendo de cómo se compiló
Curl.exe , puede ser necesario colocar las
bibliotecas libeay32.dll ,
libssh2.dll ,
msvcr100.dll ,
MSVCR110.dll cerca o agregarlas al sistema.
Además en este directorio, es deseable crear un directorio en el que desee colocar archivos y directorios para el archivo futuro. Lo llamo
"copia de seguridad" y pongo enlaces duros a archivos o un enlace de directorio (la funcionalidad correspondiente está en FAR por la combinación de teclas Alt + F6). Por lo tanto, puedo, sin cambiar la estructura de los datos existentes, crear una estructura conveniente para mí para la copia de seguridad.
El siguiente directorio es
temp . Diseñado para almacenar un archivo de datos antes de enviarlo al servidor. Al mismo tiempo, será una copia cifrada de los datos actuales, que proporciona una copia de seguridad adicional en caso de un ataque de virus.
Luego, en el directorio de origen, debe crear un archivo bat (cmd) bastante simple
"full.bat" con el siguiente contenido:
@echo off set filebkp=work set pathbkp=backup set srvbkp=https://user:password@webdav.yandex.ru/backup/%filebkp% set pathtemp=temp set full=%filebkp%-full del /F /Q "%pathtemp%"\ 7z.exe a "%pathtemp%\%full%".7z -x!*.log; -r -mx1 "%pathbkp%\*" -ppass_for_archive curl.exe -k -X DELETE "%srvbkp%" --verbose -o .\stdout curl.exe -k -X MKCOL "%srvbkp%" --verbose -o .\stdout curl.exe -k -T "%pathtemp%\%full%".7z "%srvbkp%"/ --progress-bar --verbose -o .\stdout
- set filebkp = work : establece el nombre común de la computadora y la ruta en el servidor donde se almacenará la copia de seguridad. Porque puede haber varias computadoras, entonces puede ser una copia de seguridad de una computadora en funcionamiento (trabajo), hogar (hogar), computadora portátil (libro), lo que indica que un nombre individual no permitirá que las copias se mezclen entre sí.
- set pathbkp = backup : establece la ruta al directorio donde se almacenan los datos para la copia de seguridad, en este caso se indica el directorio con enlaces duros y enlaces de directorio que debería haber creado anteriormente.
- set srvbkp = https: // usuario: contraseña@webdav.yandex.ru/backup/%filebkp% : especifique el directorio en el servidor donde se cargará la copia de seguridad. usuario y contraseña: contraseñas de su cuenta en Yandex;
- set full =% filebkp% -full - establece el nombre del archivo de antemano.
- del / F / Q "% pathtemp%" \ - eliminar (borrar) el directorio temporal
- 7z.exe un "% pathtemp% \% full%". 7z -x! *. Log; -r -mx1 "% pathbkp% \ *" -p pass_for_archive : la línea de inicio del archivador. pass_for_archive : su contraseña para el archivo.
- curl.exe -k -X DELETE "% srvbkp%" --verbose -o. \ stdout - elimina el directorio de destino en el servidor.
- curl.exe -k -X MKCOL "% srvbkp%" --verbose -o. \ stdout - vuelve a crear el directorio de destino en el servidor.
- curl.exe -k -T "% pathtemp% \% full%". 7z "% srvbkp%" / --progress-bar --verbose -o. \ stdout - sube el archivo curl al servidor.
Por lo tanto, al ejecutar el
script "full.bat" , recibirá la versión completa de sus archivos en el archivo en el directorio
"temp" y lo mismo en el directorio
"backup / work" en el servidor, cifrado con su contraseña. Esto puede llevar algo de tiempo y tiene sus limitaciones en el volumen del archivo, pero los datos más importantes y al mismo tiempo que se cambian diariamente deben archivarse de esta manera.
¿Por qué son importantes y cambian a diario? Debido a que el siguiente script,
"inc.bat" , le permite buscar y enviar datos modificados al servidor en un archivo incremental que difiere de la versión completa:
@echo off set filebkp=work set pathbkp=..\backup set srvbkp=https://user:password@webdav.yandex.ru/backup/%filebkp% set pathtemp=..\temp set full=%filebkp%-full set inc=%filebkp%-inc set h=%TIME:~0,2% set m=%TIME:~3,2% set s=%TIME:~6,2% set ms=%TIME:~9,2% set curtime=%h%-%m%-%s% set dd=%DATE:~0,2% set mm=%DATE:~3,2% set yyyy=%DATE:~6,4% set curdate=%yyyy%-%mm%-%dd% set curdatetime=%curdate% %curtime% 7z.exe u "%pathtemp%\%full%".7z -x!*.log; -u- -up3q3r2x2y2z0w2!"%pathtemp%\%inc%".7z "%pathbkp%\*" -ppass_for_archive ren "%pathtemp%\%inc%".7z "%inc% %curdatetime%".7z curl.exe -k -T "%pathtemp%\%inc% %curdatetime%".7z "%srvbkp%"/ --progress-bar --verbose -o .\stdout
Creo que puede descifrar este archivo usted mismo: con 7z, el script analiza el archivo completo y el directorio de origen en
el directorio
temporal , encuentra los archivos modificados, los empaqueta en un archivo incremental nombrado por la fecha y hora actuales, y lo envía al servidor. Por lo tanto, si una copia de seguridad completa tarda, digamos, 1 gigabyte y 3 minutos de tiempo, los archivos modificados generalmente tardan entre 10 y 50 megabytes y vuelan al servidor en unos segundos. Al colocar
"inc.bat" en el Programador de tareas de Windows, permitirá que este proceso se
realice de acuerdo con un programa en un momento conveniente para usted, lo que le permitirá olvidarse de él.
Cuando le parezca que el tiempo para crear copias incrementales se ha vuelto demasiado largo, puede ejecutar
"full.bat" nuevamente, esto borrará todos los directorios de archivos completos e incrementales y creará una versión nueva de la versión completa.