Архивы: по дате | по разделам | по авторам

Делаем резервную копию данных с помощью WinRAR. Часть 2

АрхивСистема
автор : Евгений aka f2065    02.03.2005

Продолжаем серию материалов, посвященных вопросу резервного копирования данных с помощью WinRAR. Сегодня мы рассмотрим варианты пересылки архивных файлов на FTP, e-mail, CD-RW и другие носители.

Итак, после выполнения наших инструкций по резервации данных, описанных в первой части статьи, в папке c:\backup_out будут появляться архивы с сохраненными файлами. Теперь надо предпринять какие-то меры для их гарантированной сохранности. Вариантов есть несколько: копирование на CD-RW/DVD-RW; отправка на FTP; отправка по e-mail.

Для отправки по e-mail или на FTP надо как-то узнавать имя созданного архива (напомню, оно содержит дату и время, потому заранее его не узнать). Но решение есть - все, что консольная программа выводит на экран, можно вместо экрана выводить в текстовый файл, если в конце строки запуска программы добавить команду >filename.txt. Итак, в моем примере RAR при создании архива писал лог (заданный именем %a_log%). Для версии RAR 3.42 после регистрации - имя созданного архива будет в конце четвертой строки. В Windows 98/ME/2000/XP встроен мощный скриптовый интерпретатор WSH, выполняющий JScript и VBScript, его мы и будем использовать - напишем VBS-скрипт, который найдет имя файла и выполнит дальнейшее копирование архива. Итак, создаем в "Блокноте" обычный текстовый файл, назовем его backup.vbs:

===backup.vbs===

' подготовка подпрограмм которые нам понадобятся
set fso = CreateObject("Scripting.FileSystemObject")
set sh = WScript.CreateObject("WScript.Shell")
' имя файла с записью экрана архиватора было передано в командной строке
set MyFile = fso.OpenTextFile(WScript.Arguments(0), 1)
'---------------------------
' выясним имя архива
' количество строк "MyFile.SkipLine" должно соответствовать номеру
' строки backup_log.txt где записано имя архива, как помним - это 4
MyFile.SkipLine
MyFile.SkipLine
MyFile.SkipLine
MyFile.SkipLine
' чтение строки
MyLine = MyFile.ReadLine
' вытаскивание последнего слова (т.е. имени архива) из строки
ArcName = Right(MyLine, Len(MyLine) - InStrRev(MyLine," "))
' теперь мы знаем имя архива - оно в переменной ArcName
'---------------------------
' запись архива на FTP
' сначала подготовим сценарий команд FTP
set f = fso.OpenTextFile("c:\backup\ftp_cfg.tmp", 2, 1)
' тут пишем адрес FTP (ftp.domain.com) и номера порта (21, если не сказано другое)
f.WriteLine "OPEN ftp.domain.com 21"
' Ваш аккаунт на FTP. Во второй строчке просто пишется пароль.
f.WriteLine "USER Vasya_Pupkin"
f.WriteLine "mypassword"
' выбор каталога на FTP сервере, куда сохранять ваш архив
f.WriteLine "CD my_backup_files"
' закачка архива
f.WriteLine "SEND " + ArcName
' завершение сеанса FTP
f.WriteLine "BYE"
f.Close
' запустим FTP-клиент с только что созданным сценарием
sh.Run "FTP -i -v -s:c:\backup\ftp_cfg.tmp",10,1
' удалим сценарий
fso.DeleteFile("c:\backup\ftp_cfg.tmp")
'---------------------------
' отправка архива по email
' SMTP с которого мы будем отправлять
pHost = "smtp.tochka.ru"
' email-ящик, от имени которого мы будет отправлять,
' туда могут приходить сообщения об ошибках
pFrom = email_of_vasya_pupkin@mail.ru
' email-ящик, где будут храниться архивы
pTo = backup_of_vasya_pupkin@mail.ru
' формирование строки параметров Postie
pCmd="-host:"+pHost+" -to:"+pTo+" -from:"+pFrom+" -a:"+ArcName+" -nomsg -s:"+ArcName
' запуск Postie. отмечу, что в скриптах длинные имена лучше писать так
sh.Run "c:\progra~1\postie\postie.exe "+pCmd,10,1
'---------------------------
' завершение скрипта
WScript.Quit(0)

===backup.vbs===

Теперь возникнет вполне очевидный вопрос - где найти FTP-сервер куда можно копировать архивы. Мне не удалось найти бесплатные FTP-хостинги с возможностью заведения персонального аккаунта. Подобный FTP-доступ существует у многих популярных бесплатных веб-хостингов, но, там везде в правилах запрещено либо выкладывать файлы без ссылок с http, либо запароленные. Существуют многочисленные платные FTP-хостинги. Вобщем, найти FTP-хостинг - для кого-то может оказаться весьма непростой задачей. Тогда можно использовать e-mail.

Сейчас есть много бесплатных email-ящиков, вмещающих большие объемы информации (вплоть до 2 Гбайт). Можно завести себе такой ящик, и пересылать туда файлы. Главное, при создании ящика читайте правила - там обычно жестко регламентированы условия существования ящика, например у некоторых ящиков если туда более месяца не заглядывать - его удаляют. Отмечу, что постоянно выкачивать обратно ваши архивы не надо, можно используя веб-интерфейс (или диспетчер писем в TheBat!) их удалять.

В Windows нет способов работы с e-mail из командной строки. Поэтому, придётся поставить почтовый клиент, работающий из командной строки - Postie. Отмечу, что для некоммерческого использования он бесплатный, но не поддерживает авторизацию SMTP - потому для отправки надо использовать SMTP не требующий авторизации. Теперь настроим соответствующие параметры нашего backup.vbs и вопрос отправки по e-mail будет решен.

Если у вас нет возможности использовать для хранения архивов e-mail или FTP, - то не следует забывать и о накопителях CD-RW или DVD+RW. Такое решение лишено многих преимуществ хранения в e-mail или FTP - его нельзя полностью автоматизировать, болванка может повредиться. Рассказывать о процессе записи я не буду, а вот о чтении - как раз настал момент вспомнить про упомянутые недостатки ntbackup.

Итак, наступила аварийная ситуация, надо распаковать сохраненные архивы, а они не читаются. Однако, все не так плохо, RAR добавил в архив 10% избыточной информации, и если мы сможем прочитать хотя бы 91% файла - его можно восстановить. Стандартный "Проводник" не позволяет прочитать части файла, если он частично нечитаемый. Поэтому, используем для чтения такого файла специальные программы - например Skopin FileCopier или BadCopy Pro.

Теперь, запускаем WinRAR, и делаем операцию "Восстановить архив" - будет создан новый архив который можно нормально распаковать.

Удачи!

© ООО "Компьютерра-Онлайн", 1997-2021
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.