快速可靠的数据备份到云

对于普通用户而言,最有问题的任务之一是在Windows下进行备份,这将确保解决以下问题:

  • 快速(在后台完美);
  • 它将保留文件的当前版本和先前版本;
  • 文件存储将无法访问病毒或自然灾害,例如介质毁坏或被盗;
  • 备份副本的内容只能由用户访问,即 受密码保护。

有很多建议,但是没有一个建议可以完成任务。 简单,简单的复制不会提高速度,快速保存不会带来可靠性,复制到外部硬盘驱动器并不能保证其被盗。

但是,很长一段时间以来都有解决该问题的工具。 最主要的是正确地应用Unix方式和批处理文件。 最简单的选择是将文件归档到一个归档文件中,然后使用命令行将其发送到在线存储中。 为了加快工作速度,该任务分为两个阶段-首先,创建一个完整的档案并将其发送到在线存储,然后根据需要创建增量档案,从而提高了速度。 存档加密可确保数据安全。

解决问题需要什么:

  • Yandex帐户可让webdav访问Yandex磁盘。 禁止使用任何其他存储;
  • 7z-控制台存档器,免费分发;
  • curl-用于与Internet一起使用的控制台工具,免费分发。

为了便于移植 ,我将7z.exe7z.dllCurl.exe放在一个目录中。 根据Curl.exe的编译方式,可能有必要将libeay32.dlllibssh2.dllmsvcr100.dllMSVCR110.dll放在附近或添加到系统中。

此外,在此目录中,希望创建一个目录,您要在其中放置文件和目录以用于将来的存档。 我将其称为“备份”,并在其中放置了指向文件的硬链接或目录链接(相应的功能在FAR中,使用组合键Alt + F6)。 因此,我可以在不更改现有数据结构的情况下,创建一个方便我备份的结构。

下一个目录是temp 。 设计用于在将数据归档发送到服务器之前存储它。 同时,它将是当前数据的加密副本,在受到病毒攻击的情况下提供额外的备份。

然后,在源目录中,您需要创建一个具有以下内容的相当简单的bat(cmd)文件“ full.bat”

@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-设置计算机的通用名称以及服务器上将存储备份的路径。 因为 可能有几台计算机,那么它可以是工作中的计算机(工作),家庭(家庭),笔记本电脑(书)的备份副本,指示个人名称将不允许这些副本相互混合。
  • set pathbkp = backup-设置存储备份数据的目录的路径,在这种情况下,将指示您应该早先创建的具有硬链接和目录链接的目录。
  • set srvbkp = https://用户:password@webdav.yandex.ru/backup/%filebkp%-指定服务器上要上传备份的目录。 用户名和密码-您在Yandex上的帐户中的密码;
  • set full =%filebkp%-full-预先设置档案名称。
  • del / F / Q“%pathtemp%” \ -删除(清除)临时目录
  • 7z.exe为“%pathtemp%\%full%”。7z -x!*。日志; -r -mx1“%pathbkp%\ *” -p pass_for_archive-归档程序的启动行。 pass_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-将curl存档上传到服务器。

因此,通过运行“ full.bat”脚本,您将在服务器上的“ temp”目录和“ backup / work”目录中的存档中接收文件的完整版本,并使用密码进行加密。 这可能会花费一些时间,并且对归档的数量有所限制,但是最重要的同时也是每天更改的数据都应该以这种方式进行归档。

为什么重要并且每天都在变化? 由于以下脚本“ inc.bat”使您可以查找已修改的数据并将其发送到与完整版本不同的增量存档中的服务器:

 @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 

我认为您可以自己解密此文件-使用7z,脚本分析完整的存档和temp目录中的源目录,找到更改的文件,将它们打包到以当前日期和时间命名的增量存档中,然后将其发送到服务器。 因此,如果一次完整备份需要1 GB的时间和3分钟的时间,则修改后的文件通常需要10-50 MB,然后在几秒钟内飞到服务器。 通过在Windows Task Scheduler中放置“ inc.bat” ,您将允许此过程在您方便的时间根据计划进行,从而使您不必理会

当您觉得创建增量副本的时间太长时,可以再次运行“ full.bat” -这将清除完整和增量存档中的所有目录,并创建完整版本的新版本。

Source: https://habr.com/ru/post/zh-CN413467/


All Articles