Sauvegarde rapide et fiable des données dans le cloud

La sauvegarde sous Windows est l'une des tâches les plus problématiques pour l'utilisateur moyen, ce qui garantirait la fermeture des problèmes suivants:

  • rapide (parfait en arrière-plan);
  • Il conserverait à la fois la version actuelle des fichiers et les précédents;
  • le stockage des fichiers ne serait pas accessible aux virus ou aux catastrophes naturelles telles que la destruction du support ou son vol;
  • le contenu de la copie de sauvegarde ne serait accessible qu'à l'utilisateur, c'est-à-dire était protégé par mot de passe.

Il existe de nombreuses suggestions à ce sujet, mais aucune ne termine la tâche. Une copie facile et simple ne donne pas de vitesse, une sauvegarde rapide ne donne pas de fiabilité, la copie sur un disque dur externe ne garantit pas son vol.

Cependant, il existe depuis longtemps des outils pour résoudre le problème. L'essentiel est d'appliquer correctement la voie Unix et les fichiers batch. Et l'option la plus simple consiste à archiver les fichiers dans une archive et à les envoyer au stockage en ligne à l'aide de la ligne de commande. Pour accélérer le travail, la tâche est divisée en 2 étapes - tout d'abord, une archive complète est créée et envoyée au stockage en ligne, puis des archives incrémentielles sont créées si nécessaire, ce qui donne de la vitesse. Le chiffrement des archives garantit la sécurité des données.

Ce qui est nécessaire pour résoudre le problème:

  • Compte Yandex pour obtenir l'accès webdav au disque Yandex. L'utilisation de tout autre stockage n'est pas interdite;
  • 7z - archiveur de console, distribué gratuitement;
  • curl - un outil de console pour travailler avec Internet, distribué gratuitement.

Pour la portabilité , j'ai mis 7z.exe , 7z.dll et Curl.exe dans un répertoire. Selon la façon dont Curl.exe a été compilé, il peut être nécessaire de placer les bibliothèques libeay32.dll , libssh2.dll , msvcr100.dll , MSVCR110.dll à proximité ou d'ajouter au système.

Plus loin dans ce répertoire, il est souhaitable de créer un répertoire dans lequel vous souhaitez placer les fichiers et répertoires pour la future archive. Je l'ai appelé «sauvegarde» et je mets des liens durs vers des fichiers ou un lien de répertoire (la fonctionnalité correspondante est en FAR en utilisant la combinaison de touches Alt + F6). Ainsi, je peux, sans changer la structure des données existantes, créer une structure qui me convient pour la sauvegarde.

Le répertoire suivant est temp . Conçu pour stocker une archive de données avant de l'envoyer au serveur. En même temps, il s'agira d'une copie chiffrée des données actuelles, qui fournit une sauvegarde supplémentaire en cas d'attaque virale.

Ensuite, dans le répertoire source, vous devez créer un fichier bat (cmd) assez simple «full.bat» avec le contenu suivant:

@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 - définissez le nom commun de l'ordinateur et le chemin sur le serveur où la sauvegarde sera stockée. Parce que il peut y avoir plusieurs ordinateurs, alors il peut s'agir d'une copie de sauvegarde d'un ordinateur de travail (travail), d'un domicile (domicile), d'un ordinateur portable (livre), indiquant qu'un nom individuel ne permettra pas aux copies de se mélanger.
  • set pathbkp = backup - définissant le chemin d'accès au répertoire où les données de sauvegarde sont stockées, dans ce cas, le répertoire avec les liens matériels et les liens de répertoire que vous auriez dû créer plus tôt est indiqué.
  • set srvbkp = https: // user: password@webdav.yandex.ru/backup/%filebkp% - spécifiez le répertoire sur le serveur où la sauvegarde sera téléchargée. utilisateur et mot de passe - mots de passe de votre compte sur Yandex;
  • set full =% filebkp% -full - définit le nom de l'archive à l'avance.
  • del / F / Q "% pathtemp%" \ - supprimer (effacer) le répertoire temporaire
  • 7z.exe un "% pathtemp% \% full%". 7z -x! *. Log; -r -mx1 "% pathbkp% \ *" -p pass_for_archive - la ligne de lancement de l'archiveur. pass_for_archive - Votre mot de passe pour l'archive.
  • curl.exe -k -X DELETE "% srvbkp%" --verbose -o. \ stdout - supprimez le répertoire de destination sur le serveur.
  • curl.exe -k -X MKCOL "% srvbkp%" --verbose -o. \ stdout - recrée le répertoire de destination sur le serveur.
  • curl.exe -k -T "% pathtemp% \% full%". 7z "% srvbkp%" / --progress-bar --verbose -o. \ stdout - télécharge l'archive curl sur le serveur.

Ainsi, en exécutant le script "full.bat" , vous recevrez la version complète de vos fichiers dans l'archive dans le répertoire "temp" et la même dans le répertoire "backup / work" sur le serveur, cryptée avec votre mot de passe. Cela peut prendre un certain temps et a ses limites sur le volume de l'archive, mais les données les plus importantes et changeant quotidiennement doivent être archivées de cette manière.

Pourquoi sont importants et changent quotidiennement? Parce que le script suivant, «inc.bat» , vous permet de rechercher et d'envoyer des données modifiées au serveur dans une archive incrémentielle qui diffère de la version complète:

 @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 

Je pense que vous pouvez décrypter ce fichier vous-même - en utilisant 7z, le script analyse l'archive complète et le répertoire source dans le répertoire temporaire , trouve les fichiers modifiés, les emballe dans une archive incrémentielle nommée par la date et l'heure actuelles et l'envoie au serveur. Ainsi, si une sauvegarde complète dure environ 1 gigaoctet et 3 minutes, les fichiers modifiés prennent généralement 10 à 50 mégaoctets et volent vers le serveur en quelques secondes. En plaçant «inc.bat» dans le Planificateur de tâches Windows, vous permettrez à ce processus de se produire selon un calendrier à un moment qui vous convient, ce qui vous permettra de l'oublier.

Lorsqu'il vous semble que le temps de création de copies incrémentielles est devenu trop long, vous pouvez exécuter à nouveau «full.bat» - cela effacera tous les répertoires des archives complètes et incrémentielles et créera une nouvelle version de la version complète.

Source: https://habr.com/ru/post/fr413467/


All Articles