Uma das tarefas mais problemáticas para o usuário médio é fazer backup no Windows, o que garantiria que os seguintes problemas fossem encerrados:
- rápido (perfeito em segundo plano);
- Manteria a versão atual dos arquivos e as anteriores;
- o armazenamento de arquivos não seria acessível a vírus ou desastres naturais, como a destruição da mídia ou seu roubo;
- o conteúdo da cópia de backup seria acessível apenas ao usuário, ou seja, foi protegido por senha.
Há muitas sugestões para isso, mas nenhuma delas conclui a tarefa. A cópia fácil e simples não oferece velocidade, a economia rápida não oferece confiabilidade, a cópia para um disco rígido externo não garante seu roubo.
No entanto, por um longo tempo, existem ferramentas para resolver o problema. O principal é aplicar corretamente a maneira Unix e os arquivos em lote. E a opção mais fácil é arquivar os arquivos em um arquivo e enviá-lo para o armazenamento online usando a linha de comando. Para acelerar o trabalho, a tarefa é dividida em 2 etapas - primeiro um arquivo completo é criado e enviado ao armazenamento on-line e, em seguida, arquivos incrementais são criados conforme necessário, o que aumenta a velocidade. A criptografia de arquivo garante a segurança dos dados.
O que é necessário para resolver o problema:
- Conta Yandex para obter acesso ao webdav no disco Yandex. O uso de qualquer outro armazenamento não é proibido;
- 7z - arquivador de console, distribuído gratuitamente;
- curl - uma ferramenta de console para trabalhar com a Internet, distribuída gratuitamente.
Para
portabilidade , coloquei
7z.exe ,
7z.dll e
Curl.exe em um diretório. Dependendo de como o
Curl.exe foi compilado, pode ser necessário colocar as bibliotecas
libeay32.dll ,
libssh2.dll ,
msvcr100.dll ,
MSVCR110.dll nas proximidades ou adicionar ao sistema.
Ainda neste diretório, é desejável criar um diretório no qual você deseja colocar arquivos e diretórios para o futuro arquivo morto. Eu o chamo de
“backup” e coloco links físicos para arquivos ou um link de diretório (a funcionalidade correspondente está em FAR pela combinação de teclas Alt + F6). Assim, posso, sem alterar a estrutura dos dados existentes, criar uma estrutura conveniente para mim para backup.
O próximo diretório é
temp . Projetado para armazenar um arquivo de dados antes de enviá-lo ao servidor. Ao mesmo tempo, será uma cópia criptografada dos dados atuais, que fornece backup adicional em caso de ataque de vírus.
Em seguida, no diretório de origem, você precisa criar um arquivo bat (cmd) bastante simples,
“full.bat”, com o seguinte conteúdo:
@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 - defina o nome comum do computador e o caminho no servidor em que o backup será armazenado. Porque pode haver vários computadores e, em seguida, pode ser uma cópia de backup de um computador de trabalho (trabalho), casa (casa), laptop (livro), indicando que um nome individual não permitirá que as cópias se misturem.
- set pathbkp = backup - definindo o caminho para o diretório em que os dados para backup estão armazenados, neste caso, o diretório com links físicos e links de diretório que você deveria ter criado anteriormente é indicado.
- set srvbkp = https: // user: password@webdav.yandex.ru/backup/%filebkp% - especifique o diretório no servidor em que o backup será carregado. usuário e senha - senhas da sua conta no Yandex;
- set full =% filebkp% -full - defina o nome do arquivo antecipadamente.
- del / F / Q "% pathtemp%" \ - exclua (limpe) o diretório temporário
- 7z.exe um "% pathtemp% \% full%". 7z -x! *. Log; -r -mx1 "% pathbkp% \ *" -p pass_for_archive - a linha de inicialização do arquivador. pass_for_archive - Sua senha para o arquivo morto .
- curl.exe -k -X DELETE "% srvbkp%" --verbose -o. \ stdout - exclui o diretório de destino no servidor.
- curl.exe -k -X MKCOL "% srvbkp%" --verbose -o. \ stdout - recria o diretório de destino no servidor.
- curl.exe -k -T "% pathtemp% \% full%". 7z "% srvbkp%" / --progress-bar --verbose -o. \ stdout - carrega o arquivamento de curl no servidor.
Assim, executando o script
“full.bat” , você receberá a versão completa dos seus arquivos no arquivo
morto no diretório
“temp” e o mesmo no diretório
“backup / trabalho” no servidor, criptografado com sua senha. Isso pode levar algum tempo e tem limitações no volume do arquivo morto, mas os dados mais importantes e ao mesmo tempo alterados diariamente devem ser arquivados dessa maneira.
Por que são importantes e mudam diariamente? Como o script a seguir,
“inc.bat” , permite localizar e enviar dados modificados para o servidor em um arquivo incremental diferente da versão 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
Eu acho que você pode descriptografar esse arquivo sozinho - usando 7z, o script analisa o arquivo completo e o diretório de origem no diretório
temp , encontra os arquivos alterados, os empacota em um arquivo incremental nomeado pela data e hora atuais e o envia ao servidor. Portanto, se um backup completo demorar 1 gigabyte e 3 minutos, os arquivos modificados geralmente levarão de 10 a 50 megabytes e voarão para o servidor em alguns segundos. Ao colocar
“inc.bat” no Agendador de Tarefas do Windows, você permitirá que esse processo ocorra de acordo com uma programação em um horário conveniente, o que permitirá que você esqueça.
Quando lhe parecer que o tempo para a criação de cópias incrementais se tornou muito longo, você poderá executar o
“full.bat” novamente - isso limpará todos os diretórios dos arquivos completos e incrementais e criará uma nova versão da versão completa.