Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Закладки » Делаем BackUp своими руками

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

anachrom

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Решил состряпать собственный BackUp, так как предлагаемые продукты меня не устраивают. Почему? Причин много. Если есть желание можно пообсуждать.
Вот код bat'ника для Windows систем. Спасибо за помощь yurkesha, king_stiven и всем кто откликнулся на призыв о помощи.

Код:
 
@echo off
REM Представление даты в нужном нам виде
ECHO wscript.ECHO YEAR(DATE) ^& "." ^& RIGHT(0 ^& MONTH(DATE),2) ^& "." ^& RIGHT(0 ^& DAY(DATE),2) ^& "~" ^& RIGHT(0 ^& hour(TIME),2) ^& "-" ^& RIGHT(0 ^& minute(TIME),2)>"%TEMP%\tmp.vbs"
FOR /F %%i IN ('cscript "%TEMP%\tmp.vbs" //Nologo') DO SET "TEKDATATIME=%%i"
IF EXIST "%TEMP%\tmp.vbs" DEL "%TEMP%\tmp.vbs"
ECHO %TEKDATATIME%
echo Create new BackUp
for /f "usebackq tokens=*" %%i in ("ListBackUp.txt") do xcopy "%%~i" /s /h /r /f /c /i "%TEKDATATIME%\%%~nxi"  > backup.log
move /y backup.log %TEKDATATIME%\backup.log
7za a -tzip %TEKDATATIME%.zip %TEKDATATIME%
rd /s /q %TEKDATATIME%
echo Work with older BackUp
REM Количество хранимых резевных копий
SET "REZERV_NUM=7"
FOR /F "SKIP=%REZERV_NUM% USEBACKQ TOKENS=1 DELIMS=" %%a IN (`DIR /O:-N /B 20??.??.??~??-??.ZIP`) DO DEL /Q /F %%a
 

Список папок (полные адреса) находится в файле ListBackUp.txt в той же папке, что и BAT-файл.
Сжатие происходит при помощи внешней програмки 7zip (которая так же находится в той же папке, что и BAT-файл), но сжимает в zip т.к. он более распространнен.
Если можете помочь с дописанием этого BAT-файла хорошо. Думаю сисадминам это поможет.
Если есть предложения для других операционных систем буду рад.

Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 13:26 12-05-2009 | Исправлено: anachrom, 13:28 10-06-2009
personag



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как вариант устновки даты можно использовать:

Цитата:
FOR /F "tokens=1,2,3 delims=./ " %%i IN ('date /t') DO Set Date=%%k.%%j.%%i

 
Будет дата формата YYYY.MM.DD (без указания времени)

Всего записей: 73 | Зарегистр. 22-11-2006 | Отправлено: 17:48 09-06-2009 | Исправлено: personag, 18:21 09-06-2009
anachrom

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
personag
Проблема вспыхнет тогда, когда в один и тот же день запустится BackUp и ему захочется сохраниться под одним и тем же именем. Эта идея уже опсуждалась, но все равно спасибо за предложение.
Кстати есть модификация, которая сразу сжимает в архив

Код:
 
@ECHO OFF
REM Кодировка скрипта CP866(OEM/DOS)
REM Количество хранимых резевных копий
SET "REZERV_NUM=7"
REM Папка для хранения резервных копий - если надо не текущую впишите свою
REM По-умолчанию текущая папка
SET "BACKUP_DIR=%~dp0"
REM Путь где лежит архиватор - по-умолчанию текущая папка
SET "ARC_DIR=%~dp0"
REM Отбрасывание последнего символа "\" в пути бэкапа - для универсальности
SET "LAST_CHAR=%BACKUP_DIR:~-1%"
IF "%LAST_CHAR%"=="\" SET "BACKUP_DIR=%BACKUP_DIR:~0,-1%"
REM Отбрасывание последнего символа "\" в пути архиватора - для универсальности
SET "LAST_CHAR=%ARC_DIR:~-1%"
IF "%LAST_CHAR%"=="\" SET "ARC_DIR=%ARC_DIR:~0,-1%"
REM Представление даты в нужном нам виде
ECHO wscript.ECHO YEAR(DATE) ^& "_" ^& RIGHT(0 ^& MONTH(DATE),2) ^& "_" ^& RIGHT(0 ^& DAY(DATE),2) ^& "~" ^& RIGHT(0 ^& hour(TIME),2) ^& "-" ^& RIGHT(0 ^& minute(TIME),2)>"%TEMP%\tmp.vbs"
FOR /F %%i IN ('cscript "%TEMP%\tmp.vbs" //Nologo') DO SET "TEKDATATIME=%%i"
IF EXIST "%TEMP%\tmp.vbs" DEL "%TEMP%\tmp.vbs"
REM Предполагается что кодировка listbackup.txt CP866(OEM/dos)
"%ARC_DIR%\7za.exe" a -tzip -scsWIN "%BACKUP_DIR%\%TEKDATATIME%.zip" @listbackup.txt>backup.log 2>&1
"%ARC_DIR%\7za.exe" a -tzip -scsWIN "%BACKUP_DIR%\%TEKDATATIME%.zip" backup.log
cd "ARC_DIR%
del backup.log
ECHO Удаление устаревших резервных копий
FOR /F "SKIP=%REZERV_NUM% USEBACKQ TOKENS=1 DELIMS=" %%a IN (`DIR /O:-N /B "%BACKUP_DIR%\20??_??_??~??-??.ZIP"`) DO DEL /Q /F "%BACKUP_DIR%\%%a"
 

Есть кто-то, кто может предложить аналог bash?
Кстати, пользуюсь для создания BackUp'a в организации. Сохраняю базы 1С. 10,23 Гб сжимает до 2,38. Прелесть. Если база кем то занята, то в логе пишется, что такой-то файл недоступен. С утра прихожу, смотрю на лог, потом в 1с захожу смотрю по чьей вине и иду отрываться-ругаться. Запускается BackUp через планировщик задач. Бесплатно и приятно.

Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 12:59 10-06-2009 | Исправлено: anachrom, 13:20 10-06-2009
Attid



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
сделал скрипт для бекапа потом ткнули в эту тему.
основное отличие что использую rar так как у него есть опция не включать файлы по маске
 
для бекапа требуется консольный rar
 
файл blacklist.txt  
 
примерное содержание :

Код:
 
;virus =)
*.exe
*.cmd
*.com
*.sys
*.dll
 
; enjoy
*.mp3
*.jpg
*.avi
*.mpg
*.bmp
 
; temp files
*.*~
*.tmp
 

 
туда пишем все что нам в бекапах не нужно совершенно  
ну и сам батник  

Код:
 
@echo off
 
rem get date
set T_Date=%DATE%  
set T_Date=%T_Date:~9,4%-%T_Date:~6,2%-%T_Date:~3,2%
echo %T_Date%
 
rem mount net disk
net use b: \\192.168.100.211\backup passwd /user:user
 
rem create dir
mkdir b:\profile\%T_date%
 
rem backup
FOR /F "USEBACKQ TOKENS=1 EOL= DELIMS=" %%i IN (`dir d:\Profile\* /b`) DO rar a -idq -ep1 -os -ow -tl -x@blacklist.txt b:\profile\%T_date%\%%i.rar "d:\Profile\%%i"
 
rem delete old
FOR /F "SKIP=30 USEBACKQ TOKENS=1 DELIMS=" %%a IN (`DIR /O:-N /B b:\profile\????-??-??`) DO RM /S /F %%a
 
rem umount
net use b: /delete
 

Всего записей: 77 | Зарегистр. 23-06-2003 | Отправлено: 19:51 30-06-2009
anachrom

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Attid
А если Ваш bat'ник запустить два и более раз в сутки? Проблема с именами архива осталась. И вопрос, rar зарегенный?

Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 15:17 01-07-2009 | Исправлено: anachrom, 15:30 01-07-2009
Attid



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
 
А если Ваш bat'ник запустить два и более раз в сутки?

зачем ?

Всего записей: 77 | Зарегистр. 23-06-2003 | Отправлено: 14:39 12-07-2009
older

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А если Ваш bat'ник запустить два и более раз в сутки? Проблема с именами архива осталась.

 
ну так включи в имя архива кроме даты еще и время
что-нибудь типа:

Код:
 
@set CURDATE=%DATE%
@set CURTIME=%TIME: =0%
 
"%ProgramFiles%\7-Zip\7z.exe" a "%path_dir%\%CURDATE:~6,4%%CURDATE:~3,2%%CURDATE:~0,2%_%CURTIME:~0,2%%CURTIME:~3,2%%CURTIME:~6,2%_1.7z" "%path_dir%\1\protocol(*).txt" -mx9

 
запускай хоть каждую секунду, имена не совпадут

Всего записей: 332 | Зарегистр. 15-02-2003 | Отправлено: 19:05 12-07-2009 | Исправлено: older, 19:07 12-07-2009
s1ash



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
еще будет очень полезно если будут коментарии к батнику мне как линуксойду многие опции не понятны а копатся в манах нет желания чтоб узнать что каждый значит

Всего записей: 242 | Зарегистр. 25-06-2007 | Отправлено: 22:04 12-07-2009
Attid



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
s1ash ну и ? я тоже люниксоид и тут батники почти кросплатформеные, только for в лине можно заменить на find  
 
вот вчера выгребал как написать vb скрипт чтобы в АД менять данные, там относительно баша очень много различий. сам не понял что сделал. но работает.
 
ЗЫ а вроде все прокоментировно во всех 3х скриптах, если какой параметр не понятен тогда спрашивай, хоть и не к данной ветке вопрос будет, но думаю ответим.

Всего записей: 77 | Зарегистр. 23-06-2003 | Отправлено: 23:00 12-07-2009 | Исправлено: Attid, 23:01 12-07-2009
s1ash



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
интересен формат файла ListBackUp.txt  
подозреваю что просто новая страка новый параметр, но лучше уточнить...
еще интересно про формат даты для консоли винды где можно почитать?

Всего записей: 242 | Зарегистр. 25-06-2007 | Отправлено: 00:35 13-07-2009
anachrom

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
s1ash
Каждая строчка это новая ссылка для бэкапа
А вот на счет даты и времени я вам сказать ничего не могу, это к тем людям, которым я в первом посте спасибо сказал.
Attid
А вы можете переписать батник для Linux систем?

Всего записей: 179 | Зарегистр. 18-11-2008 | Отправлено: 21:22 13-07-2009
NUB2008



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот скрипт для рар-а

Код:
 
@echo off
 
echo CMD scrip for autoarhive with RAR console module
echo created by ^~FoX^~ aka Kitsune
 
echo %TIME% Начало работы сценария       >c:\Arh.log.txt
echo ---------------------------------- >>c:\Arh.log.txt
 
rem Отключаем всех от сервера
net session /delete /y
 
rem Если сессии отключены, то создаем отчет и стартуем архивацию
if %errorlevel%==0 (
    rem Постим в файл отчета
    echo %TIME% Отключены все сессии      >>c:\Arh.log.txt
    echo Начато архивирование                >>c:\Arh.log.txt
 
      rem Запускаем архивацию
        
    rar  a -r -rr10%% "e:\Soft\1C_Full_Arh\%DATE%_backup.rar" "e:\1c\*"  
     
    rem Если архивация завершена удачно, то заносим данные об этом в отчет
    if %errorlevel%==0 (
        echo ----------------------------------         >>c:\Arh.log.txt
        echo %TIME% Архивирование успешно завершено!!!    >>c:\Arh.log.txt    
    ) else (  rem  Если архивация неудачная - сообщаем об этом
        echo %TIME% Архивирование не было завершено        >c:\Arh.log.txt
    )
) else ( rem Если не развалились сессии
    echo Не удалось отключить всех пользователей от сервера    >c:\Arh.log.txt
)
 
pause  
 

 
Скрипт пускается раз в два дня, и архивит весь каталог 1с...
 
Все тоже самое только под стандартный архиватор винды....

Код:
 
    ntbackup backup "\\srv1\1C" /j "Auto create arhive ^~FoX^~" /f "\\srv1\e$\Soft\1C_Full_Arh\%DATE%_backup.bkf" /HC:on
 

Но он не возвращает еррорлейвел, по этому пользуюсь раром

Всего записей: 27 | Зарегистр. 26-12-2008 | Отправлено: 12:49 14-07-2009 | Исправлено: NUB2008, 12:51 14-07-2009
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Закладки » Делаем BackUp своими руками


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru