synology.forum архив спільноти · 2005–2022
ai.synology.forum →
ГлавнаяОсновные Вопросы по Продукции › CMD

CMD

anton00706 · 21.11.2012

Здравствуйте)

 

Есть bat ник который запускает архивацию бэкапов SQL server'a, и он довольно таки сильно загружает мой не очень мощный сервер, вот...

и поэтому хотелось бы эту функцию отдать NAS'у ..

 

1. Может ли DSM запускать .bat файл (командная строка windows)? сама?

2. Возможно ли как то сделать расписание запуска этого файла?

3. Если нет, то будет ли такая вожможность в качестве расширения?

 

 

 

 

andres095 · 21.11.2012

1. нет

2. нет

3. нет

 

поддержки коммандной строки DOS не будет в DSM, т.к. это UNIX-подобная система

alexejnic · 21.11.2012

Все легко решается средствами НАСа

1.Пишется скрипт #!/bin/sh

2. Ставится в cron

3. Пункт как бы отпадает сам собой.

Сервер грузит не batник, а приложения прописанные в нем.

 

anton00706 · 21.11.2012
Все легко решается средствами НАСа

1.Пишется скрипт #!/bin/sh

2. Ставится в cron

3. Пункт как бы отпадает сам собой.

Сервер грузит не batник, а приложения прописанные в нем.

 

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

Со 2м пунктом про cron мне более менее понятно. а вот что есть "скрипт #!/bin/sh" ??? можно по подробнее..

alexejnic · 21.11.2012

Вот простейший пример архивации папки MyDocument на диске D: виндовой машины в локалке в папку MyBackup на NAS ресурсами NAS .

Предварительно подключаем через проводник DSM диск D: в папку smbwin, созданную зараннее на NAS. Создаём текстовый файл можно даже без расширения допустим с названием arc следующего содержания.

#!/bin/sh
date=`date "+%Y-%m-%d"`;
tar -cvf /volume1/MyBackup/$date-backup.tar /volume1/smbwin/MyDocument;

Кидаем его в папку tmp на NAS. Даём ему права на запуск, запускаем через putty команду

/volume1/tmp/arc

Через некоторое время увидим заархивированое содержимое папки MyDocument у себя на NAS в папке MyBackup в файле СегодняшняяДата-backup.tar

Поставив это задание в cron допустим каждый день мы будем иметь архив этой папки.

Это и есть пример скрипта.Ну а содержимое файла пишем под свои задачи.

anton00706 · 26.11.2012

alexejnic, Благодарю за помощь! пример почти понятен)) скоро придёт коробочка ds1812+ буду разбираться)

В данном скрипте архивация каким то стандартным архиватором реализована? Есть ли возможность использовать 7zip?

 

P.S. можно полезные ссылки кинуть по написанию подобных скриптов. Я так понимаю сие называется ШЕЛЛ?)

P.S.S. Сорри за нубские вопросы, я виндовый админ.. с линуксом не очень дружу)))

alexejnic · 26.11.2012
В данном скрипте архивация каким то стандартным архиватором реализована? Есть ли возможность использовать 7zip?

Да архивация идёт встроенным в коробку архиватором tar. 7z также есть, есть zip, так что выбрать есть из чего.

По написанию скриптов shell для linux в сети море информации, даже не знаю какие ссылки дать.

anton00706 · 27.11.2012
Да архивация идёт встроенным в коробку архиватором tar. 7z также есть, есть zip, так что выбрать есть из чего.

По написанию скриптов shell для linux в сети море информации, даже не знаю какие ссылки дать.

 

Я уже погуглил) Информации действительно много.. синтаксис довольно прост и понятен.

Думаю с поставленной задачей справлюсь)

alexejnic · 27.11.2012

Если батникы для винды писал, это тоже самое с мелкими отличиями.

anton00706 · 12.12.2012
Если батникы для винды писал, это тоже самое с мелкими отличиями.

 

 

я уже почти написал)) сначала установил на nas - ipkg, p7zip, cron. щас собственно пишу, проверяю как работает, что в лог пишет)

 

вот полезная ссылочка по установке ipkg:

http://forum.synology.com/wiki/

 

а вот существующий батник, может кому понадобится:

@Echo off
setlocal enabledelayedexpansion

Rem Определяем константы
Set WorkDir=\\server\BackUp\
Set BackupDir=\\nas\BackUp\
Set Mask=*.bak
Set LogFile=\\server\BackUp\_cmd\archiver_log.log
Set CompressLevel=5

Rem Записываем текущую дату в лог
Echo %Date%>> %LogFile%
Echo ---------->> %LogFile%

Rem Архивируем все .bak файлы
FOR %%z IN (%WorkDir%%Mask%) do (
  Echo           [!time:~,5!] %%z  начали>> %LogFile%
  Call %WorkDir%_cmd\7z a %%z.7z %%z -mx%CompressLevel% -sdel
  if errorlevel 1 Echo         * [!time:~,5!] %%z  ошибка архивации>> %LogFile%
  Echo           [!time:~,5!] %%z  закончили>> %LogFile%
  Move /Y %%z.7z %BackupDir%
  if errorlevel 1 Echo         * [!time:~,5!] %%z  ошибка перемещения>> %LogFile%
  Echo           ------------------------------------------------------>> %LogFile%
)
:Exit
endlocal

anton00706 · 13.12.2012

как совладать с выводом даты в лог файл.. он лепит подряд в одну строку:

пробовал так:

 

LogFile=/volume1/bases/logs/arhiver.log
Date=`date +%Y.%m.%d`
Time=`date +%A\ %R`

echo $Date >> $LogFile
echo $Time >> $LogFile

 

в результате он лепит всё

 

2012.12.13Thursday 17:47

 

!!!!!!!! мда.. и это всё при просмотре вЕндовым блокнотом наблюдается... NotePad++ видит как надо=) куда копать?)

anton00706 · 17.12.2012
echo -e "sample text \r" >> $LogFile