Войти

Показать полную графическую версию : копирование по SHH (psftp) резервных копий


enkil@vk
02-05-2012, 19:47
Добрый день!

Есть скрипт, который запускатеся на виндовом сервере с IBM Lotus Domino и создает резервную копию данных Лотуса, а затем по ssh закидывает на линуксовый сервак.

Есть проблема - если запустить скрипт руками и указать ему предметом архивации небольшой файл/папку (чтобы не ждать 5-6 часов), то все работает как надо, но при этом когда ставлю его в планировщик(запуск от имени System), то архив создается, затем я вижу в диспетчере задач, что процесс psftp.exe есть, но на линуксовом сервере архив не появляется. Сначала думал, что просто процесс не быстрый, но когда прошло уже более 12 часов=)) и ничего не изменилось, регил обратиться за помощью

ОС - W2k3 и Debian

скрипт

@echo off

rem Создаем хранимый snapshot тома и записываем информацию о нем
"C:\Program Files\Microsoft\VSSSDK72\Tools\VSSReports\vshadow.exe" -p -script=D:\Lotus_BackUP_scripts\vars.cmd D:
rem загружаем переменные окружения с именем снапшота
call D:\Lotus_BackUP_scripts\vars.cmd
rem Подключаем snapshot как диск X
"C:\Program Files\Microsoft\VSSSDK72\Tools\VSSReports\vshadow.exe" -el=%SHADOW_ID_1%,X:

rem Архивируем папку с данными
"C:\Program Files\7-zip\7z.exe" a -t7z -mx9 -mmt2 -ms=off -r D:\Lotus_BackUP_scripts\Lotus_BackUp\Archived\archive_%date%.7z X:\Lotus\*.nsf X:\Lotus\*.id

rem Удаляем snapshot
"C:\Program Files\Microsoft\VSSSDK72\Tools\VSSReports\vshadow.exe" -ds=%SHADOW_ID_1%

rem Создаем временный файл с командам для psftp и на линуксе переходим в каталог с бекапами
echo cd /home/dominoscript/lotusbackup-daily»"C:\Program Files\PuTTY\tmp.conf"
rem Переходим в локальный каталог с уже сделанным архивом
echo lcd D:\Lotus_BackUP_scripts\Lotus_BackUp\Archived»"C:\Program Files\PuTTY\tmp.conf"
rem Закидываем файл архива на линукс-сервер
echo put D:\Lotus_BackUP_scripts\Lotus_BackUp\Archived\archive_%date%.7z»"C:\Program Files\PuTTY\tmp.conf"
"C:\Program Files\PuTTY\psftp" -l user -pw password -b "C:\Program Files\PuTTY\tmp.conf" 172.20.1.13 && del "C:\Program Files\PuTTY\tmp.conf"

rem Переходим в католог с архивами
cd "D:\Lotus_BackUP_scripts\Lotus_BackUp\Archived\"
rem Удаляем уже скопированный на линукс-сервер архив и все временные файлы
del archive_%date%.7z /f /q
del "C:\Program Files\PuTTY\tmp.conf"
del D:\Lotus_BackUP_scripts\vars.cmd


Я, к сожалению, так и не смог разобраться, но как мне кажется, что то неладное в этом куске
rem Создаем временный файл с командам для psftp и на линуксе переходим в каталог с бекапами
echo cd /home/dominoscript/lotusbackup-daily»"C:\Program Files\PuTTY\tmp.conf"
rem Переходим в локальный каталог с уже сделанным архивом
echo lcd D:\Lotus_BackUP_scripts\Lotus_BackUp\Archived»"C:\Program Files\PuTTY\tmp.conf"
rem Закидываем файл архива на линукс-сервер
echo put D:\Lotus_BackUP_scripts\Lotus_BackUp\Archived\archive_%date%.7z»"C:\Program Files\PuTTY\tmp.conf"
"C:\Program Files\PuTTY\psftp" -l user -pw password -b "C:\Program Files\PuTTY\tmp.conf" 172.20.1.13 && del "C:\Program Files\PuTTY\tmp.conf"

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

Заранее спасибо за помощь

Busla
05-05-2012, 16:56
Кто ж это такое написал?!

Первое, что приходит в голову: %date% - на самом деле функция, значение которой меняется в процессе работы скрипта ;-)
Имя архива нужно генерировать один раз, а не формировать при каждой операции заново.

Не стоит внутри Program Files создавать временные файлы

Если назвали каталог "скрипты" (Lotus_BackUP_scripts), так и храните там скрипты, а не гигабайтные временные файлы.

На время снятия snapshot'а я бы останавливал Domino - простой в пару минут вполне допустим а если недопустим, то надо строить кластер из нескольких серверов




© OSzone.net 2001-2012