Оптимизация задачи nnCron

Обсуждение программ nnCron и nnCron LITE

Оптимизация задачи nnCron

Postby D.Ilyin » Thu, 05 Aug 2004, 12:40

Существует вполне конкретная задача. Необходимо осуществлять следующую схему архивации данных:
  1. Ежедневное копирование без перезаписи файлов 7 архивов по кругу.
  2. Еженедельное копирование без перезаписи файлов (в воскресенье) 4 архива по кругу.
  3. Ежемесячное копирование без перезаписи файлов (последний день месяца) 12 архивов по кругу.

Вариант 1
Code: Select all
#( task_1
NoActive
User: "D.Ilyin" SecPassword: "123456" Domain: "INTRANET" LogonInteractive

CREATE BACKUP_PATH 256 ALLOT
VARIABLE BACKUP_NUMBERS

Action:
StartIn: "C:\Progra~1\nnBackup"
SWHide   NormalPriority
AsService

START-APPW: C:\Progra~1\nnBackup\nnbackup.exe verz -n %BACKUP_NUMBERS @% -i "\\main\anklav_new" -o "%BACKUP_PATH COUNT%\анклав_торговля" -s -zcomm "Анклав Торговля %YYYY%-%MM%-%DD%" -sdn "%YYYY%-%MM%-%DD%"

)#

#( BACKUP_SCRIPT
Time: 0 0 * * 1-7 *
User: "D.Ilyin" SecPassword: "123456" Domain: "INTRANET" LogonInteractive
CREATE BACKUP_PATH 256 ALLOT
VARIABLE BACKUP_NUMBERS

Action:
AsService

WDay@ 7 =
IF
S" \\main\_backup_\Weekly_BACKUP\" BACKUP_PATH PLACE
4 BACKUP_NUMBERS !
ELSE
S" \\main\_backup_\Daily_BACKUP\" BACKUP_PATH PLACE
7 BACKUP_NUMBERS !
THEN

Year@ Mon@ MonLength Day@ =
IF
S" \\main\_backup_\Monthly_BACKUP\" BACKUP_PATH PLACE
12 BACKUP_NUMBERS !
THEN

task_1 LAUNCH
\ и т.д. сюда добавляются задачи которые необходимо запустить....
)#

В этом варианте все устраивает за исключением того, что не будет выполнено (до конца условие 1). Седьмой архив будет создан в еженедельной папке, т.е. один день из непрерывного бэкапа выпадет.
Вариант 2
Code: Select all
#( task_1
NoActive
User: "D.Ilyin" SecPassword: "123456==" Domain: "INTRANET" LogonInteractive
CREATE BACKUP_PATH 256 ALLOT
VARIABLE BACKUP_NUMBERS

Action:
StartIn: "C:\Progra~1\nnBackup"
ShowNormal   NormalPriority
AsService

START-APPW: C:\Progra~1\nnBackup\nnbackup.exe verz -n 7 -i "\\main\anklav_new" -o "\\main\_backup_\Daily_BACKUP\анклав_торговля" -s -zcomm "Анклав Торговля %YYYY%-%MM%-%DD%" -sdn "%YYYY%-%MM%-%DD%"

WDay@ 7 =
IF
S" \\main\_backup_\Weekly_BACKUP\" BACKUP_PATH PLACE
4 BACKUP_NUMBERS !
THEN

START-APPW: C:\Progra~1\nnBackup\nnbackup.exe verz -n %BACKUP_NUMBERS @% -i "\\main\anklav_new" -o "%BACKUP_PATH COUNT%\анклав_торговля" -s -zcomm "Анклав Торговля %YYYY%-%MM%-%DD%" -sdn "%YYYY%-%MM%-%DD%"

Year@ Mon@ MonLength Day@ =
IF
S" \\main\_backup_\Mothly_BACKUP\" BACKUP_PATH PLACE
12 BACKUP_NUMBERS !
THEN

START-APPW: C:\Progra~1\nnBackup\nnbackup.exe verz -n %BACKUP_NUMBERS @% -i "\\main\anklav_new" -o "%BACKUP_PATH COUNT%\анклав_торговля" -s -zcomm "Анклав Торговля %YYYY%-%MM%-%DD%" -sdn "%YYYY%-%MM%-%DD%"

)#

#( BACKUP_SCRIPT

Time: 0 0 * * 1-7 *

Action:

task_1 LAUNCH

)#

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

Есть ли какие-нибудь варианты и предложения обойти два этих подводных камня?
D.Ilyin
 
Posts: 41
Joined: Mon, 02 Aug 2004, 13:07

Postby VK » Thu, 05 Aug 2004, 13:21

Честно говоря, я не очень понял в чем проблема (больно уж угрожающе выглядят твои задачи). К тому же непонятно, почему ты запускаешь nnBackup сервисом...

Но на твоем месте я бы попробовал решить проблему бекапа тремя короткими задачами. Ну, скажем:
Code: Select all
#( test_daily_backup
\ каждый день
Time: 0 18
Action:
    START-APP: nnbackup.exe verz ...
)#

#( test_weekly_backup
\ по воскресеньям
Time: 0 18 * * 7
Action:
    START-APP: nnbackup.exe verz ...
)#

#( test_monthly_backup
\ в последний день месяца
Time: 0 18
Rule: Year@ Mon@ MonLength Day@ =
Action:
    START-APP: nnbackup.exe verz ...
)#
CU
VK
User avatar
VK
 
Posts: 680
Joined: Wed, 14 Jul 2004, 19:17

Postby D.Ilyin » Thu, 05 Aug 2004, 16:54

К тому же непонятно, почему ты запускаешь nnBackup сервисом...

Т.е. даже при логофе, потому что nnCron запущен как сервис, данные задачи будут выполняться?

Но на твоем месте я бы попробовал решить проблему бекапа тремя короткими задачами. Ну, скажем:

Я уже даже не помню почему я пришел к этому.... я тут как шахматист решаю задачи, возникающие одна из другой. Но стараюсь чтобы было не только функционально, но и красиво.
Просто эти задачи надо очень часто менять... Поэтому хотелось иметь маленький ОО cron.tab. Для быстрого изменения.

Пока писал вспомнил почему я так сделал:
Code: Select all
#( BACKUP_LOG_START_TIME
NoActive
CREATE BACKUP_PATH 256 ALLOT

Action:

FILE-APPEND: "%BACKUP_PATH COUNT%%YYYY%-%MM%-%DD%.txt" "---------------------------------------------------------------------------------%crlf%"
FILE-APPEND: "%BACKUP_PATH COUNT%%YYYY%-%MM%-%DD%.txt" "--           BACKUP %CUR-TASK-NAME%:%crlf%"     
FILE-APPEND: "%BACKUP_PATH COUNT%%YYYY%-%MM%-%DD%.txt" "--                                       начался в      : %hh%:%mm%:%ss%             --%crlf%"

)#

#( BACKUP_LOG_END_TIME
NoActive
CREATE BACKUP_PATH 256 ALLOT

Action:

FILE-APPEND: "%BACKUP_PATH COUNT%%YYYY%-%MM%-%DD%.txt" "--                                       закончился в   : %hh%:%mm%:%ss%             --%crlf%"
FILE-APPEND: "%BACKUP_PATH COUNT%%YYYY%-%MM%-%DD%.txt" "---------------------------------------------------------------------------------%crlf%"
)#
....................................................
....................................................
#( Луктар_Плюс
User: "D.Ilyin" SecPassword: "123456==" Domain: "INTRANET" LogonInteractive
NoActive

CREATE BACKUP_PATH 256 ALLOT
VARIABLE BACKUP_NUMBERS

Action:
........
BACKUP_LOG_START_TIME RUN
START-APP: nnbackup.exe verz ...
BACKUP_LOG_END_TIME RUN
......
)#


Если бы я продолжал делать не так как показано выше то к 30 базе данных мой cron.tab был бы около метра :). Поэтому пришлось вынести это в отдельные задачи. А потом идея за идеей..... правда с выполнением проблемы :).

PS За помощь все равно спасибо...
D.Ilyin
 
Posts: 41
Joined: Mon, 02 Aug 2004, 13:07


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 2 guests

cron