Копирование файлов с определённой датой в названии.

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

Копирование файлов с определённой датой в названии.

Postby Ded Banzai » Tue, 27 Apr 2010, 20:14

Ситуация следующая: на удалённых серверах создаются файлы.
Задача: После создания файла скопировать (распаковать) этот файл в другую удалённую папку и забэкапить.
Сложности:
1) Файлы разных типов, находятся на разных рессурсах (ФТП и виндовая шара под юзером\паролем, меняющимся раз в 48 дней в домене)
2) Наименование файлов (основная задача) производится в виде: "blablabla""MM""DD+1".bla и "blabla""YY""MM""DD-1".bla, при этом 0 - значимая часть этого имени, и общая дата тоже важна, особенно на стыке месяца.
3) Пользователей 4-ро, меняются раз в сутки, но можно договориться об 1м пользователе на все действия с файлами.
4) В случае с файлом "blabla""YY""MM""DD-1".bla, создающимся на ФТП, сначала создаётся файл: "blabla""YY""MM""DD-1".temp, в который пишутся промежуточные данные, при этом время начала создания и завершение его формирования известны лиш приблизительно и не являются постоянной величиной, но по наличию файла "blabla""YY""MM""DD-1".temp можно судить о том, что файл "blabla""YY""MM""DD-1".bla начали формировать. Процесс занимает 6-12 часов. В выходные и праздники он не формируется, а так же в несколько первых дней месяца. То есть нужна проверка на наличие файла "blabla""YY""MM""DD-1".temp на ФТП рессурсе в приблизительно известное время (+- 3 часа), и, в случае его существования, дождаться его формирования и разослать его по почте на список пользователей из-под винды. (вариант под никсы тоже можно рассмотреть)

В общем проблема в наименовании файлов, не могу понять как его произвести. Эти +- 1 день мне всё портят... Надо отталкиваться от текущей даты.
Подскожите пожалуйста, ибо мой говнокод не выдерживает критики и не работает, а как сформировать текстовую переменную я не знаю.
Основной момент: 01,03,2010 мне нужно скопировать файл "blalba0302.bla" в папку на удалённом виндовом рессурсе (с виндового рессурса), и файл "blabla20100228.bla" с ФТП рессурса на виндовый. При этом наличие последнего файла - не обязательно (см. п.4)

Поможите люди добрыЕ! :)
Ded Banzai
 
Posts: 4
Joined: Tue, 27 Apr 2010, 19:20

Re: Копирование файлов с определённой датой в названии.

Postby Ded Banzai » Tue, 27 Apr 2010, 20:16

P.S.
Задачу бэкапа считаю тривиальной, в случае решения основной задачи. :mrgreen:
Ded Banzai
 
Posts: 4
Joined: Tue, 27 Apr 2010, 19:20

Re: Копирование файлов с определённой датой в названии.

Postby elos » Tue, 27 Apr 2010, 22:27

задачу свою сначала приведи... чтоб было к чему привязаться...

И ещё раз задачу сформулируй - но чётко! Какая OS на машинах, в одной сети или разных, где что поднято типа ftp...

Без "blabla". Всё сведется (скорее всего) к подбору инструментария и другому алгоритму...
elos
 
Posts: 667
Joined: Tue, 25 Apr 2006, 11:15

Re: Копирование файлов с определённой датой в названии.

Postby Ded Banzai » Wed, 28 Apr 2010, 04:30

elos wrote:задачу свою сначала приведи... чтоб было к чему привязаться...

И ещё раз задачу сформулируй - но чётко! Какая OS на машинах, в одной сети или разных, где что поднято типа ftp...

Без "blabla". Всё сведется (скорее всего) к подбору инструментария и другому алгоритму...


Буду всё делать из-под винды. Один файл нужно копировать с виндового рессурса, другой с ФТП. Вся сложность вычесть(прибавить) 1 день к дате в названии файла, пример на 1е число месяца я приводил. Комманда DAY+ прибавляет\вычитает день нормально, но после этого обработать полученые данные не могу, так как не понял по хелпам как работать со строковыми переменными.

Ded Banzai wrote: 01,03,2010 мне нужно скопировать файл "blalba0302.bla" в папку на удалённом виндовом рессурсе (с виндового рессурса), и файл "blabla20100228.bla" с ФТП рессурса на виндовый. При этом наличие последнего файла - не обязательно (см. п.4)


Какая разница что будет вместо bla? Ещё раз повторю: вся сложность в подставлении цифр в нужном формате к произвольной строке.
Ded Banzai
 
Posts: 4
Joined: Tue, 27 Apr 2010, 19:20

Re: Копирование файлов с определённой датой в названии.

Postby Ded Banzai » Wed, 28 Apr 2010, 04:51

И ещё хотелось бы пример проверки наличия файла на ФТП рессурсе. С виндой более менее всё понятно.
Ded Banzai
 
Posts: 4
Joined: Tue, 27 Apr 2010, 19:20

Re: Копирование файлов с определённой датой в названии.

Postby elos » Wed, 28 Apr 2010, 07:06

Попытка №2 - задачу! Текст её...
elos
 
Posts: 667
Joined: Tue, 25 Apr 2006, 11:15

Re: Копирование файлов с определённой датой в названии.

Postby VoidVolker » Wed, 28 Apr 2010, 08:43

Вот, примерно так(необходим wget):
Code: Select all
<%
: wget.exe " C:\wget\bin\wget.exe " ;

: net-get   \ ( filename localpath -- )  \ Скачать из сети определенный файл и сохранить его под определенным именем
  SWHide
  StartIn: "%1 esPICKS%"
  wget.exe 2SWAP S+ START-APPW
;

%>

#( Задача_0900280410
Time: */5 * * * * *
Rule: HOST-EXIST: "ftp.ru" ;
: temp-cat  S" C:\TEMP\" ;

: YYMMDD-1   \ ( -- a u )
  CUR-DATE DATE>YMD -1 DAY+ S>D <# # # 2DROP S>D # # 2DROP S>D # # #>
;

: tempfile-exist?   \ ( -- ? )
  S" ftp://ftp.ru/temp/" temp-cat net-get \ Загружаем индекс каталога
   temp-cat S" index.html" S+  FILE OVER >R
   S" blabla" YYMMDD-1 S+ S" .temp" S+
  SEARCH NIP NIP  \ Ищем в индексе имя временного файла
  R> FREE THROW  \ Освобождаем память
;
Action:
tempfile-exist?
  IF \ Файл на месте - ждем, пока он не перестанет существовать
    BEGIN tempfile-exist? WHILE
      300000 PAUSE  \ Раз в пять минут
    REPEAT
    \ Временный файл больше не существует
    S" ftp://ftp.ru/path/blabla" YYMMDD-1 S+ S" .bla" S+ temp-cat net-get
    \ Файл скачан во временный каталог
    \ И любым доступным способом отправляем его по почте - например консольным почтовым клиентом или плагином для крона
    \ temp-cat S" blabla" S+ YYMMDD-1 S+ S" .bla" S+   \ a u
    <...код...>
  THEN
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Копирование файлов с определённой датой в названии.

Postby Headcrab » Thu, 17 Dec 2015, 11:16

По хэлпу написал как можно отобразить дату вчерашнего дня, получилось следующее:
Code: Select all
#( YESTERDAY
Time: * 7-23 * * * *
NoActive
VARIABLE DDmy
Action:
CUR-DATE DATE>YMD -1 DAY+ DDmy !
MSG: "contents: %DDmy @%"
)#


Всё отображает но после задания получаю алерт - Ошибка стека в Action
После начал рыть на форуме и нашёл вот такую конструкцию:
Code: Select all
: YYMMDD-1   \ ( -- a u )
  CUR-DATE DATE>YMD -1 DAY+ S>D <# # # 2DROP S>D # # 2DROP S>D # # #>
;

Вы можете пояснить что означает информация в скобках - ( -- a u )
и что значит информация - <# # # 2DROP S>D # # 2DROP S>D # # #>
с S>D понятно а что всё остальное?

В данный момент решил проблему добавлением 2DROP (убрать весь мусор со стека )
Code: Select all
#( YESTERDAY
Time: * 7-23 * * * *
NoActive
VARIABLE DDmy
Action:
CUR-DATE DATE>YMD -1 DAY+ DDmy ! 2DROP
MSG: "contents: %DDmy @%"
)#


Ещё вопрос а как то же самое сделать не создавая переменную, что то типа -
CUR-DATE DATE>YMD -1 DAY+ VALUE DDmy
MSG: "contents: %DDmy%"

Заранее спасибо.
Headcrab
 
Posts: 19
Joined: Fri, 21 Feb 2014, 14:05

Re: Копирование файлов с определённой датой в названии.

Postby VoidVolker » Thu, 17 Dec 2015, 14:46

Headcrab wrote:Вы можете пояснить что означает информация в скобках - ( -- a u )

Стеквоый комментарий.
( <до> -- <после> )
a u — строка, представленная адресом первого символа и счетчиком

Headcrab wrote:<# # # 2DROP S>D # # 2DROP S>D # # #>

Это форматное преобразование числа.
http://www.nncron.ru/help/RU/add_info/f ... htm#n_to_s

<# — начало преобразования (инициализирует буфер PAD)
#— преобразовать один разряд числа двойно длины на стеке
#S — все число сразу
2DROP S>D — убирает со стека текущее двойное число и заменяет его новым двойным числом
#> — закончить преобразование и вернуть на стек результат

http://spf.sourceforge.net/docs/readme.ru.html

Headcrab wrote:Ещё вопрос а как то же самое сделать не создавая переменную, что то типа -
CUR-DATE DATE>YMD -1 DAY+ VALUE DDmy


Code: Select all
MSG: "contents: %CUR-DATE DATE>YMD -1 DAY+ NIP NIP%"
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 5 guests