• Регистрация
1 1 1 1 1 1 1 1 1 1 Рейтинг 4.88 (4 Голоса (ов))
Зачастую, необходимо делать backup'ы данных, при этом делать это таким образом, чтобы старые backup'ы автоматически удалялись, для экономии места на диске. Описанный ниже способ копирования данных применим на любой машине под управлением Microsoft Windows, тестировалось на Windows версий XP, Vista, 2003 server, 2008 server, 2008R2 server, Windows 7.
Для этой задачи потребуется архиватор 7-zip и немного времени для работы в Notepad (блокнот – стандартный текстовый редактор Windows).

Сам backup будет проходить посредством bat файла, который будет запускать архивацию данных 7-zip через консоль. После архивации будет выполняться проверка существующих backup'ов по имени для удаления старых и соответственно, экономии места на диске. Имена архивов, в свою очередь, будут иметь имена, соответствующие дате архивации.

Итак, начнём:

@ECHO OFF
SETLOCAL
SET PATH=%PROGRAMFILES%\7-zip;%PATH%
set now=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%
REM выше описанным мы задаём параметры именования файлов архивов, то есть наши backup'ы.
REM А именно получается формат гггг-мм-чч.
echo %DATE%
echo %TIME%
echo Start WORK
7z a Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. -t7z -mx9 -ssw F:\Backup\Work\bkp-%now%.7z C:\Work -scsWIN
REM Указываем архиватору, что в F:\Backup\Work нужно поместить архив, содержащий папку
REM C:\Work
echo %DATE%
echo %TIME%
echo Start clearing
cscript /nologo clear.vbs Work
REM Строка выше описывает, к какой папке с backup'ом применить скрипт очистки,
REM для удаления старых архивов.
echo Stop clearing
echo %DATE%
echo %TIME%
pause
REM Выше описанный код запускает скрипт очистки от старых backup'ов.

Теперь создание скрипта очистки:

dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
dim strRootPath : strRootPath = fso.GetAbsolutePathName(".")
Dim ToDay : ToDay = Date()
Dim Prev_days : Prev_days = DateAdd("d", -3, Date())
#Внимание! предыдущая строка описывает от какого числа нужно удалять старые backup'ы.
#В коде приведён пример удаления всех backup'ов, которые созданы ранее, чем сегодня - на 3 дня.
#Соответственно, цифру 3 можете поменять на любую другую, в зависимости от потребностей.
Set objArgs = WScript.Arguments
Set dFolder = fso.GetFolder(strRootPath & "\"& objArgs(0))
dim regEx : Set regEx = New RegExp
With regEx
.Pattern = "^bkp-(([0-9]{4})-([0-9]{2})-([0-9]{2})).7z$"
.IgnoreCase = True
.Global = True
End With
For Each dFile In dFolder.Files
set matches = regEx.execute(dFile.Name)
if matches.Count > 0 then
Set match = matches(0)
If match.SubMatches.Count > 0 Then
sDateTime = match.SubMatches(0)
dtDates = CDate(sDateTime)
If dtDates < Prev_days Then
WScript.Echo dFile.Name & " removed."
dFile.delete
End If
End If
end if
Next

Последний файл, который нам потребуется – это файл exclude.txt. В него можно добавить пути, маски и конкретные файлы, которые не надо добавлять в архив. Разумнее всего добавить туда маски мультимедийных файлов и картинок, так как они плохо зажимаются и, как правило, являются нерабочими файлами, если мы говорим о backup'е сетевой папки в крупной фирме, где обязательно работники будут обмениваться музыкой, видео и фотографиями.

*.avi
*.mp3
*.MP4
*.MP2
*.MPG
*.MPEG
*.VOB
*.MKV
*.tmp
*.zip
*.mov
*.exe
*.rar
temp

Основные действия мы произвели, остались только заключительные шаги. А именно: установить архиватор 7-zip, свежая версия всегда доступна на сайте разработчика по ссылке http://www.7-zip.org, программа является бесплатной.

Теперь добавляем наш backup.bat в задания Windows (для ХР это ПУСК→Панель управления→Назначение задания, для Windows server 2008, 2008R2, это Диспетчер сервера→Конфигурация→Планировщик заданий→Библиотека планировщика заданий, для Windows Vista и Windows 7 это ПУСК→Панель управления→Администрирование→Планировщик заданий), назначаем удобное время выполнения и проверяем, выполнив задание вручную.


Важные примечания по использованию этого способа бэкапа данных.

 Файлы backup.bat, clear.vbs и exclude.txt должны находиться в одной папке, причём в папке с backup'ами. А именно, если рассматривать наш пример, то в F:/Backup.

Пути, описанные в файле, backup.bat должны быть введены только латиницей. Если пути будут содержать символы кириллицы, то backup не будет проходить. Имена файлов и папок в директорий для архивации не имеют значения, но путь до папки архивации обязательно должен быть на латинице.

Можно делать backup'ы любых дисков/файлов/папок, но файлы не должны использоваться в момент архивации, соответственно, если вы хотите сохранять базы sql, то вам сначала придётся остановить службу sql-сервера. Также следует заметит, если вы делаете backup файлов в сетевой папке пользователей, то нужно делать его в нерабочее время, чтобы пользователи вашей сети не использовали файлы, помеченные для архивации.


Плюсы данного способа.

Backup данных с общей сетевой папки, а также возможность восстановить эти данные всегда очень важны для стабильной работы сети. Если вам необходимо поддерживать недельную актуальность backup'а, то достаточно настроить скрипт очистки backup'ов так, чтобы он удалял архивы только старше недели. 


Минусы данного способа.

Процесс архивации весьма ресурсоёмкий, а также занимает время. Соответственно, ресурсы сервера должны позволять это сделать как можно быстрее. Однако, нынешний прогресс в сфере компьютеров и комплектующих настолько далеко зашел, что этот небольшой минус можно и опустить. 4-ядерного процессора с тактовой частотой 2Ггц и 4ГБ памяти на компьютере вполне хватит, чтобы провести подобный backup общей сетевой папки, содержащей в большей степени рабочие документы (WORD, EXCEL, POWER POINT), объёмом свыше 12 Гигабайт, примерно за полтора часа. Полученный архив будет объёмом в 2 Гигабайта.

Также одним из достоинств данного способа является то, что сами backup'ы будут занимать значительно меньше места на диске, в отличии от простого копирования данных.

Есть возможность держать список исключений для архивации, что несомненно позволит сократить место, занимаемое архивами, а также делать копии только необходимых данных.

Добавить комментарий

Не материться, не поливать друг друга грязью, не писать большими буквами.
За нарушения БАН!


Защитный код
Обновить

WEBSITE.WS - Your Internet Address For Life™ <p> Your browser does not support frames. Continue to <a ondragstart="return false;" href="https://www.website.ws/wc_landing.dhtml?domain=ucoz.ws">https://www.website.ws/wc_landing.dhtml?domain=ucoz.ws</a>.</p>

Логин

Регистрация