Расскажу более детально ситуацию, чтобы понять, почему я пошёл в этом направлении, а не взял какой-нибудь софт для бэкапа...
У нас есть сеть из 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-файл, но выдаёт "Ошибка в синтаксисе"...
Код:
![Выделить весь код](images/misc/selectcode.png)
::====================================================================================================================================
:: >> Основные настройки скрипта
@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