Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Расскажу более детально ситуацию, чтобы понять, почему я пошёл в этом направлении, а не взял какой-нибудь софт для бэкапа...

У нас есть сеть из 5ти компьютеров + 1 компьютер как-бы "серверный".
На серверном компьютере стоят несколько HDD по 2Тб.
Там же лежат разные резервные копии, дистрибутив и т.п. вещи.
Там же запущен локальный WEB-сервер XAMPP.
На нём хостятся с 5 локальных версий сайтов да всякие сервисы типа менеджера задач, органайзера, почты и т.п.

Далее...
Ведётся работа над N проектами. Допустим, 30 шт.
За день могут быть изменены только 5 проектов, а то и вообще изменений не будет.
Соответственно, надо проверять, были ли какие-нибудь изменения или нет, а потом уже делать резервную копию.

Далее...
Необходима полная резервная копия всей папки с проектом целиком, а не только измененных файлов.
Чтобы через месяц-другой-третий можно было откатиться и посмотреть/сравнить с тем, что сейчас есть.

Далее...
Проекты могут содержать как большие файлы (1 Гб), так и маленькие (1 Кб).
Маленьких файлов может быть... Ну, скажем, 100 000... Соответственно, тут уместно архивирование типа WinRAR.

Далее...
Необходим доступ к резервной копии в любой момент.
Некоторые программы для бэкапа используют резервирование в свой формат, что требует установки софта на каждом компьютере.
А это не есть гуд...

BAT-файл я могу конфигурировать так, как мне надо.
К тому же, к нему имеется быстрый доступ и я могу внести в него изменения за несколько секунд, например добавить новую папку...

Я склонялся даже к написанию своей программы на C++, но ввиду того, что среда у меня не установлена, решил сделать BAT'ом.
Потом думал что-то подобное написать на Adobe AIR и JavaScript, но опять же - установка Adobe AIR на все компьютеры - не есть гуд.

Вот такие дела...
Если будут вопросы - могу детальней расписать какой-нибудь пункт

----------------------

Вот, написал согласно инструкциям Foreigner'а, BAT-файл, но выдаёт "Ошибка в синтаксисе"...
Код: Выделить весь код
::====================================================================================================================================
:: >> Основные настройки скрипта
@ECHO OFF
SETLOCAL
:: << << <<
::====================================================================================================================================
:: >>Назначаем необходимые переменные
:: Папка, куда необходимо копировать резервные копии
SET $BACKUP_DIR=S:\Backup
:: Путь до архиватора
SET $WINRAR=C:\Program Files\WinRAR\WinRAR.exe
:: Имя компьютера
:: %COMPUTERNAME%
:: Дата, согласно которой проверять файлы на изменение
SET ch_date=20110323
:: << << <<
::====================================================================================================================================
:: >> Определяем массив папок для копирования
SET "$FOLDER:01=C:\Documents"
SET "$FOLDER:02=C:\Letters"
SET "$FOLDER:03=C:\ThirdFolder"
:: ...и так далее...
:: << << <<
::====================================================================================================================================
:: >> Проход по всем папкам и проверка, есть ли изменения
FOR /f "tokens=2 delims==" %%f IN ('SET $FOLDER') DO (
	::Устанавливаем текущий каталог
	PUSHD "%%f"

	:: >> Выполняем поиск изменённых файлов
	FOR /f "tokens=1" %%i IN ('DIR /s /tw /a-d') DO (
		IF DEFINED flag GOTO:@next
		CALL:@check %%i

		:: >> Проверка результата поиска изменённых файлов. Если изменений нет, то ничего не делаем
		:@next
		POPD
		IF NOT DEFINED flag GOTO:@continue
		:: << << <<

		:: >> Если изменения есть, то упаковываем папку в архив
		::A				Добавить в архив
		::-AG+[FORMAT]	Добавить к имени архива текущие дату и время. Если перед FORMAT стоит +, то дата будет добавлена перед именем
		::CH -TL		Установить время архива по времени новейшего файла
		::-DH			Открывать совместно используемые файлы
		::-EP1			Исключить базовую папку из пути
		::-INUL			Не выводить сообщения об ошибках
		::-M5			Метод сжатия: максимальный
		::-S			Создать непрерывный архив
		::-Y			Подразумевать ответ "Да" на все вопросы
		::-X{NAME}		Не обрабатывать файл/папку NAME. [-x*\temp\] - искл. все папки temp и файлы внутри папок temp
		"%$WINRAR%" A -AG+YYYY-MM-DD CH -TL -DH -EP1 -ISNUL -M5 -S -Y "%%f" ""
		:: << << <<

		:@continue
	)
	:: << << <<
)
:: << << <<
::====================================================================================================================================
GOTO:@exit
::====================================================================================================================================
:: >> Поиск изменённых файлов
:@check
FOR /f "tokens=1-3 delims=." %%i IN ("%1") DO (
	IF %%k%%j%%i geq %ch_date% SET "flag=1"
)
:: << << <<
::====================================================================================================================================
:@exit
PAUSE

Отправлено: 20:17, 08-05-2011 | #7