Страховое копирование по списку
Относительно простой вариант резервного копирования по списку файлов/папок с учетом типа резервной копии и количества хранимых копий по типам. Классические типы: дневная-недельная-месячная-годовая копии. Кодировка скрипта CP866. В приаттаченом файле содержится сам скрипт, пример файла списка и консольные версии архиватора 7z.
@ECHO OFF CLS SETLOCAL :: Папка для хранения резервных копий - если надо не текущую впишите свою :: По-умолчанию текущая папка SET "BACKUP_DIR=%~dp0" :: Постоянная часть имени архива - для уникальной идентефикации архива SET "SOURCE_NAME=MY_BACKUP_1" :: Имя и месторасположение файла со списком для резервного копирования :: Имена папок пишутся либо с символом "\" в конце либо без него SET "BACKUP_LIST=%~dp0listbackup.txt" :: Кодировка списка - доступные варианты: UTF-8, WIN, DOS SET "LIST_CHARSET=DOS" ::Тип бэкапа: DAY, WEEK, MONTH, YEAR ::День недели число ::1 - Воскресенье ::2 - Понедельник ::3 - Вторник ::4 - Среда ::5 - Четверг ::6 - Пятница ::7 - Суббота :: День недели бэкап которого считается недельным SET "WEEK_DAY_BACKUP=1" :: Бэкап последнего числа месяца считается месячным :: Бэкап последнего числа года считается годовым :: Количество хранимых страховых копий по типам SET "REZERV_DAY=6" SET "REZERV_WEEK=5" SET "REZERV_MONTH=11" SET "REZERV_YEAR=50" :: ПРИМЕЧАНИЕ: имя архива будет иметь маску: :: %SOURCE_NAME%_ГГГГ_ММ_ДД_%TYPE_BACKUP%.7z ECHO. ECHO %DATE% - %TIME:~0,5% Резервное копирование: ECHO тело скрипта: "%~0" ECHO список: "%BACKUP_LIST%" CALL :BACKUP_PATHS CALL :SYS_TYPE CALL :DATE_SET CALL :ARC CALL :REZERV_TRIM ENDLOCAL GOTO :EOF :SYS_TYPE :: Определение разрядности системы для использования нужной версии архиватора ECHO "%PROCESSOR_ARCHITECTURE%""%PROCESSOR_ARCHITEW6432%"|1>NUL 2>NUL FIND /I "AMD64"&&SET "ARC_DIR=%~dp0X64"||SET "ARC_DIR=%~dp0X32" :: Отбрасывание последнего символа "\" в пути архиватора SET "LAST_CHAR=%ARC_DIR:~-1%" IF "%LAST_CHAR%"=="\" SET "ARC_DIR=%ARC_DIR:~0,-1%" IF NOT EXIST "%ARC_DIR%\7z.exe" ( ECHO Не обнаружен архиватор по пути "%ARC_DIR%"! ECHO Положите соответсвующую версию 7z.exe по пути .\X64 или .\X86 и перезапустите скрипт! CALL :ERROR 1 ) GOTO :EOF :BACKUP_PATHS :: Отбрасывание последнего символа "\" в пути бэкапа SET "LAST_CHAR=%BACKUP_DIR:~-1%" IF "%LAST_CHAR%"=="\" SET "BACKUP_DIR=%BACKUP_DIR:~0,-1%" :: Создание целевой папки для резервного копирования с проверкой существования IF NOT EXIST "%BACKUP_DIR%" MD "%BACKUP_DIR%" IF NOT EXIST "%BACKUP_DIR%" ( ECHO Указанная папка для создания копии недоступна! CALL :ERROR 2 ) ECHO Резервная копия будет создана в папке %BACKUP_DIR% GOTO :EOF :DATE_SET :: Определение параметров текущей даты и типа бэкапа ECHO wscript.ECHO YEAR(DATE)^&"_"^&RIGHT(0^&MONTH(DATE),2)^&"_"^&RIGHT(0^&DAY(DATE),2)^&"_"^& DAY(DATESERIAL(YEAR(DATE),MONTH(DATE)+1,1-1))^&"_"^&WEEKDAY(DATE)^&"_"^&RIGHT(0^&hour(TIME),2)^&"_"^&RIGHT(0^&minute(TIME),2) 1>"%TEMP%\tmp.vbs" FOR /F "TOKENS=1,2,3,4,5,6,7 DELIMS=_" %%a IN ('cscript "%TEMP%\tmp.vbs" //Nologo') DO SET "TEK_YEAR=%%a"&SET "TEK_MONTH=%%b"&SET "TEK_DAY=%%c"&SET "LAST_DAY=%%d"&SET "TEK_WEEK=%%e"&SET "TEK_HOUR=%%f"&SET "TEK_MINUTE=%%g" IF EXIST "%TEMP%\tmp.vbs" DEL "%TEMP%\tmp.vbs" SET "TYPE_BACKUP=DAY" IF "%WEEK_DAY_BACKUP%"=="%TEK_WEEK%" SET "TYPE_BACKUP=WEEK" IF "%TEK_DAY%"=="%LAST_DAY%" SET "TYPE_BACKUP=MONTH" IF "%TEK_MONTH%"=="12" (IF "%TEK_DAY%"=="%LAST_DAY%" (SET "TYPE_BACKUP=YEAR")) CALL SET "REZERV_NUM=%%REZERV_%TYPE_BACKUP%%%" SET "ARC_NAME=%SOURCE_NAME%_%TEK_YEAR%_%TEK_MONTH%_%TEK_DAY%~%TYPE_BACKUP%" IF EXIST "%BACKUP_DIR%\%ARC_NAME%.7z" ( ECHO Резервная копия за этот день уже создана! ECHO Удалите или переименуйте ее и запустите скрипт повторно! CALL :ERROR 3 ) GOTO :EOF :ARC IF EXIST "%ARC_DIR%\7z.exe" ( 1>nul "%ARC_DIR%\7z.exe" a -t7z "%BACKUP_DIR%\%ARC_NAME%.7z" @"%BACKUP_LIST%" -ms -mmt -mx7 -bd -scs%LIST_CHARSET% -ssw ECHO Страховая копия создана... ) GOTO :EOF :REZERV_TRIM ECHO Удалены устаревшие резервные копии: FOR /F "SKIP=%REZERV_NUM% USEBACKQ TOKENS=1 DELIMS=" %%a IN (`DIR /O:-N /B "%BACKUP_DIR%\%SOURCE_NAME%_20??_??_??~%TYPE_BACKUP%.7z"`) DO ( DEL /Q /F "%BACKUP_DIR%\%%a" ECHO "%BACKUP_DIR%\%%a" ) GOTO :EOF :ERROR ECHO Произошло досадное недоразумение - резервная копия не создана ... ENDLOCAL EXIT %~1
В случае необходимости ведения лога перенаправьте информационные сообщения скрипта в файл.
Вложение | Размер |
---|---|
simple_backup.7z | 697 КБ |
- Блог пользователя yurkesha
- Версия для печати
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Похожие материалы по этой теме на сайте
Содержимое | |
---|---|
Интерпретатор CMD - вывод переменных со спецсимволами на экран и в файл |
Известная, но слабоосвещенная тема - обработка в коммандном интерпретаторе CMD данных со спецсимволами. |
Скрипты для CMD |
Скрипты выполняемые интерпретатором CMD.EXE - стандартной консольной оболочкой для Win2000/WinXP/Vista/Seven/Win8/Win2000 Server/Win2003/Win2008. |
Преобразование файлов 1CClientBankExchange в табличную форму |
Лично мне периодически приходилось сталкиваться с обработкой данных не в табличной форме, а в "именованном формате" то есть когда каждый параметр пишется на отдельной строке в виде Параметр=Значение параметра причем файл... |
Чтение данных из реестра в переменную окружения |
Продвинутый кросплатформенный модуль для встраивания в скрипты, позволяющий в удобной форме получать данные из реестра для дальнейшего использования(как всегда - кодировка скрипта CP866): |
Выключение компьютеров в домене по списку |
Монолитный скрипт выключения компьютеров в домене по списку:
@ECHO OFF SET "BEGIN_MARKER=:ENDFILE1" SET "END_MARKER=:ENDFILE2" |
Логофф сессий отключенных пользователей на терминальном сервере |
Убить все отключенные сессии: @ECHO OFF FOR /F "USEBACKQ TOKENS=2 DELIMS= " %%a IN (`quser^|findstr /b /v "^>"^|findstr /i /v " ID "^|findstr /v /i "rdp-tcp"`) DO logoff %%~a EXIT 0 |
Настраиваемые представления журналов Windows |
Через журналы Windows можно помотреть много чего интересного.
Но есть нюанс - самое интересное обычно сидит в расширенных атрибутах и фильтр по ним через GUI создать невозможно.
|
Поддержка папок для сканирования |
Часто в офисе присутствуют сетевые устройства сканирования, которые поддерживают сканирование в сетевую папку. Все бы было хорошо если бы для этих устройств |
Сейчас на сайте
Пользователей онлайн: 0.
Пользователи
- ОКЕЙ
- lowander
- Georgiy
- imhotep
- switchman
- vik
- Wilps
- spiritualbandan
- davay2000
- synonymoushypoc
Комментарии